Skip to content

Commit 2d1808a

Browse files
committed
update publishing workflow
1 parent 0c6796d commit 2d1808a

1 file changed

Lines changed: 99 additions & 17 deletions

File tree

.github/workflows/release.yml

Lines changed: 99 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ env:
1313
MAVEN_UPLOAD_PASSWORD: ${{ secrets.MAVEN_UPLOAD_PASSWORD }}
1414

1515
jobs:
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
@@ -33,6 +34,8 @@ jobs:
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

Comments
 (0)