-
Notifications
You must be signed in to change notification settings - Fork 1
82 lines (73 loc) · 3.11 KB
/
Copy pathpublish.yml
File metadata and controls
82 lines (73 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
name: Publish to CurseForge & Modrinth
on:
release:
types: [published]
workflow_dispatch:
jobs:
setup:
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.gen_matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: gen_matrix
run: |
ENTRIES=$(jq -c '[.versions[] | {version, mc_src: (.mcVersion // .version), mc_ver: .minecraft_version, fabric_api: .fabric_api_version, yarn: (.yarn_mappings // ""), loader: (.loader_version // "")}]' versions.json)
FILTERED="[]"
while read -r entry; do
MC_SRC=$(echo "$entry" | jq -r '.mc_src')
if [ -d "src/mc-$MC_SRC" ]; then
FILTERED=$(echo "$FILTERED" | jq -c ". + [$entry]")
fi
done < <(echo "$ENTRIES" | jq -c '.[]')
echo "matrix={\"include\": $FILTERED}" >> $GITHUB_OUTPUT
publish:
needs: setup
runs-on: ubuntu-24.04
strategy:
matrix: ${{ fromJSON(needs.setup.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: "25"
distribution: "zulu"
cache: "gradle"
- name: Make gradle wrapper executable
run: chmod +x ./gradlew
- name: Skip if no source directory
id: check_src
run: |
if [ -d "src/mc-${{ matrix.mc_src }}" ]; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "Skipping ${{ matrix.version }} (no src/mc-${{ matrix.mc_src }})"
echo "exists=false" >> $GITHUB_OUTPUT
fi
- name: Build for ${{ matrix.version }}
if: steps.check_src.outputs.exists == 'true'
run: |
PROPS=(-DmcVersion="${{ matrix.mc_src }}" -PmcVersion="${{ matrix.mc_src }}" -Pminecraft_version="${{ matrix.mc_ver }}" -Pfabric_api_version="${{ matrix.fabric_api }}")
[ -n "${{ matrix.yarn }}" ] && PROPS+=(-Pyarn_mappings="${{ matrix.yarn }}")
[ -n "${{ matrix.loader }}" ] && PROPS+=(-Ploader_version="${{ matrix.loader }}")
./gradlew build "${PROPS[@]}" --no-daemon -q
- name: Get mod version
if: steps.check_src.outputs.exists == 'true'
id: mod_info
run: echo "mod_version=$(grep '^mod_version' gradle.properties | cut -d= -f2)" >> $GITHUB_OUTPUT
- name: Publish to CurseForge + Modrinth
if: steps.check_src.outputs.exists == 'true'
uses: tristankechlo/publish-mc-mod@v2.0.0
with:
mc-version: ${{ matrix.mc_ver }}
mod-version: ${{ steps.mod_info.outputs.mod_version }}
curseforge-id: ${{ secrets.CURSEFORGE_PROJECT_ID }}
modrinth-id: ${{ secrets.MODRINTH_PROJECT_ID }}
version-range: ${{ matrix.mc_ver }}
version-type: "release"
loaders: "fabric"
fabric-glob: "build/libs/stackabletools-${{ steps.mod_info.outputs.mod_version }}.jar"
changelog: "Release v${{ steps.mod_info.outputs.mod_version }} — ${{ matrix.version }}"
curseforge-token: ${{ secrets.CURSEFORGE_API_KEY }}
modrinth-token: ${{ secrets.MODRINTH_API_TOKEN }}