1313 MAVEN_UPLOAD_PASSWORD : ${{ secrets.MAVEN_UPLOAD_PASSWORD }}
1414
1515jobs :
16- publish :
16+ build :
1717 runs-on : ubuntu-latest
1818 steps :
19+ # Setup
1920 - uses : actions/checkout@v4
2021 - name : Set up JDK ${{ env.JAVA_VERSION }}
2122 uses : actions/setup-java@v4
3334 id : current-time
3435 with :
3536 format : YYYYMMDDHHmmss
37+
38+ # Build
3639 - name : Build with Gradle
3740 env :
3841 BUILD_TIME : ${{ steps.current-time.outputs.formattedTime }}
@@ -42,42 +45,121 @@ jobs:
4245 env :
4346 BUILD_TIME : ${{ steps.current-time.outputs.formattedTime }}
4447 run : ./gradlew publish
48+
49+ # Upload
50+ - name : Upload build artifacts (Common)
51+ continue-on-error : true
52+ uses : actions/upload-artifact@v4
53+ with :
54+ name : ${{ github.event.repository.name }}-Common-${{ env.TAG }}
55+ path : |
56+ Common/build/libs/*.jar
57+ !Common/build/libs/*-renderdoc-loader.jar
58+ - name : Upload build artifacts (Fabric)
59+ continue-on-error : true
60+ uses : actions/upload-artifact@v4
61+ with :
62+ name : ${{ github.event.repository.name }}-Fabric-${{ env.TAG }}
63+ path : |
64+ Fabric/build/libs/*.jar
65+ - name : Upload build artifacts (NeoForge)
66+ continue-on-error : true
67+ uses : actions/upload-artifact@v4
68+ with :
69+ name : ${{ github.event.repository.name }}-NeoForge-${{ env.TAG }}
70+ path : |
71+ NeoForge/build/libs/*.jar
72+ - name : Generate build attestation
73+ uses : actions/attest-build-provenance@v2
74+ with :
75+ subject-path : |
76+ **/build/libs/*.jar
77+ !**/build/libs/*-sources.jar
78+ !**/build/libs/*-javadoc.jar
79+ !**/build/libs/*-renderdoc-loader.jar
80+
81+ publish_github :
82+ name : Publish (GitHub Releases)
83+ needs : build
84+ runs-on : ubuntu-latest
85+ steps :
86+ - name : Download build artifacts (Common)
87+ uses : actions/download-artifact@v4
88+ with :
89+ name : ${{ github.event.repository.name }}-Common-${{ env.TAG }}
90+ path : Common/build/libs
91+ - name : Download build artifacts (Fabric)
92+ uses : actions/download-artifact@v4
93+ with :
94+ name : ${{ github.event.repository.name }}-Fabric-${{ env.TAG }}
95+ path : Fabric/build/libs
96+ - name : Download build artifacts (NeoForge)
97+ uses : actions/download-artifact@v4
98+ with :
99+ name : ${{ github.event.repository.name }}-NeoForge-${{ env.TAG }}
100+ path : NeoForge/build/libs
45101 - name : Publish (GitHub Releases)
46102 id : publish_github
47103 uses : Kira-NT/mc-publish@995edadc13559a8b28d0b7e6571229f067ec7659
48104 with :
49105 github-token : ${{ github.token }}
50106 version-type : beta
51107 files : |
52- **/build/libs/!(*-@(dev|sources|javadoc|slim)).jar
53- **/build/libs/*-@(sources|javadoc).jar
54- - name : Publish (Fabric)
55- id : publish_fabric
108+ **/build/libs/*.jar
109+
110+ publish_platforms :
111+ name : Publish (${{ matrix.platform }}, ${{ matrix.loader }})
112+ strategy :
113+ fail-fast : false
114+ matrix :
115+ platform : [ 'Curseforge', 'Modrinth' ]
116+ loader : [ 'Fabric', 'NeoForge' ]
117+ needs : build
118+ runs-on : ubuntu-latest
119+ outputs :
120+ modrinth_id : ${{ steps.store_ids.outputs.Fabric_modrinth_id }}
121+ curseforge_id : ${{ steps.store_ids.outputs.Fabric_curseforge_id }}
122+ steps :
123+ - name : Download build artifacts (${{ matrix.loader }})
124+ uses : actions/download-artifact@v4
125+ with :
126+ name : ${{ github.event.repository.name }}-${{ matrix.loader }}-${{ env.TAG }}
127+ path : ${{ matrix.loader }}/build/libs
128+ - name : Publish (Modrinth)
129+ id : publish_modrinth
56130 uses : Kira-NT/mc-publish@995edadc13559a8b28d0b7e6571229f067ec7659
57131 with :
58132 modrinth-token : ${{ secrets.MODRINTH_TOKEN }}
59- curseforge-token : ${{ secrets.CURSEFORGE_TOKEN }}
60- version : ${{ env.TAG }}+Fabric
133+ version : ${{ env.TAG }}+${{ matrix.loader }}
61134 version-type : beta
62135 files : |
63- Fabric /build/libs/!(*-@(dev| sources|javadoc|slim )).jar
64- Fabric /build/libs/*-@(sources|javadoc).jar
65- - name : Publish (NeoForge )
66- id : publish_neoforge
136+ ${{ matrix.loader }} /build/libs/!(*-@(sources|javadoc)).jar
137+ ${{ matrix.loader }} /build/libs/*-@(sources|javadoc).jar
138+ - name : Publish (Curseforge )
139+ id : publish_curseforge
67140 uses : Kira-NT/mc-publish@995edadc13559a8b28d0b7e6571229f067ec7659
68141 with :
69- modrinth-token : ${{ secrets.MODRINTH_TOKEN }}
70142 curseforge-token : ${{ secrets.CURSEFORGE_TOKEN }}
71- version : ${{ env.TAG }}+NeoForge
143+ version : ${{ env.TAG }}+${{ matrix.loader }}
72144 version-type : beta
73145 files : |
74- NeoForge/build/libs/!(*-@(dev|sources|javadoc|slim)).jar
75- NeoForge/build/libs/*-@(sources|javadoc).jar
146+ ${{ matrix.loader }}/build/libs/!(*-@(sources|javadoc)).jar
147+ - name : Store Platform IDs
148+ id : store_ids
149+ run : |
150+ echo "${{ matrix.loader }}_modrinth_id=${{ steps.publish_modrinth.outputs.modrinth-id }}" >> $GITHUB_OUTPUT
151+ echo "${{ matrix.loader }}_curseforge_id=${{ steps.publish_curseforge.outputs.curseforge-id }}" >> $GITHUB_OUTPUT
152+
153+ notify :
154+ name : Notify
155+ needs : [ publish_platforms ]
156+ runs-on : ubuntu-latest
157+ steps :
76158 - name : Notify Discord
77159 uses : Up-Mods/action-discord-release@main
78160 with :
79161 version : ${{ env.TAG }}
80162 webhook-url : ${{ secrets.ANNOUNCEMENT_WEBHOOK_URL }}
81- curseforge-project-id : ${{ steps.publish_fabric .outputs.curseforge-id }}
82- modrinth-project-id : ${{ steps.publish_fabric .outputs.modrinth-id }}
163+ curseforge-project-id : ${{ needs.publish_platforms .outputs.curseforge_id }}
164+ modrinth-project-id : ${{ needs.publish_platforms .outputs.modrinth_id }}
83165 ping-notification-role : false
0 commit comments