Skip to content

Auto Weekly Build

Auto Weekly Build #8

Workflow file for this run

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