Remove sonar, tweak release workflows. #1
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: Maven release | |
on: | |
workflow_call: | |
inputs: | |
openhab: | |
description: 'Turns "openHAB" mode for build which assume certain branch policies (3.*=java 11, 4.*=java 17)' | |
required: false | |
default: false | |
type: boolean | |
release_version: | |
description: 'The version to be released from actual HEAD revision' | |
required: false | |
default: 'X.Y.Z' | |
type: string | |
development_version: | |
description: 'Version to be set as next, after release is made (appends commit to HEAD revision)' | |
required: false | |
default: 'X.Y.Z-SNAPSHOT' | |
type: string | |
perform_version: | |
description: 'Tag which should be used to perform release and publish its artifacts' | |
required: false | |
type: string | |
dry_run: | |
description: 'Should execution abstain from mutating repository/remote state?' | |
required: true | |
default: true | |
type: boolean | |
server_id: | |
description: 'Server id used in case if results are deployed' | |
required: false | |
default: 'sonatype-nexus-staging' | |
type: string | |
java_version: | |
description: 'Java version used for build, used only when openhab input is not true' | |
required: false | |
default: 11 | |
type: number | |
additional_profiles: | |
description: 'Profiles which should be activated during the build' | |
required: false | |
default: '' | |
type: string | |
secrets: | |
GPG_PASSPHRASE: | |
required: true | |
description: 'GPG key passphrase used to access private key' | |
GPG_PRIVATE_KEY: | |
required: true | |
description: 'GPG key used to sign release artifacts' | |
CI_RELEASE_USERNAME: | |
required: true | |
description: 'Username used for deployment' | |
CI_RELEASE_PASSWORD: | |
required: true | |
description: 'Password used for deployment' | |
jobs: | |
build: | |
permissions: | |
contents: write | |
runs-on: 'ubuntu-latest' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: connectorio/gh-actions-shared/.github/actions/github-debug-action@master | |
id: github-debug | |
- uses: connectorio/gh-actions-shared/.github/actions/github-bot | |
id: github-bot | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- uses: connectorio/gh-actions-shared/.github/actions/setup-java@master | |
id: setup | |
with: | |
java-version: ${{ inputs.java_version }} | |
distribution: 'temurin' | |
server_id: ${{ inputs.server_id }} | |
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} | |
- id: debug-secrets | |
env: | |
SECRETS_VARS: ${{ toJson(secrets) }} | |
run: echo "$SECRETS_VARS" | |
- uses: connectorio/gh-actions-shared/.github/actions/maven-cache@master | |
with: | |
key: ${{ hashFiles('**/pom.xml') }} | |
- name: 'Maven Prepare Release' | |
id: maven-prepare-release | |
if: github.event.inputs.release_version != '' && github.event.inputs.development_version != '' | |
shell: 'sh' | |
run: >- | |
mvn -B | |
release:prepare | |
${{ inputs.additional_profiles && format('-P {0}', inputs.additional_profiles) || '' }} | |
-DreleaseVersion=${{ inputs.release_version }} | |
-DdevelopmentVersion=${{ inputs.development_version }} | |
-DdryRun=${{ inputs.dry_run }} | |
${{ runner.debug && '-X' || '' }} | |
env: | |
${{ steps.setup.outputs.ENV_SERVER_USERNAME }}: ${{ secrets.CI_RELEASE_USERNAME }} | |
${{ steps.setup.outputs.ENV_SERVER_PASSWORD }}: ${{ secrets.CI_RELEASE_PASSWORD }} | |
- name: 'Inject tag to perform release' | |
id: prepare-perform-release | |
if: github.event.inputs.perform_version != '' | |
shell: 'sh' | |
# See https://issues.apache.org/jira/browse/SCM-729 for why the release.properties file is required. | |
# This section is borrowed from https://github.com/killbill/killbill/commit/1f376b2bae5f8d05fe916f73c5d7a207d2a083b2 | |
run: | | |
echo "scm.url=scm\:git\:git@github.com\:${GITHUB_REPOSITORY}.git" > release.properties | |
echo "scm.tag=${{ github.event.inputs.perform_version }}" >> release.properties | |
- name: 'Maven Perform release' | |
id: maven-perform-release | |
if: github.event.inputs.perform_version != '' | |
shell: 'sh' | |
run: >- | |
mvn release:perform | |
-DreleaseProfiles=release | |
${{ inputs.additional_profiles && format('-P {0}', inputs.additional_profiles) || '' }} | |
-DdryRun=${{ inputs.dry_run }} | |
${{ runner.debug && '-X' || '' }} | |
env: | |
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} | |
${{ steps.setup.outputs.ENV_GPG_PASSPHRASE }}: ${{ secrets.GPG_PASSPHRASE }} | |
${{ steps.setup.outputs.ENV_SERVER_USERNAME }}: ${{ secrets.CI_RELEASE_USERNAME }} | |
${{ steps.setup.outputs.ENV_SERVER_PASSWORD }}: ${{ secrets.CI_RELEASE_PASSWORD }} | |
- name: Rollback on failure | |
id: maven-rollback-release | |
if: failure() | |
shell: 'sh' | |
run: | | |
mvn -B release:rollback | |
echo "You may need to manually delete the git tag, if it was created." |