Skip to content

Commit 3190d31

Browse files
committed
feat: add 1.20 to versions.json, parallelize release workflow with matrix [skip sync]
1 parent 1360b42 commit 3190d31

4 files changed

Lines changed: 232 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: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
{
2+
"launcherDir": "/home/yoann/.var/app/org.freesmTeam.freesmlauncher/data/FreesmLauncher/",
3+
"location": "minecraft/mods/",
4+
"instances": {
5+
"1.20.4": "instances/1.20.4/",
6+
"1.20.5": "instances/1.20.5/",
7+
"1.21.0": "instances/1.21/",
8+
"1.21.1": "instances/1.21.1/",
9+
"1.21.2": "instances/1.21.2/",
10+
"1.21.3": "instances/1.21.3/",
11+
"1.21.4": "instances/1.21.4/",
12+
"1.21.5": "instances/1.21.5/",
13+
"1.21.6": "instances/1.21.6/",
14+
"1.21.7": "instances/1.21.7/",
15+
"1.21.8": "instances/1.21.8/",
16+
"1.21.9": "instances/1.21.9/",
17+
"1.21.10": "instances/1.21.10/",
18+
"1.21.11": "instances/1.21.11/"
19+
},
20+
"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+
},
35+
{
36+
"version": "1.21.0",
37+
"mcVersion": "1.21.0-1.21.3",
38+
"minecraft_version": "1.21",
39+
"yarn_mappings": "1.21+build.9",
40+
"fabric_api_version": "0.102.0+1.21"
41+
},
42+
{
43+
"version": "1.21.1",
44+
"mcVersion": "1.21.0-1.21.3",
45+
"minecraft_version": "1.21.1",
46+
"yarn_mappings": "1.21.1+build.3",
47+
"fabric_api_version": "0.116.12+1.21.1"
48+
},
49+
{
50+
"version": "1.21.2",
51+
"mcVersion": "1.21.0-1.21.3",
52+
"minecraft_version": "1.21.2",
53+
"yarn_mappings": "1.21.2+build.1",
54+
"fabric_api_version": "0.106.1+1.21.2"
55+
},
56+
{
57+
"version": "1.21.3",
58+
"mcVersion": "1.21.0-1.21.3",
59+
"minecraft_version": "1.21.3",
60+
"yarn_mappings": "1.21.3+build.2",
61+
"fabric_api_version": "0.114.1+1.21.3"
62+
},
63+
{
64+
"version": "1.21.4",
65+
"mcVersion": "1.21.4",
66+
"minecraft_version": "1.21.4",
67+
"yarn_mappings": "1.21.4+build.8",
68+
"fabric_api_version": "0.119.4+1.21.4"
69+
},
70+
{
71+
"version": "1.21.5",
72+
"mcVersion": "1.21.5-1.21.8",
73+
"minecraft_version": "1.21.5",
74+
"yarn_mappings": "1.21.5+build.1",
75+
"fabric_api_version": "0.128.2+1.21.5"
76+
},
77+
{
78+
"version": "1.21.6",
79+
"mcVersion": "1.21.5-1.21.8",
80+
"minecraft_version": "1.21.6",
81+
"yarn_mappings": "1.21.6+build.1",
82+
"fabric_api_version": "0.128.2+1.21.6"
83+
},
84+
{
85+
"version": "1.21.7",
86+
"mcVersion": "1.21.5-1.21.8",
87+
"minecraft_version": "1.21.7",
88+
"yarn_mappings": "1.21.7+build.8",
89+
"fabric_api_version": "0.129.0+1.21.7"
90+
},
91+
{
92+
"version": "1.21.8",
93+
"mcVersion": "1.21.5-1.21.8",
94+
"minecraft_version": "1.21.8",
95+
"yarn_mappings": "1.21.8+build.1",
96+
"fabric_api_version": "0.136.1+1.21.8"
97+
},
98+
{
99+
"version": "1.21.9",
100+
"mcVersion": "1.21.9-1.21.10",
101+
"minecraft_version": "1.21.9",
102+
"yarn_mappings": "1.21.9+build.1",
103+
"fabric_api_version": "0.134.1+1.21.9"
104+
},
105+
{
106+
"version": "1.21.10",
107+
"mcVersion": "1.21.9-1.21.10",
108+
"minecraft_version": "1.21.10",
109+
"yarn_mappings": "1.21.10+build.3",
110+
"fabric_api_version": "0.138.4+1.21.10"
111+
},
112+
{
113+
"version": "1.21.11",
114+
"mcVersion": "1.21.11",
115+
"minecraft_version": "1.21.11",
116+
"yarn_mappings": "1.21.11+build.6",
117+
"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"
139+
}
140+
]
141+
}

0 commit comments

Comments
 (0)