Skip to content

Commit a012d8c

Browse files
committed
ci: add tag-driven release workflow
1 parent 5361d3b commit a012d8c

1 file changed

Lines changed: 43 additions & 22 deletions

File tree

.github/workflows/release.yml

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,66 @@ name: Release
33
on:
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

128
jobs:
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

Comments
 (0)