1717 required : true
1818 type : boolean
1919 default : true
20+ maven :
21+ description : ' Maven'
22+ required : true
23+ type : boolean
24+ default : true
25+ modrinth :
26+ description : ' Modrinth'
27+ required : true
28+ type : boolean
29+ default : true
30+ curseforge :
31+ description : ' CurseForge'
32+ required : true
33+ type : boolean
34+ default : true
2035
2136jobs :
2237 create-release :
2338 runs-on : ubuntu-latest
39+ environment : Releases
2440 outputs :
2541 ref : v${{ steps.bump-version.outputs.version }}
2642 version : ${{ steps.bump-version.outputs.version }}
2743 build-matrix : ${{ steps.set-build-matrix.outputs.result }}
2844 publish-matrix : ${{ steps.set-publish-matrix.outputs.result }}
2945 steps :
46+ - uses : actions/create-github-app-token@v2
47+ id : app-token
48+ with :
49+ app-id : ${{ vars.AUTOMATIONS_APP_ID }}
50+ private-key : ${{ secrets.AUTOMATIONS_PRIVATE_KEY }}
3051 - name : Checkout repository
3152 uses : actions/checkout@v4
53+ with :
54+ token : ${{ steps.app-token.outputs.token }}
55+ - name : Get GitHub App User ID
56+ id : get-user-id
57+ run : echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
58+ env :
59+ GH_TOKEN : ${{ steps.app-token.outputs.token }}
60+ - run : |
61+ git config --global user.name '${{ steps.app-token.outputs.app-slug }}[bot]'
62+ git config --global user.email '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com'
3263 - name : Extracting version from properties
3364 shell : bash
34- run : echo "version=$(cat gradle.properties | grep -w "\bversion" | cut -d= -f2)" >> $GITHUB_OUTPUT
65+ run : echo "version=$(cat gradle.properties | grep -w "\bversion\s*= " | cut -d= -f2)" >> $GITHUB_OUTPUT
3566 id : extract-version
3667 - name : Bumping version
3768 uses : TwelveIterations/bump-version@v1
4273 - name : Updating version properties
4374 run : |
4475 sed -i "s/^\s*version\s*=.*/version = ${{ steps.bump-version.outputs.version }}/g" gradle.properties
45- git config user.name "GitHub Actions"
46- git config user.email "<>"
4776 git commit -am "Set version to ${{ steps.bump-version.outputs.version }}"
4877 git push origin ${BRANCH_NAME}
4978 git tag -a "v${{ steps.bump-version.outputs.version }}" -m "Release ${{ steps.bump-version.outputs.version }}"
@@ -78,9 +107,16 @@ jobs:
78107 const includeFabric = includes.includes('fabric') && ${{inputs.fabric}};
79108 const includeForge = includes.includes('forge') && ${{inputs.forge}};
80109 const includeNeoForge = includes.includes('neoforge') && ${{inputs.neoforge}};
110+ const gradleProperties = fs.readFileSync('gradle.properties', 'utf8');
111+ const curseForgeProjectId = gradleProperties.match(/^(?!#)curseforge_project_id\s*=\s*(.+)/m);
112+ const modrinthProjectId = gradleProperties.match(/^(?!#)modrinth_project_id\s*=\s*(.+)/m);
113+ const mavenReleases = gradleProperties.match(/^(?!#)maven_releases\s*=\s*(.+)/m);
114+ const publishCurseForge = curseForgeProjectId && ${{inputs.curseforge}};
115+ const publishModrinth = modrinthProjectId && ${{inputs.modrinth}};
116+ const publishMaven = mavenReleases && ${{inputs.maven}};
81117 return {
82118 loader: ['common', includeFabric ? 'fabric' : false, includeForge ? 'forge' : false, includeNeoForge ? 'neoforge' : false].filter(Boolean),
83- site: ['curseforge', 'modrinth', 'publish'] ,
119+ site: [publishCurseForge ? 'curseforge' : false, publishModrinth ? 'modrinth' : false, publishMaven ? 'publish' : false].filter(Boolean) ,
84120 exclude: [
85121 {loader: 'common', site: 'curseforge'},
86122 {loader: 'common', site: 'modrinth'}
@@ -148,6 +184,7 @@ jobs:
148184 - build-common
149185 publish-release :
150186 runs-on : ubuntu-latest
187+ environment : Releases
151188 strategy :
152189 matrix : ${{fromJson(needs.create-release.outputs.publish-matrix)}}
153190 fail-fast : false
@@ -171,15 +208,11 @@ jobs:
171208 cache : ' gradle'
172209 - name : Make gradle wrapper executable
173210 run : chmod +x ./gradlew
174- - name : Check current artifact hash TODO
175- run : sha1sum ${{ matrix.loader }}/build/libs/*
176211 - name : Publish
177- run : ./gradlew :${{ matrix.loader }}:${{ matrix.site }} '-Pversion=${{needs.create-release.outputs.version}}' '-PtwelveIterationsNexusUsername =${{ secrets.NEXUS_USER }}' '-PtwelveIterationsNexusPassword =${{ secrets.NEXUS_PASSWORD }}'
212+ run : ./gradlew :${{ matrix.loader }}:${{ matrix.site }} '-Pversion=${{needs.create-release.outputs.version}}' '-PmavenUsername =${{ secrets.MAVEN_USER }}' '-PmavenPassword =${{ secrets.MAVEN_PASSWORD }}'
178213 env :
179214 CURSEFORGE_TOKEN : ${{secrets.CURSEFORGE_TOKEN}}
180215 MODRINTH_TOKEN : ${{secrets.MODRINTH_TOKEN}}
181- - name : Check new artifact hash TODO
182- run : sha1sum ${{ matrix.loader }}/build/libs/*
183216 needs :
184217 - create-release
185218 - build-common
0 commit comments