Skip to content

Release

Release #5

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
releaseVersion:
description: "Release version, e.g. 0.3.6 (optional — auto-detected from the current POM)"
required: false
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write # to automatically create tags
steps:
- name: Validate release version
if: ${{ github.event.inputs.releaseVersion != '' }}
run: |
RELEASE=${{ github.event.inputs.releaseVersion }}
if [[ ! $RELEASE =~ ^[0-9]+\.[0-9]+\.[0-9]+(-SNAPSHOT)?$ ]]; then
echo "Error: releaseVersion '$RELEASE' is not in the correct format x.y.z or x.y.z-SNAPSHOT"
exit 1
fi
- name: Checkout
uses: actions/checkout@v4
with:
ref: 'master'
fetch-depth: 0
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'adopt'
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Configure git
run: |
git config user.email "[email protected]"
git config user.name "GitHub Actions"
- name: Prepare Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: |
MVN_ARGS=""
if [ -n "${{ github.event.inputs.releaseVersion }}" ]; then
MVN_ARGS="$MVN_ARGS -DreleaseVersion=${{ github.event.inputs.releaseVersion }}"
fi
mvn -B release:prepare $MVN_ARGS
- name: Determine release version
id: version
run: |
export TAG=$(grep 'scm.tag=' release.properties | cut -d'=' -f2)
export VERSION=${TAG#JavaFastPFOR-}
echo "released_tag=${TAG}" >> $GITHUB_OUTPUT
echo "released_version=${VERSION}" >> $GITHUB_OUTPUT
echo "Releasing tag: ${TAG}"
echo "Releasing version: ${VERSION}"
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
MAVEN_GPG_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
MAVEN_USER: ${{ secrets.MAVEN_USER }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
run: |
mvn -B release:perform -Darguments="-DskipTests -Dnjord.autoPublish -s .github/release-settings.xml"
- name: Create GitHub Release
run: gh release create "${{ steps.version.outputs.released_tag }}" --generate-notes --title "Version ${{ steps.version.outputs.released_version }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}