Skip to content

Commit 162d3c7

Browse files
committed
feat: add 1.20 to versions.json, parallelize release workflow with matrix [skip sync]
1 parent 657ec89 commit 162d3c7

4 files changed

Lines changed: 128 additions & 35 deletions

File tree

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ jobs:
4848
YARN=$(echo "$version_data" | jq -r '.yarn_mappings // empty')
4949
LOADER=$(echo "$version_data" | jq -r '.loader_version // empty')
5050
51+
if [ ! -d "src/mc-${MC_SRC}" ]; then
52+
echo "Skipping $VER (no src/mc-${MC_SRC})"
53+
continue
54+
fi
55+
56+
echo "Building $VER..."
5157
PROP_ARGS=(-PmcVersion="$MC_SRC" -Pminecraft_version="$MC_VER" -Pfabric_api_version="$FABRIC_API")
5258
[ -n "$YARN" ] && PROP_ARGS+=(-Pyarn_mappings="$YARN")
5359
[ -n "$LOADER" ] && PROP_ARGS+=(-Ploader_version="$LOADER")

.github/workflows/publish.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,31 @@ jobs:
4242
- name: Make gradle wrapper executable
4343
run: chmod +x ./gradlew
4444

45+
- name: Skip if no source directory
46+
id: check_src
47+
run: |
48+
if [ -d "src/mc-${{ matrix.mc_src }}" ]; then
49+
echo "exists=true" >> $GITHUB_OUTPUT
50+
else
51+
echo "Skipping ${{ matrix.version }} (no src/mc-${{ matrix.mc_src }})"
52+
echo "exists=false" >> $GITHUB_OUTPUT
53+
fi
54+
4555
- name: Build for ${{ matrix.version }}
56+
if: steps.check_src.outputs.exists == 'true'
4657
run: |
4758
PROPS=(-DmcVersion="${{ matrix.mc_src }}" -PmcVersion="${{ matrix.mc_src }}" -Pminecraft_version="${{ matrix.mc_ver }}" -Pfabric_api_version="${{ matrix.fabric_api }}")
4859
[ -n "${{ matrix.yarn }}" ] && PROPS+=(-Pyarn_mappings="${{ matrix.yarn }}")
4960
[ -n "${{ matrix.loader }}" ] && PROPS+=(-Ploader_version="${{ matrix.loader }}")
5061
./gradlew build "${PROPS[@]}" --no-daemon -q
5162
5263
- name: Get mod version
64+
if: steps.check_src.outputs.exists == 'true'
5365
id: mod_info
5466
run: echo "mod_version=$(grep '^mod_version' gradle.properties | cut -d= -f2)" >> $GITHUB_OUTPUT
5567

5668
- name: Publish to CurseForge + Modrinth
69+
if: steps.check_src.outputs.exists == 'true'
5770
uses: tristankechlo/publish-mc-mod@v2.0.0
5871
with:
5972
mc-version: ${{ matrix.mc_ver }}

.github/workflows/release.yml

Lines changed: 72 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,31 @@ permissions:
1313
contents: write
1414

1515
jobs:
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

versions.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"launcherDir": "/home/yoann/.var/app/org.freesmTeam.freesmlauncher/data/FreesmLauncher/",
33
"location": "minecraft/mods/",
44
"instances": {
5+
"1.20.4": "instances/1.20.4/",
6+
"1.20.5": "instances/1.20.5/",
57
"1.21.0": "instances/1.21/",
68
"1.21.1": "instances/1.21.1/",
79
"1.21.2": "instances/1.21.2/",
@@ -16,6 +18,20 @@
1618
"1.21.11": "instances/1.21.11/"
1719
},
1820
"versions": [
21+
{
22+
"version": "1.20.4",
23+
"mcVersion": "1.20.4",
24+
"minecraft_version": "1.20.4",
25+
"yarn_mappings": "1.20.4+build.3",
26+
"fabric_api_version": "0.97.3+1.20.4"
27+
},
28+
{
29+
"version": "1.20.5",
30+
"mcVersion": "1.20.5",
31+
"minecraft_version": "1.20.5",
32+
"yarn_mappings": "1.20.5+build.1",
33+
"fabric_api_version": "0.97.3+1.20.5"
34+
},
1935
{
2036
"version": "1.21.0",
2137
"mcVersion": "1.21.0-1.21.3",
@@ -99,6 +115,27 @@
99115
"minecraft_version": "1.21.11",
100116
"yarn_mappings": "1.21.11+build.6",
101117
"fabric_api_version": "0.141.4+1.21.11"
118+
},
119+
{
120+
"version": "26.1",
121+
"mcVersion": "26.1",
122+
"minecraft_version": "26.1",
123+
"fabric_api_version": "0.145.1+26.1",
124+
"loader_version": "0.19.3"
125+
},
126+
{
127+
"version": "26.1.1",
128+
"mcVersion": "26.1",
129+
"minecraft_version": "26.1.1",
130+
"fabric_api_version": "0.145.4+26.1.1",
131+
"loader_version": "0.19.3"
132+
},
133+
{
134+
"version": "26.1.2",
135+
"mcVersion": "26.1",
136+
"minecraft_version": "26.1.2",
137+
"fabric_api_version": "0.152.1+26.1.2",
138+
"loader_version": "0.19.3"
102139
}
103140
]
104141
}

0 commit comments

Comments
 (0)