Release (1.2.0 -> 1.3.0-SNAPSHOT) #106
Workflow file for this run
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
# Release artifact will be pushed to Sonatype, which is synced to Maven Central | |
# Build artifacts get pushed to Sonatype and non-SNAPSHOT versions are then | |
# auto-synced to Maven Central. | |
# | |
# If images are given (separated by spaces), then they are assumed to be produced by | |
# Maven and have release and dev tags. | |
# | |
# Various secrets are needed to do the release. | |
# | |
# Credentials for Sonatype, needs a Sonatype account. | |
# - OSSRH_USERNAME | |
# - OSSRH_PASSWORD | |
# Will need GPG key + passphrase to sign artifacts for Maven Central | |
# - MAVEN_GPG_PASSPHRASE | |
# - MAVEN_GPG_KEY | |
name: "Publish: manual full release" | |
run-name: Release (${{ inputs.releaseversion }} -> ${{ inputs.nextversion}}) | |
on: | |
workflow_dispatch: | |
inputs: | |
releaseversion: | |
description: 'Release version' | |
required: true | |
nextversion: | |
description: 'Next dev version' | |
required: true | |
workflow_call: | |
inputs: | |
releaseversion: | |
description: 'Release version' | |
required: true | |
type: string | |
nextversion: | |
description: 'Next dev version' | |
required: true | |
type: string | |
images: | |
description: 'Images to push' | |
required: false | |
type: string | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
env: | |
RELEASE: ${{ inputs.releaseversion }} | |
NEXT: ${{ inputs.nextversion }} | |
IMAGES: ${{ inputs.images }} | |
steps: | |
- name: Checkout latest code | |
uses: actions/checkout@v3 | |
- name: Setup Java & Maven | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 17 | |
distribution: 'temurin' | |
cache: 'maven' | |
server-id: ossrh | |
server-username: MAVEN_USERNAME | |
server-password: MAVEN_PASSWORD | |
gpg-private-key: ${{ secrets.MAVEN_GPG_KEY }} | |
gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
- name: Config git user | |
run: | | |
git config user.name ${{ github.actor }} | |
git config user.email "${{ github.actor }}@users.noreply.github.com" | |
- name: Set the release version, commit the change, and tag it | |
run: | | |
mvn versions:set -B -ntp -DnewVersion=$RELEASE | |
git commit -am "Update version to $RELEASE" | |
git tag $RELEASE | |
- name: Release Java modules | |
uses: ecplise-pass/main/.github/actions/maven-release@combined-release | |
env: | |
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} | |
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} | |
- name: Set the next dev version and commit the change | |
run: | | |
mvn versions:set -B -ntp -DnewVersion=$NEXT | |
echo git commit -am "Update version to $NEXT" | |
- name: Release dev Java modules | |
run: | | |
echo mvn -B -V -ntp clean deploy -DskipTests -DskipITs | |
env: | |
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} | |
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} | |
- name: Login to GHCR | |
if: github.event_name == 'workflow_call' && github.event.inputs.images != '' | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Push Docker image to GHCR | |
if: github.event_name == 'workflow_call' && github.event.inputs.images != '' | |
run: | | |
for name in $IMAGES | |
do | |
echo docker push $name:$RELEASE | |
echo docker push $name:$NEXT | |
done | |
- name: Push the commits and tags | |
run: | | |
echo git push origin | |
echo git push origin --tags | |
- name: Create GitHub release | |
run: | | |
echo gh release create "$RELEASE" --generate-notes |