Manual Maven Release #28
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Manual Run automatic Maven Release | |
on: workflow_dispatch | |
jobs: | |
release: | |
name: Release to Maven Central | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout ${{ github.ref_name }} | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '22' | |
cache: maven | |
server-id: central | |
server-username: MAVEN_USER | |
server-password: MAVEN_PASSWORD | |
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY_GITHUB_TECHUSER }} | |
gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
- name: Setup Maven | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: '3.9.8' | |
- name: Import GPG key | |
uses: crazy-max/ghaction-import-gpg@v6 | |
with: | |
gpg_private_key: ${{ secrets.GPG_SIGNING_KEY_GITHUB_TECHUSER }} | |
passphrase: ${{ secrets.GPG_PASSPHRASE }} | |
git_config_global: true | |
git_user_signingkey: true | |
git_commit_gpgsign: true | |
fingerprint: '0181A4828FA27B6BE6F1F5A68611CD28F472E006' | |
- name: Diag | |
run: | | |
echo "=====================" | |
echo " Maven " | |
echo "=====================" | |
mvn -v | |
echo "=====================" | |
echo " Global settings " | |
echo "=====================" | |
cat $HOME/.m2/settings.xml | |
echo "" | |
echo "=====================" | |
echo " Git config " | |
echo "=====================" | |
git config -l --global | |
- name: Release preparation | |
id: pre-release | |
shell: bash | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh extension install valeriobelli/gh-milestone | |
version=$(mvn -q -DforceStdout help:evaluate -N -Dexpression=project.version | sed -rn 's/([^-]+)(-SNAPSHOT|)$/\1/p') | |
echo "VERSION=$version" >> "$GITHUB_OUTPUT" | |
- name: Release | |
env: | |
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
MAVEN_GPG_KEY_FINGERPRINT: '0x0181A4828FA27B6BE6F1F5A68611CD28F472E006!' | |
MAVEN_USER: ${{ secrets.NEXUS_USER }} | |
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} | |
run: | | |
mvn -B release:prepare release:perform -Darguments="-DskipTests" | |
- name: Post release | |
env: | |
GH_TOKEN: ${{ github.token }} | |
shell: bash | |
run: | | |
version=${{ steps.pre-release.outputs.VERSION }} | |
echo "Trying to find milestone $version" | |
milestone=$(gh milestone list --json id,title,state --jq "map_values(select(.title == \"${version}\" and .state == \"OPEN\")).[].number") | |
if [ ! -z "$milestone" ]; then | |
echo "Found milestone $version, closing it" | |
gh milestone edit $milestone --state closed | |
fi | |
version=$(mvn -q -DforceStdout help:evaluate -N -Dexpression=project.version | sed -rn 's/([^-]+)(-SNAPSHOT|)$/\1/p') | |
echo "Preparing development $version" | |
echo "Trying to find milestone $version" | |
milestone=$(gh milestone list --json id,title,state --jq "map_values(select(.title == \"${version}\" and .state == \"OPEN\")).[].number") | |
if [ ! -z "$milestone" ]; then | |
echo "Creating milestone $version" | |
gh milestone create --title $milestone | |
fi | |
name=$(mvn -q -DforceStdout help:evaluate -N -Dexpression=project.name) | |
version=${{ steps.pre-release.outputs.VERSION }} | |
tag=$(git describe --tags --abbrev=0) | |
echo "Creating release \"$name $version\" from tag $tag" | |
gh release create $tag --verify-tag --notes-from-tag --title "$name $version" | |