@@ -13,13 +13,31 @@ permissions:
1313 contents : write
1414
1515jobs :
16- release :
16+ setup :
1717 runs-on : ubuntu-24.04
18+ outputs :
19+ matrix : ${{ steps.gen_matrix.outputs.matrix }}
1820 steps :
19- - name : Checkout repository
20- uses : actions/checkout@v4
21- with :
22- fetch-depth : 0
21+ - uses : actions/checkout@v4
22+ - id : gen_matrix
23+ run : |
24+ MATRIX=$(jq -c '{include: [.versions[] | {
25+ version: .version,
26+ mc_src: (.mcVersion // .version),
27+ mc_ver: .minecraft_version,
28+ fabric_api: .fabric_api_version,
29+ yarn: (.yarn_mappings // ""),
30+ loader: (.loader_version // "")
31+ }]}' versions.json)
32+ echo "matrix=$MATRIX" >> $GITHUB_OUTPUT
33+
34+ build :
35+ needs : setup
36+ runs-on : ubuntu-24.04
37+ strategy :
38+ matrix : ${{ fromJSON(needs.setup.outputs.matrix) }}
39+ steps :
40+ - uses : actions/checkout@v4
2341
2442 - name : Setup Java
2543 uses : actions/setup-java@v4
@@ -31,41 +49,60 @@ jobs:
3149 - name : Make gradle wrapper executable
3250 run : chmod +x ./gradlew
3351
34- - name : Read mod version
52+ - name : Skip if no source directory
53+ id : check_src
54+ run : |
55+ if [ -d "src/mc-${{ matrix.mc_src }}" ]; then
56+ echo "exists=true" >> $GITHUB_OUTPUT
57+ else
58+ echo "exists=false" >> $GITHUB_OUTPUT
59+ fi
60+
61+ - name : Build ${{ matrix.version }}
62+ if : steps.check_src.outputs.exists == 'true'
63+ run : |
64+ PROPS=(-DmcVersion="${{ matrix.mc_src }}" -PmcVersion="${{ matrix.mc_src }}" -Pminecraft_version="${{ matrix.mc_ver }}" -Pfabric_api_version="${{ matrix.fabric_api }}")
65+ [ -n "${{ matrix.yarn }}" ] && PROPS+=(-Pyarn_mappings="${{ matrix.yarn }}")
66+ [ -n "${{ matrix.loader }}" ] && PROPS+=(-Ploader_version="${{ matrix.loader }}")
67+ ./gradlew clean build "${PROPS[@]}" --no-daemon -q
68+
69+ - name : Get mod version
70+ if : steps.check_src.outputs.exists == 'true'
3571 id : mod_info
3672 run : echo "mod_version=$(grep '^mod_version' gradle.properties | cut -d= -f2)" >> $GITHUB_OUTPUT
3773
38- - name : Build all versions
74+ - name : Rename and upload JAR
75+ if : steps.check_src.outputs.exists == 'true'
76+ run : |
77+ MODVER="${{ steps.mod_info.outputs.mod_version }}"
78+ mv "build/libs/stackabletools-${MODVER}.jar" "build/libs/stackabletools-${MODVER}-mc${{ matrix.version }}.jar"
79+
80+ - name : Upload artifact
81+ if : steps.check_src.outputs.exists == 'true'
82+ uses : actions/upload-artifact@v4
83+ with :
84+ name : jar-mc-${{ matrix.version }}
85+ path : build/libs/stackabletools-*.jar
86+
87+ release :
88+ needs : build
89+ runs-on : ubuntu-24.04
90+ steps :
91+ - uses : actions/checkout@v4
92+ with :
93+ fetch-depth : 0
94+
95+ - name : Download all JARs
96+ uses : actions/download-artifact@v4
97+ with :
98+ path : dist-jars
99+
100+ - name : Collect JARs
39101 run : |
40102 mkdir -p dist
41- VERSION="${{ steps.mod_info.outputs.mod_version }}"
42-
43- while read -r version_data; do
44- VER=$(echo "$version_data" | jq -r '.version')
45- MC_SRC=$(echo "$version_data" | jq -r '.mcVersion // .version')
46- MC_VER=$(echo "$version_data" | jq -r '.minecraft_version')
47- FABRIC_API=$(echo "$version_data" | jq -r '.fabric_api_version')
48- YARN=$(echo "$version_data" | jq -r '.yarn_mappings // empty')
49- LOADER=$(echo "$version_data" | jq -r '.loader_version // empty')
50-
51- echo "--- Building $VER ($MC_VER) ---"
52-
53- PROP_ARGS=(-PmcVersion="$MC_SRC" -Pminecraft_version="$MC_VER" -Pfabric_api_version="$FABRIC_API")
54- [ -n "$YARN" ] && PROP_ARGS+=(-Pyarn_mappings="$YARN")
55- [ -n "$LOADER" ] && PROP_ARGS+=(-Ploader_version="$LOADER")
56-
57- ./gradlew clean build "${PROP_ARGS[@]}" --no-daemon -q 2>&1 || exit 1
58-
59- JAR="build/libs/stackabletools-${VERSION}.jar"
60- if [ -f "$JAR" ]; then
61- cp "$JAR" "dist/stackabletools-${VERSION}-mc${VER}.jar"
62- echo " -> dist/stackabletools-${VERSION}-mc${VER}.jar"
63- fi
64- echo ""
65- done < <(jq -c '.versions[]' versions.json)
66-
67- - name : List built artifacts
68- run : ls -lh dist/
103+ find dist-jars -name "*.jar" -exec cp {} dist/ \;
104+ echo "Collected JARs:"
105+ ls -lh dist/
69106
70107 - name : Bump version and push tag
71108 id : version_tag
0 commit comments