1+ name : " [Manual] Publish Snapshot Version"
2+ on :
3+ workflow_dispatch :
4+ inputs :
5+ version_increment :
6+ description : ' Version part to increment (patch, minor, major)'
7+ required : true
8+ default : ' patch'
9+ type : choice
10+ options :
11+ - patch
12+ - minor
13+ - major
14+
15+ jobs :
16+ publish-snapshot :
17+ name : Publish Snapshot to Maven Central
18+ runs-on : ubuntu-latest
19+ steps :
20+ - uses : actions/checkout@v4
21+ - name : Set up Maven Central Repository
22+ uses : actions/setup-java@v3
23+ with :
24+ java-version : ' 17'
25+ distribution : ' temurin'
26+ cache : maven
27+ server-id : central
28+ server-username : MAVEN_USERNAME
29+ server-password : MAVEN_PASSWORD
30+ gpg-private-key : ${{ secrets.GPG_PRIVATE_KEY }}
31+ gpg-passphrase : GPG_PASSPHRASE
32+
33+ - name : Get current version
34+ id : get_version
35+ run : |
36+ CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
37+ echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
38+ echo "Current version: $CURRENT_VERSION"
39+
40+ - name : Calculate next snapshot version
41+ id : calc_version
42+ run : |
43+ CURRENT_VERSION="${{ steps.get_version.outputs.current_version }}"
44+ # Remove -SNAPSHOT if it exists
45+ BASE_VERSION="${CURRENT_VERSION%-SNAPSHOT}"
46+
47+ # Split version into parts
48+ IFS='.' read -r major minor patch <<< "$BASE_VERSION"
49+
50+ # Increment based on input
51+ case "${{ github.event.inputs.version_increment }}" in
52+ major)
53+ major=$((major + 1))
54+ minor=0
55+ patch=0
56+ ;;
57+ minor)
58+ minor=$((minor + 1))
59+ patch=0
60+ ;;
61+ patch)
62+ patch=$((patch + 1))
63+ ;;
64+ esac
65+
66+ NEW_VERSION="${major}.${minor}.${patch}-SNAPSHOT"
67+ echo "snapshot_version=$NEW_VERSION" >> $GITHUB_OUTPUT
68+ echo "Next snapshot version: $NEW_VERSION"
69+
70+ - name : Update version in pom.xml
71+ run : |
72+ mvn versions:set -DnewVersion=${{ steps.calc_version.outputs.snapshot_version }} -DgenerateBackupPoms=false
73+
74+ - name : Verify version update
75+ run : |
76+ NEW_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
77+ echo "Updated version: $NEW_VERSION"
78+ if [ "$NEW_VERSION" != "${{ steps.calc_version.outputs.snapshot_version }}" ]; then
79+ echo "Version update failed!"
80+ exit 1
81+ fi
82+
83+ - name : Build and deploy snapshot
84+ run : mvn --batch-mode -DskipTests=true clean deploy
85+ env :
86+ MAVEN_USERNAME : ${{ secrets.MAVEN_CENTRAL_PUBLISH_USER }}
87+ MAVEN_PASSWORD : ${{ secrets.MAVEN_CENTRAL_PUBLISH_TOKEN }}
88+ GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
89+
90+ - name : Summary
91+ run : |
92+ echo "### Snapshot Published! :rocket:" >> $GITHUB_STEP_SUMMARY
93+ echo "" >> $GITHUB_STEP_SUMMARY
94+ echo "**Version:** \`${{ steps.calc_version.outputs.snapshot_version }}\`" >> $GITHUB_STEP_SUMMARY
95+ echo "**Current Version:** \`${{ steps.get_version.outputs.current_version }}\`" >> $GITHUB_STEP_SUMMARY
96+ echo "" >> $GITHUB_STEP_SUMMARY
97+ echo "The snapshot version is now available in Maven Central Snapshots repository." >> $GITHUB_STEP_SUMMARY
0 commit comments