1+ name : build-release-on-main-push
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+
8+ jobs :
9+ build-release-on-main-push :
10+ if : ${{ !contains(github.event.head_commit.message, '[release]') }} # prevent recursive releases
11+ runs-on : ubuntu-latest
12+
13+ permissions :
14+ contents : write
15+ packages : write
16+
17+ steps :
18+ - name : checkout
19+ uses : actions/checkout@v4
20+ with :
21+ ref : main
22+
23+ - name : setup-jdk
24+ uses : actions/setup-java@v4
25+ with :
26+ java-version : 21
27+ distribution : ' temurin'
28+ cache : maven
29+ server-id : ossrh
30+ server-username : MAVEN_USERNAME
31+ server-password : MAVEN_PASSWORD
32+ gpg-private-key : ${{ secrets.OSSRH_GPG_SECRET_KEY }}
33+ gpg-passphrase : MAVEN_GPG_PASSPHRASE
34+
35+ - name : maven-build-verify
36+ run : mvn --batch-mode verify
37+
38+ - name : configure-git-user
39+ uses : qoomon/actions--setup-git@v1
40+ with :
41+ user : bot
42+
43+ - name : prepare-release
44+ run : mvn --batch-mode -P osslabz-release release:prepare -DskipStaging=true
45+ env :
46+ MAVEN_GPG_PASSPHRASE : ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
47+
48+ - name : perform-release-publish-on-maven-central
49+ run : mvn --batch-mode -P osslabz-release release:perform
50+ env :
51+ MAVEN_USERNAME : ${{ secrets.OSSRH_USERNAME }}
52+ MAVEN_PASSWORD : ${{ secrets.OSSRH_TOKEN }}
53+ MAVEN_GPG_PASSPHRASE : ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
54+
55+ - name : ' get-latest-tag'
56+ id : ' get-latest-tag'
57+ uses : " WyriHaximus/github-action-get-previous-tag@v1"
58+
59+ - name : create-release-notes
60+ uses : softprops/action-gh-release@v2
61+ with :
62+ generate_release_notes : true
63+ tag_name : ${{ steps.get-latest-tag.outputs.tag }}
64+
65+ - name : merge-main-to-dev
66+ run : |
67+ git fetch --unshallow
68+ git checkout dev
69+ git pull
70+ git merge --no-ff main -m "[release] auto-merge released main back to dev"
71+ git push
0 commit comments