1+ name : Release
2+
3+ on :
4+ workflow_dispatch :
5+ inputs :
6+ releaseVersion :
7+ description : " Release version, e.g. 0.3.6 (optional — auto-detected from the current POM)"
8+ required : false
9+
10+ jobs :
11+ release :
12+ runs-on : ubuntu-latest
13+ permissions :
14+ contents : write # to automatically create tags
15+
16+ steps :
17+ - name : Validate release version
18+ if : ${{ github.event.inputs.releaseVersion != '' }}
19+ run : |
20+ RELEASE=${{ github.event.inputs.releaseVersion }}
21+ if [[ ! $RELEASE =~ ^[0-9]+\.[0-9]+\.[0-9]+(-SNAPSHOT)?$ ]]; then
22+ echo "Error: releaseVersion '$RELEASE' is not in the correct format x.y.z or x.y.z-SNAPSHOT"
23+ exit 1
24+ fi
25+
26+ - name : Checkout
27+ uses : actions/checkout@v4
28+ with :
29+ fetch-depth : 0
30+ ref : master
31+
32+ - name : Set up Java
33+ uses : actions/setup-java@v4
34+ with :
35+ java-version : ' 21'
36+ distribution : ' adopt'
37+ gpg-private-key : ${{ secrets.GPG_PRIVATE_KEY }}
38+ gpg-passphrase : MAVEN_GPG_PASSPHRASE
39+
40+ - name : Configure git
41+ run : |
42+ git config user.email "[email protected] " 43+ git config user.name "GitHub Actions"
44+
45+ - name : Prepare Release
46+ env :
47+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
48+ MAVEN_GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
49+ run : |
50+ MVN_ARGS=""
51+ if [ -n "${{ github.event.inputs.releaseVersion }}" ]; then
52+ MVN_ARGS="$MVN_ARGS -DreleaseVersion=${{ github.event.inputs.releaseVersion }}"
53+ fi
54+ mvn -B release:prepare $MVN_ARGS
55+
56+ - name : Determine release version
57+ id : version
58+ run : |
59+ export TAG=$(grep 'scm.tag=' release.properties | cut -d'=' -f2)
60+ export VERSION=${TAG#JavaFastPFOR-}
61+
62+ echo "released_tag=${TAG}" >> $GITHUB_OUTPUT
63+ echo "released_version=${VERSION}" >> $GITHUB_OUTPUT
64+
65+ echo "Releasing tag: ${TAG}"
66+ echo "Releasing version: ${VERSION}"
67+
68+ - name : Release
69+ env :
70+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
71+ MAVEN_GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
72+ MAVEN_GPG_KEY : ${{ secrets.GPG_PRIVATE_KEY }}
73+ MAVEN_USER : ${{ secrets.MAVEN_USER }}
74+ MAVEN_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
75+ run : |
76+ mvn -B release:perform -Darguments="-DskipTests -DaltDeploymentRepository=id::default::njord: -Dnjord.autoPublish=true -Dnjord.publishingType=automatic" -s .github/release-settings.xml
77+
78+ - name : Create GitHub Release
79+ run : gh release create "${{ steps.version.outputs.released_tag }}" --generate-notes --title "Version ${{ steps.version.outputs.released_version }}"
80+ env :
81+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments