Skip to content

Release develop by @workflow_dispatch #49

Release develop by @workflow_dispatch

Release develop by @workflow_dispatch #49

Workflow file for this run

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
testVerifyDryRun:
description: 'dryrun coverage report?'
default: false
type: boolean
required: false
testLoggerLevel:
description: 'test logger level'
default: INFO
type: choice
options:
- DEBUG
- INFO
- WARN
- ERROR
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
LOG_LEVEL: ${{ inputs.testLoggerLevel || 'INFO' }}
TEST_VERBOSE: ${{ inputs.testLoggerLevel == 'DEBUG' }}
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: |
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 '!example,!devs' -Dmaven.test.skip=true clean install
mvn -pl ':devs-codegen' -Ddevs-initdb=true clean test
mvn -P 'coverage,!example,!devs' -Dmaven.test.failure.ignore=$TESTFAILS_IGNORE test
mvn -pl ':devs-coverage' -am jacoco:report-aggregate
mvn -pl ':devs-coverage' -DrepoToken=$COVERALLS_WINGS -DdryRun=$COVERALLS_DRYRUN verify
env:
TZ: Asia/Shanghai
JAVA_HOME: ${{ steps.settings.outputs.JAVA_HOME }}
COVERALLS_WINGS: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_DRYRUN: ${{ inputs.testVerifyDryRun || 'false' }}
TESTFAILS_IGNORE: ${{ inputs.testFailureIgnore || 'false' }}
## 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,doc,!example,!devs'
${{ 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 }}