Release #80
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 | |
on: | |
workflow_dispatch: | |
inputs: | |
skip-maven-release: | |
description: "Skip Maven release steps" | |
default: false | |
type: boolean | |
skip-nexus-promotion: | |
description: "Skip Nexus promotion steps" | |
default: false | |
type: boolean | |
version: | |
description: "Override deployment version" | |
default: "" | |
type: string | |
jobs: | |
deploy: | |
name: Deploy | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
id-token: write | |
pages: write | |
environment: | |
name: maven-central | |
url: https://repo1.maven.org/maven2/io/github/ascopes/protobuf-maven-plugin | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 22 | |
distribution: 'temurin' | |
server-id: ossrh | |
server-username: OSSRH_USERNAME | |
server-password: OSSRH_TOKEN | |
gpg-passphrase: GPG_PASSPHRASE | |
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
- name: Configure Git | |
run: |- | |
git config user.name '${{ github.actor }}' | |
git config user.email '${{ github.actor }}@users.noreply.github.com' | |
- name: Install dependencies | |
run: |- | |
# Install protoc so those integration tests also run. This increases the reported | |
# coverage on the generated site to a more accurate value. | |
sudo apt update -q | |
sudo apt install protobuf-compiler -qy | |
- name: Determine release version details | |
run: |- | |
group_id="$(./mvnw help:evaluate -q -DforceStdout -Dexpression="project.groupId")" | |
echo "group_id=${group_id}" >> "${GITHUB_ENV}" | |
artifact_id="$(./mvnw help:evaluate -q -DforceStdout -Dexpression="project.artifactId")" | |
echo "artifact_id=${artifact_id}" >> "${GITHUB_ENV}" | |
if [[ '${{ inputs.version }}' == "" ]]; then | |
echo "No explicit version provided, calculating next non-snapshot build from POM" | |
release_version="$(./mvnw -B help:evaluate -Dexpression=project.version -q -DforceStdout | sed 's/-SNAPSHOT//g')" | |
else | |
release_version='${{ inputs.version }}' | |
fi | |
echo "release_version=${release_version}" >> "${GITHUB_ENV}" | |
- name: Deploy as staging to Nexus | |
if: ${{ ! inputs.skip-maven-release }} | |
run: |- | |
./mvnw -B -e \ | |
-DdryRun=false \ | |
-Darguments=-DskipTests \ | |
-Dpassword='${{ secrets.GITHUB_TOKEN }}' \ | |
-DreleaseVersion="${release_version}" \ | |
-DsignTag=false \ | |
-Dtag="v${release_version}" \ | |
release:prepare release:perform | |
env: | |
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
- name: Upload site | |
uses: actions/upload-pages-artifact@v3 | |
if: ${{ ! inputs.skip-maven-release }} | |
with: | |
path: protobuf-maven-plugin/target/site | |
- name: Promote Nexus staging release | |
if: ${{ ! inputs.skip-nexus-promotion }} | |
run: |- | |
./scripts/close-nexus-repos.sh \ | |
-u "${OSSRH_USERNAME}" \ | |
-p "${OSSRH_TOKEN}" \ | |
-g "${group_id}" \ | |
-a "${artifact_id}" \ | |
-v "${release_version}" \ | |
-s "https://s01.oss.sonatype.org/" | |
env: | |
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} | |
- name: Create GitHub Release | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: v${{ env.release_version }} | |
name: v${{ env.release_version }} | |
generateReleaseNotes: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Deploy site | |
uses: actions/deploy-pages@v4 | |
if: ${{ ! inputs.skip-maven-release }} |