Auto Weekly Build #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto Weekly Build | |
| on: | |
| schedule: | |
| - cron: "0 1 * * 1" | |
| workflow_dispatch: | |
| jobs: | |
| build-and-release: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| env: | |
| INCLUDE_PATHS: | | |
| assets/ | |
| MyCTMLib.cfg | |
| pack.mcmeta | |
| pack.png | |
| README.md | |
| TARGET_BRANCHES: "main no_mixed_color_gc_plate resonatic_circuit gtnh_color" | |
| ZIP_NAME_main: "Modernity-GTNH-{DATE}.zip" | |
| ZIP_NAME_no_mixed_color_gc_plate: "Modernity-GTNHAddon-NoMixinColorGCHeavyMaterial.zip" | |
| ZIP_NAME_resonatic_circuit: "Modernity-GTNHAddon-GTNLResonaticCircuit.zip" | |
| ZIP_NAME_gtnh_color: "Modernity-GTNHAddon-GTNHColorComponent.zip" | |
| EXTERNAL_REPOS: | | |
| OutlinedOres-Modern=https://github.com/Ranzuu/OutlinedOres-Modern | |
| Just-Productive-Bees=https://github.com/DarkScorpyon/Just-Productive-Bees- | |
| Just-Forestry-Bees=https://github.com/DarkScorpyon/Just-Forestry-Bees- | |
| Medium-Large-Turbine=https://github.com/DarkScorpyon/Medium-Large-Turbine | |
| Modernity-GTNH-UI=https://github.com/ABKQPO/Modernity-GTNH-UI | |
| Modernity-GTNH-Dark-UI=https://github.com/ABKQPO/Modernity-GTNH-Dark-UI | |
| EXTERNAL_ZIP_NAME_OutlinedOres_Modern: "Modernity-GTNHAddon-OutlinedOres.zip" | |
| EXTERNAL_ZIP_NAME_Just_Productive_Bees: "Modernity-GTNHAddon-Just-Productive-Bees.zip" | |
| EXTERNAL_ZIP_NAME_Just_Forestry_Bees: "Modernity-GTNHAddon-Just-Forestry-Bees.zip" | |
| EXTERNAL_ZIP_NAME_Medium_Large_Turbine: "Modernity-GTNHAddon-Medium-Large-Turbine.zip" | |
| EXTERNAL_ZIP_NAME_Modernity_GTNH_UI: "Modernity-GTNH-UI.zip" | |
| EXTERNAL_ZIP_NAME_Modernity_GTNH_Dark_UI: "Modernity-GTNH-Dark-UI.zip" | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Get build date | |
| run: | | |
| echo "BUILD_DATE=$(date -u +'%Y-%m-%d')" >> $GITHUB_ENV | |
| - name: Get last two release tags from ABKQPO/MyCTMLib | |
| id: get_tags | |
| run: | | |
| response=$(curl -s "https://api.github.com/repos/ABKQPO/MyCTMLib/releases?per_page=2") | |
| tags=($(echo "$response" | jq -r '.[].tag_name')) | |
| echo "TAG1=${tags[0]}" >> $GITHUB_ENV | |
| echo "TAG2=${tags[1]}" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Build all branches | |
| run: | | |
| for BRANCH in $TARGET_BRANCHES; do | |
| git checkout $BRANCH | |
| VAR_NAME="ZIP_NAME_${BRANCH//-/_}" | |
| ZIP_NAME="${!VAR_NAME}" | |
| if [ "$BRANCH" == "main" ]; then | |
| ZIP_NAME="${ZIP_NAME//\{DATE\}/$BUILD_DATE}" | |
| fi | |
| rm -rf zip-root | |
| mkdir zip-root | |
| for path in $INCLUDE_PATHS; do | |
| if [ -e "$path" ]; then | |
| cp -r --parents "$path" zip-root/ | |
| fi | |
| done | |
| cd zip-root | |
| zip -r "../$ZIP_NAME" ./ | |
| cd .. | |
| done | |
| shell: bash | |
| env: | |
| INCLUDE_PATHS: ${{ env.INCLUDE_PATHS }} | |
| BUILD_DATE: ${{ env.BUILD_DATE }} | |
| ZIP_NAME_main: ${{ env.ZIP_NAME_main }} | |
| ZIP_NAME_no_mixed_color_gc_plate: ${{ env.ZIP_NAME_no_mixed_color_gc_plate }} | |
| ZIP_NAME_resonatic_circuit: ${{ env.ZIP_NAME_resonatic_circuit }} | |
| ZIP_NAME_gtnh_color: ${{ env.ZIP_NAME_gtnh_color }} | |
| - name: Download and package external repositories | |
| run: | | |
| mkdir external-zips | |
| while IFS== read -r NAME URL; do | |
| [ -z "$NAME" ] && continue | |
| SAFE_NAME="${NAME//-/_}" | |
| ZIP_VAR="EXTERNAL_ZIP_NAME_${SAFE_NAME}" | |
| ZIP_NAME="${!ZIP_VAR}" | |
| echo "Cloning $URL as $NAME ..." | |
| git clone --depth=1 "$URL" "$NAME" | |
| ZIP_DIR="external-zips/${NAME}-zip-root" | |
| mkdir -p "$ZIP_DIR" | |
| for path in $INCLUDE_PATHS; do | |
| [ -z "$path" ] && continue | |
| if [ -e "$NAME/$path" ]; then | |
| mkdir -p "$(dirname "$ZIP_DIR/$path")" | |
| cp -r "$NAME/$path" "$ZIP_DIR/$path" | |
| fi | |
| done | |
| cd "$ZIP_DIR" | |
| zip -r "../../$ZIP_NAME" ./ | |
| cd ../.. | |
| done <<< "$EXTERNAL_REPOS" | |
| shell: bash | |
| env: | |
| INCLUDE_PATHS: ${{ env.INCLUDE_PATHS }} | |
| EXTERNAL_ZIP_NAME_OutlinedOres_Modern: ${{ env.EXTERNAL_ZIP_NAME_OutlinedOres_Modern }} | |
| EXTERNAL_ZIP_NAME_Just_Productive_Bees: ${{ env.EXTERNAL_ZIP_NAME_Just_Productive_Bees }} | |
| EXTERNAL_ZIP_NAME_Just_Forestry_Bees: ${{ env.EXTERNAL_ZIP_NAME_Just_Forestry_Bees }} | |
| EXTERNAL_ZIP_NAME_Medium_Large_Turbine: ${{ env.EXTERNAL_ZIP_NAME_Medium_Large_Turbine }} | |
| EXTERNAL_ZIP_NAME_Modernity_GTNH_UI: ${{ env.EXTERNAL_ZIP_NAME_Modernity_GTNH_UI }} | |
| EXTERNAL_ZIP_NAME_Modernity_GTNH_Dark_UI: ${{ env.EXTERNAL_ZIP_NAME_Modernity_GTNH_Dark_UI }} | |
| - name: Download latest two MyCTMLib jars | |
| run: | | |
| mkdir jars | |
| for TAG in "$TAG1" "$TAG2"; do | |
| url="https://github.com/ABKQPO/MyCTMLib/releases/download/${TAG}/MyCTMLib-${TAG}.jar" | |
| curl -L "$url" -o jars/MyCTMLib-${TAG}.jar | |
| done | |
| shell: bash | |
| env: | |
| TAG1: ${{ env.TAG1 }} | |
| TAG2: ${{ env.TAG2 }} | |
| - name: Build release body from BUILD_README.md | |
| run: | | |
| git checkout main | |
| printf "RELEASE_BODY<<EOF\n%s\nEOF\n" "$(cat BUILD_README.md)" >> $GITHUB_ENV | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: Weekly Build ${{ env.BUILD_DATE }} | |
| tag_name: weekly-${{ env.BUILD_DATE }} | |
| prerelease: false | |
| make_latest: true | |
| body: ${{ env.RELEASE_BODY }} | |
| files: | | |
| *.zip | |
| jars/*.jar |