Release develop by @workflow_dispatch #25
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: Release-To-OssRh | |
run-name: Release ${{github.ref_name}} by @${{ github.event_name }} | |
on: | |
workflow_dispatch: | |
inputs: | |
testCoverReport: | |
description: 'test and coverage report?' | |
default: true | |
type: boolean | |
required: false | |
testFailureIgnore: | |
description: 'test ignore failure?' | |
default: false | |
type: boolean | |
required: false | |
testVerbose: | |
description: 'test output verbose' | |
default: false | |
type: boolean | |
required: false | |
deployOssrh: | |
description: 'deploy to ossrh?' | |
default: true | |
type: boolean | |
required: false | |
release: | |
types: [published] | |
push: | |
branches: | |
- 'main' | |
jobs: | |
release: | |
name: Release to Sonatype | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Xmx2g | |
TEST_VERBOSE: ${{ inputs.testVerbose }} | |
steps: | |
- name: Checkout ${{github.event.release.tag_name}} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
## chache asdf/, m2/repository | |
- name: Cache Sdk & Repo | |
id: cache-sdk-repo | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.asdf/ | |
~/.m2/repository/ | |
key: asdf-m2-repo-${{hashFiles('.tool-versions')}} | |
## install jdk and maven | |
- name: Install asdf & tools | |
uses: asdf-vm/actions/install@v3 | |
with: | |
skip_install: ${{steps.cache-sdk-repo.outputs.cache-hit == 'true'}} | |
## write settings.xml | |
- name: Maven settings.xml | |
id: settings | |
run: | | |
JAVA_HOME=$(asdf where java) | |
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_OUTPUT" | |
echo "GIT_BRANCH=$(git branch --show-current)" >> "$GITHUB_OUTPUT" | |
_opt=$(git describe --tags --exact-match 2>/dev/null || true) | |
if [ "$_opt" != "" ]; then | |
_opt="-Drevision=$_opt" | |
echo "MVN_REVISION=$_opt" | |
echo "MVN_REVISION=$_opt" >> "$GITHUB_OUTPUT" | |
fi | |
_ver=$(mvn --quiet --non-recursive -DforceStdout -Dexpression=project.version $_opt help:evaluate) | |
echo "WINGS_VERSION=$_ver" | |
echo "WINGS_VERSION=$_ver" >> "$GITHUB_OUTPUT" | |
_cov=${{ inputs.testCoverReport || github.event_name == 'push' }} | |
echo "MVN_COVERAGE=$_cov" | |
echo "MVN_COVERAGE=$_cov" >> "$GITHUB_OUTPUT" | |
_drh=${{ inputs.deployOssrh || github.event_name == 'release' }} | |
echo "MVN_DEPLOYRH=$_drh" | |
echo "MVN_DEPLOYRH=$_drh" >> "$GITHUB_OUTPUT" | |
mvn -v | |
git --no-pager log --graph -10 --pretty=format:'%H - %ai %d %s' | |
mkdir -p ~/.m2 | |
cat > ~/.m2/settings.xml << "EOF" | |
<settings> | |
<interactiveMode>false</interactiveMode> | |
<servers> | |
<server> | |
<id>ossrh</id> | |
<username>${MVN_OSS_USER}</username> | |
<password>${MVN_OSS_PASS}</password> | |
</server> | |
</servers> | |
</settings> | |
EOF | |
## report if not release | |
- name: Test Coverage ${{ steps.settings.outputs.WINGS_VERSION }} ${{ steps.settings.outputs.GIT_BRANCH }} | |
if: steps.settings.outputs.MVN_COVERAGE == 'true' | |
run: > | |
mvn | |
-P coverage | |
-Dmaven.test.failure.ignore=${{ inputs.testFailureIgnore }} | |
-DrepoToken=${{ secrets.COVERALLS_REPO_TOKEN }} | |
clean test jacoco:report coveralls:report | |
env: | |
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }} | |
## import gpp private key | |
- name: Import GPG key | |
if: steps.settings.outputs.MVN_DEPLOYRH == 'true' | |
uses: crazy-max/ghaction-import-gpg@v6 | |
with: | |
gpg_private_key: ${{ secrets.MVN_GPG_SKEY }} | |
passphrase: ${{ secrets.MVN_GPG_PASS }} | |
## maven deploy | |
- name: Deploy ${{ steps.settings.outputs.WINGS_VERSION }} ${{ steps.settings.outputs.GIT_BRANCH }} | |
if: steps.settings.outputs.MVN_DEPLOYRH == 'true' | |
run: > | |
mvn | |
-P ossrh | |
${{ steps.settings.outputs.MVN_REVISION }} | |
-Dgpg.passphrase=${MVN_GPG_PASS} | |
clean deploy | |
env: | |
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }} | |
MVN_OSS_USER: ${{ secrets.MVN_OSS_USER }} | |
MVN_OSS_PASS: ${{ secrets.MVN_OSS_PASS }} | |
MVN_GPG_PASS: ${{ secrets.MVN_GPG_PASS }} |