1- name : Publish on GitHub, CurseForge & Modrinth
1+ name : Publish (Modrinth, Curseforge, GH, Maven)
22
33on : [ workflow_dispatch ]
44
55env :
6- MINECRAFT_VERSION : 1.21.1
7- JAVA_VERSION : 21
8- VERSION : 1.9.2+1.21.1
9- RELEASE_NAME : Solstice 1.9.2 for Minecraft 1.21.1
106 MODRINTH_TOKEN : ${{ secrets.MODRINTH_TOKEN }}
117 CURSEFORGE_TOKEN : ${{ secrets.CURSEFORGE_TOKEN }}
128 MAVEN_USERNAME : ${{ secrets.MAVEN_USERNAME }}
@@ -19,47 +15,97 @@ jobs:
1915 build :
2016 runs-on : ubuntu-latest
2117 steps :
22- - name : Check Environment Variables
23- run : env
24-
25- - name : Checkout Repository
26- uses : actions/checkout@v3
27- with :
28- submodules : true
18+ - name : Checkout repository
19+ uses : actions/checkout@v6
2920
3021 - name : Setup Java
31- uses : actions/setup-java@v2
22+ uses : actions/setup-java@v5
3223 with :
3324 distribution : " temurin"
34- java-version : 21
25+ java-version : 25
3526
36- - name : Make Gradle Wrapper Executable
37- if : ${{ runner.os != 'Windows' }}
38- run : chmod +x ./gradlew
27+ - name : Setup Gradle
28+ uses : gradle/actions/setup-gradle@v6
29+ with :
30+ validate-wrappers : ' true'
3931
4032 - name : Build
4133 run : ./gradlew clean build
4234
43- - name : Publish to Maven
44- run : ./gradlew publish
35+ - name : Upload built jars
36+ uses : actions/upload-artifact@v7
37+ with :
38+ name : mod-jars
39+ path : |
40+ **/build/libs/*.jar
41+ !**/build/libs/*-sources.jar
42+ !**/build/libs/*-javadoc.jar
43+ !**/build/libs/*-plain.jar
44+ retention-days : 1
45+
46+ publish :
47+ needs : build
48+ runs-on : ubuntu-latest
49+ strategy :
50+ fail-fast : false
51+ matrix :
52+ target : [ maven, modrinth, curseforge ]
53+ steps :
54+ - uses : actions/checkout@v6
55+
56+ - name : Download built jars
57+ uses : actions/download-artifact@v8
58+ with :
59+ name : mod-jars
60+ path : .
61+
62+ - name : Setup Java
63+ uses : actions/setup-java@v5
64+ with :
65+ distribution : " temurin"
66+ java-version : 25
4567
46- - name : Publish
47- uses : Kir-Antipov/mc-publish@v3.3
68+ - name : Setup Gradle
69+ uses : gradle/actions/setup-gradle@v6
4870 with :
49- curseforge-id : 1149875
50- curseforge-token : ${{ secrets.CURSEFORGE_TOKEN }}
71+ cache-read-only : true
5172
52- modrinth-id : uIvrDZas
53- modrinth-token : ${{ secrets.MODRINTH_TOKEN }}
73+ - name : Publish to ${{ matrix.target }}
74+ run : ./gradlew ${{ matrix.target }} -PprebuiltJar
5475
55- github-tag : " v${{env.VERSION}}"
56- github-token : ${{ secrets.GITHUB_TOKEN }}
76+ github :
77+ needs : build
78+ runs-on : ubuntu-latest
79+ steps :
80+ - name : Checkout repository
81+ uses : actions/checkout@v6
82+
83+ - name : Download built jars
84+ uses : actions/download-artifact@v8
85+ with :
86+ name : mod-jars
87+ path : .
5788
58- name : " ${{env.RELEASE_NAME}}"
59- version : " ${{env.VERSION}}"
60- version-type : release
61- changelog-file : CHANGELOG.md
89+ - name : Get Version
90+ id : get-version
91+ run : |
92+ VERSION=$(awk -F'[ ="]+' '$1 == "mod.version" {print $2}' stonecutter.properties.toml)
93+ echo "version=$VERSION" >> $GITHUB_OUTPUT
94+ if [[ "$VERSION" =~ -(alpha|SNAPSHOT) ]]; then
95+ echo "prerelease=true" >> $GITHUB_OUTPUT
96+ else
97+ echo "prerelease=false" >> $GITHUB_OUTPUT
98+ fi
6299
63- loaders : fabric
64- game-versions : " ${{env.MINECRAFT_VERSION}}"
65- java : " ${{env.JAVA_VERSION}}"
100+ - name : Create GitHub Release
101+ uses : softprops/action-gh-release@v2
102+ with :
103+ tag_name : Solstice ${{ steps.get-version.outputs.version }}
104+ prerelease : ${{ steps.get-version.outputs.prerelease == 'true' }}
105+ draft : ${{ steps.get-version.outputs.prerelease == 'true' }}
106+ generate_release_notes : true
107+ files : |
108+ **/build/libs/*.jar
109+ !**/build/libs/*-sources.jar
110+ !**/build/libs/*-javadoc.jar
111+ !**/build/libs/*-plain.jar
0 commit comments