Skip to content

Release develop by @workflow_dispatch #88

Release develop by @workflow_dispatch

Release develop by @workflow_dispatch #88

Workflow file for this run

name: Release to Maven Repo
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
testCoverageDryRun:
description: 'dryrun coverage report?'
default: false
type: boolean
required: false
testVerbose:
description: 'test output verbose'
default: false
type: boolean
required: false
applyQodanaScan:
description: 'apply Qodana Scan?'
default: true
type: boolean
required: false
deployOssrh:
description: 'deploy to oss-repo?'
default: true
type: boolean
required: false
deployAltrh:
description: 'deploy to alt-repo?'
default: true
type: boolean
required: false
release:
types: [published]
push:
branches:
- 'main'
jobs:
release:
name: Release to Sonatype
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
checks: write
env:
MAVEN_OPTS: -Xmx2g
TEST_VERBOSE: ${{ inputs.testVerbose == 'true' }}
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('pom.xml') }}
## 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: |
echo "# env and var" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
JAVA_HOME=$(asdf where java)
echo "- JAVA_HOME=$JAVA_HOME" >> "$GITHUB_STEP_SUMMARY"
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_OUTPUT"
echo "- GIT_BRANCH=$(git branch --show-current)" >> "$GITHUB_STEP_SUMMARY"
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" >> "$GITHUB_STEP_SUMMARY"
echo "MVN_REVISION=$_opt" >> "$GITHUB_OUTPUT"
fi
_ver=$(mvn --quiet --non-recursive -DforceStdout -Dexpression=project.version $_opt help:evaluate)
echo "- WINGS_VERSION=$_ver" >> "$GITHUB_STEP_SUMMARY"
echo "WINGS_VERSION=$_ver" >> "$GITHUB_OUTPUT"
_cov=${{ inputs.testCoverReport || github.event_name == 'push' }}
echo "- MVN_COVERAGE=$_cov" >> "$GITHUB_STEP_SUMMARY"
echo "MVN_COVERAGE=$_cov" >> "$GITHUB_OUTPUT"
_drh=${{ inputs.deployOssrh || github.event_name == 'release' }}
echo "- MVN_DEPLOY_OSSRH=$_drh" >> "$GITHUB_STEP_SUMMARY"
echo "MVN_DEPLOY_OSSRH=$_drh" >> "$GITHUB_OUTPUT"
_drp=${{ secrets.MVN_ALT_USER != '' && ( inputs.deployAltrh || github.event_name == 'push' ) }}
echo "- MVN_DEPLOY_ALTRH=$_drp" >> "$GITHUB_STEP_SUMMARY"
echo "MVN_DEPLOY_ALTRH=$_drp" >> "$GITHUB_OUTPUT"
_qod=${{ inputs.applyQodanaScan || 'false' }}
echo "- QODANA_SCAN=$_qod" >> "$GITHUB_STEP_SUMMARY"
echo "QODANA_SCAN=$_qod" >> "$GITHUB_OUTPUT"
echo "# mvn and git" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```text' >> "$GITHUB_STEP_SUMMARY"
mvn -v >> "$GITHUB_STEP_SUMMARY"
git --no-pager log --graph -10 --pretty=format:'%H - %ai %d %s' >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
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>
<server>
<id>altrh</id>
<username>${MVN_ALT_USER}</username>
<password>${MVN_ALT_PASS}</password>
</server>
</servers>
</settings>
EOF
- name: Qodana Scan
uses: JetBrains/[email protected]
if: steps.settings.outputs.QODANA_SCAN == 'true'
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
## 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=$TESTFAILS_IGNORE
-DrepoToken=$COVERALLS_WINGS -DdryRun=$COVERALLS_DRYRUN
clean test jacoco:report coveralls:report
env:
TZ: Asia/Shanghai
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }}
COVERALLS_WINGS: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_DRYRUN: ${{ inputs.testCoverageDryRun || 'false' }}
TESTFAILS_IGNORE: ${{ inputs.testFailureIgnore || 'false' }}
## import gpp private key
- name: Import GPG key
if: steps.settings.outputs.MVN_DEPLOY_OSSRH == 'true' || steps.settings.outputs.MVN_DEPLOY_ALTRH == 'true'
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.MVN_GPG_SKEY }}
passphrase: ${{ secrets.MVN_GPG_PASS }}
## maven deploy ossrh
- name: Deploy OSS ${{ steps.settings.outputs.WINGS_VERSION }} ${{ steps.settings.outputs.GIT_BRANCH }}
if: steps.settings.outputs.MVN_DEPLOY_OSSRH == 'true'
run: >
mvn
-P 'deploy,deploy-ossrh'
${{ steps.settings.outputs.MVN_REVISION }}
-Dgpg.passphrase=${MVN_GPG_PASS}
deploy
env:
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }}
MVN_GPG_PASS: ${{ secrets.MVN_GPG_PASS }}
MVN_OSS_USER: ${{ secrets.MVN_OSS_USER }}
MVN_OSS_PASS: ${{ secrets.MVN_OSS_PASS }}
## maven deploy altrh
- name: Deploy ALT ${{ steps.settings.outputs.WINGS_VERSION }} ${{ steps.settings.outputs.GIT_BRANCH }}
if: steps.settings.outputs.MVN_DEPLOY_ALTRH == 'true'
continue-on-error: ${{ inputs.deployAltrh != 'true' }}
run: >
mvn
-P 'deploy,deploy-altrh,deploy-old'
${{ steps.settings.outputs.MVN_REVISION }}
-Dgpg.passphrase=${MVN_GPG_PASS}
deploy
env:
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }}
MVN_GPG_PASS: ${{ secrets.MVN_GPG_PASS }}
## export MVN_ALT_REPO=https://packages.trydofor.com/maven/repository/devops/
MVN_ALT_USER: ${{ secrets.MVN_ALT_USER }}
MVN_ALT_PASS: ${{ secrets.MVN_ALT_PASS }}
MVN_ALT_REPO: ${{ secrets.MVN_ALT_REPO }}
MVN_ALT_SNAP: ${{ secrets.MVN_ALT_SNAP }}