Skip to content

Commit 89bf6f7

Browse files
authored
[CC-3235] Add workflow to create snapshot version from current branch. (#188)
1 parent caff261 commit 89bf6f7

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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

Comments
 (0)