@@ -3,45 +3,66 @@ name: Release
33on :
44 push :
55 tags :
6- - ' v*.*.*'
7- workflow_dispatch :
8-
9- permissions :
10- contents : write
6+ - ' v*' # e.g. v1.2.0 or v1.3.0-rc.1
117
128jobs :
139 build-and-release :
1410 runs-on : ubuntu-latest
11+ permissions :
12+ contents : write # needed to create a Release & upload assets
13+
1514 steps :
1615 - name : Checkout
1716 uses : actions/checkout@v4
1817
19- - name : Validate Gradle Wrapper
20- uses : gradle/wrapper-validation-action@v2
18+ - name : Validate Gradle wrapper
19+ uses : gradle/actions/ wrapper-validation@v4
2120
22- - name : Set up Java 21
21+ - name : Set up Temurin JDK 21
2322 uses : actions/setup-java@v4
2423 with :
25- distribution : temurin
24+ distribution : ' temurin'
2625 java-version : ' 21'
27- cache : gradle
2826
29- - name : Grant execute permission for gradlew
27+ - name : Setup Gradle
28+ uses : gradle/actions/setup-gradle@v4
29+
30+ - name : Make gradlew executable
3031 run : chmod +x gradlew
3132
32- - name : Build (fat jar)
33- run : ./gradlew --no-daemon clean build
33+ # Build the fat JAR (we replaced Shadow with the 'uberJar' task)
34+ - name : Build
35+ run : ./gradlew --no-daemon clean uberJar
3436
35- - name : Archive jars
36- uses : actions/upload-artifact@v4
37- with :
38- name : modnvote-jars
39- path : build/libs/*.jar
37+ # Work out version & jar path
38+ - name : Compute version and artifact path
39+ id : vars
40+ shell : bash
41+ run : |
42+ VERSION="$(grep -oP 'version\\s*=\\s*\"\\K[^\"]+' build.gradle.kts)"
43+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
44+ JAR_PATH="$(ls build/libs/*.jar | head -n1)"
45+ echo "jar=$JAR_PATH" >> "$GITHUB_OUTPUT"
46+
47+ - name : Generate checksums
48+ run : |
49+ sha256sum "${{ steps.vars.outputs.jar }}" > checksums.txt
4050
4151 - name : Create GitHub Release
4252 uses : softprops/action-gh-release@v2
4353 with :
44- files : build/libs/*.jar
45- generate_release_notes : true
46- env :
47- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
54+ tag_name : ${{ github.ref_name }} # the pushed tag (e.g. v1.2.0)
55+ name : ModNVote ${{ steps.vars.outputs.version }}
56+ body : |
57+ Automated release for ModNVote ${{ steps.vars.outputs.version }}.
58+
59+ **Changes**
60+ - See commit history for this tag.
61+
62+ **Checksums**
63+ - Provided in `checksums.txt`.
64+ files : |
65+ ${{ steps.vars.outputs.jar }}
66+ checksums.txt
67+ draft : false
68+ prerelease : ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-beta') }}
0 commit comments