Skip to content

Incrementing Release Version -- Major #13

Incrementing Release Version -- Major

Incrementing Release Version -- Major #13

name: Increment Release Version Pipeline
run-name: "Incrementing Release Version -- ${{github.event.inputs.action}}"
on:
workflow_dispatch:
inputs:
action:
type: choice
description: Version To Increment
options:
- Major
- Minor
- Patch
required: true
env:
INCREMENTING_VERSION: ${{github.event.inputs.action}}
jobs:
get_version:
runs-on: ubuntu-latest
name: Get Version
outputs:
RELEASE_VERSION: ${{steps.splitVersion.outputs._0}}
_MAJOR: ${{steps.splitVersionMinor.outputs._0}}
_MINOR: ${{steps.splitVersionMinor.outputs._1}}
_PATCH: ${{steps.splitVersionMinor.outputs._2}}
steps:
- name: Checkout Code Repository
uses: actions/checkout@v4
- name: Downloading Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- name: Get Current Version
run: |
echo "POM_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
- name: Print Version
run: echo ${{env.POM_VERSION}}
- name: Split version code
uses: xom9ikk/split@v1
id: splitVersion
with:
string: ${{env.POM_VERSION}}
separator: -SNAPSHOT
limit: -1
- name: Split version code - Minor
uses: xom9ikk/split@v1
id: splitVersionMinor
with:
string: ${{steps.splitVersion.outputs._0}}
separator: .
limit: -1
increment_version:
runs-on: ubuntu-latest
needs: get_version
outputs:
NEXT_SNAPSHOT_VERSION: ${{steps.nextSnapshotVersion.outputs.NEXT_SNAPSHOT_VERSION}}
RELEASE_VERSION: ${{needs.get_version.outputs.RELEASE_VERSION}}
name: "Increment ${{github.event.inputs.action}} Version"
steps:
- name: Set Env - Major
shell: bash
run: |
VERSION_PICKED=${{env.INCREMENTING_VERSION}}
if [[ "$VERSION_PICKED" == "Major" ]]; then
echo "VERSION_NUMBER=${{needs.get_version.outputs._MAJOR}}" >> $GITHUB_ENV
elif [[ "$VERSION_PICKED" == "Minor" ]]; then
echo "VERSION_NUMBER=${{needs.get_version.outputs._MINOR}}" >> $GITHUB_ENV
else
echo "VERSION_NUMBER=${{needs.get_version.outputs._PATCH}}" >> $GITHUB_ENV
fi
- name: Print Version
run: echo ${{env.INCREMENTING_VERSION}} -- ${{env.VERSION_NUMBER}}
- name: Increment Version
run: echo "NEW_VERSION_NUMBER=$((${{env.VERSION_NUMBER}} + 1))" >> $GITHUB_ENV
- name: Generate New Snapshot Version Output
id: nextSnapshotVersion
shell: bash
run: |
VERSION_PICKED=${{env.INCREMENTING_VERSION}}
if [[ "$VERSION_PICKED" == "Major" ]]; then
echo "NEXT_SNAPSHOT_VERSION=${{env.NEW_VERSION_NUMBER}}.0.0" >> $GITHUB_ENV
elif [[ "$VERSION_PICKED" == "Minor" ]]; then
echo "NEXT_SNAPSHOT_VERSION=${{needs.get_version.outputs._MAJOR}}.${{env.NEW_VERSION_NUMBER}}.0" >> $GITHUB_ENV
else
echo "NEXT_SNAPSHOT_VERSION=${{needs.get_version.outputs._MAJOR}}.${{needs.get_version.outputs._MINOR}}.${{env.NEW_VERSION_NUMBER}}" >> $GITHUB_ENV
set_build_and_tag_release:
runs-on: ubuntu-latest
needs: increment_version
permissions:
contents: write
steps:
- name: Checkout Code Repository
uses: actions/checkout@v4
- name: Downloading Java
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Set Release Version
run: mvn -B versions:set -DnewVersion=${{needs.increment_version.outputs.RELEASE_VERSION}} -DgenerateBackupPoms=false
- name: Build Release Version
run: mvn -version mvn clean install
- name: Create tag
uses: actions/github-script@v5
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/${{needs.increment_version.outputs.RELEASE_VERSION}}',
sha: context.sha
})