Release #39
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: | ||
dry-run: | ||
description: "Dry run all steps" | ||
default: false | ||
type: boolean | ||
skip-maven-central-staging: | ||
description: "Do not create staging release" | ||
default: false | ||
type: boolean | ||
skip-maven-central-promotion: | ||
description: "Do not promote staging" | ||
default: false | ||
type: boolean | ||
skip-site-publication: | ||
description: "Do not publish the site" | ||
default: false | ||
type: boolean | ||
skip-github-release: | ||
description: "Do not create a GitHub release" | ||
default: false | ||
type: boolean | ||
version: | ||
description: "Version to deploy" | ||
default: "use-pom" | ||
type: string | ||
jobs: | ||
calculate-version: | ||
name: Calculate release version | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Set up JDK | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: '11' | ||
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: Determine the version to release | ||
run: |- | ||
if [[ '${{ inputs.version }}' == "use-pom" ]]; 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 "::set-output name=version::${release_version}" | ||
maven-central: | ||
name: Create Maven Central Release | ||
runs-on: ubuntu-latest | ||
needs: | ||
- calculate-version | ||
permissions: | ||
contents: write | ||
id-token: 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: '11' | ||
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 | ||
if: ${{ ! inputs.skip-maven-central-staging }} | ||
run: |- | ||
git config user.name '${{ github.actor }}' | ||
git config user.email '${{ github.actor }}@users.noreply.github.com' | ||
- name: Create staging release | ||
if: ${{ ! inputs.skip-maven-central-staging }} | ||
run: |- | ||
./mvnw -B -e \ | ||
-DdryRun='${{ inputs.dry-run }}' \ | ||
-Dpassword='${{ secrets.GITHUB_TOKEN }}' \ | ||
-DreleaseVersion="${{ needs.calculate-version.version }}" \ | ||
-Dresume=false \ | ||
-DsignTag=false \ | ||
-Dtag="v${{ needs.calculate-version.version }}" \ | ||
release:prepare release:perform | ||
env: | ||
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | ||
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} | ||
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | ||
- name: Promote staging release | ||
if: ${{ ! inputs.skip-maven-central-promotion }} | ||
run: |- | ||
function get_pom_attr() { | ||
./mvnw help:evaluate -q -DforceStdout -Dexpression="$1" | ||
} | ||
function close() { | ||
if [[ '${{ inputs.dry-run }}' = "true" ]]; then | ||
echo "$0 $*" | ||
else | ||
./scripts/close-nexus-repos.sh "${@}" | ||
fi | ||
} | ||
close \ | ||
-u "${OSSRH_USERNAME}" \ | ||
-p "${OSSRH_TOKEN}" \ | ||
-g "$(get_pom_attr "project.groupId")" \ | ||
-a "$(get_pom_attr "project.artifactId")" \ | ||
-v "${{ needs.calculate-version.version }}" \ | ||
-s "https://s01.oss.sonatype.org/" | ||
env: | ||
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | ||
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} | ||
gh-release: | ||
name: Create GitHub Release | ||
runs-on: ubuntu-latest | ||
needs: | ||
- calculate-version | ||
- deploy | ||
Check failure on line 151 in .github/workflows/deploy.yml GitHub Actions / ReleaseInvalid workflow file
|
||
permissions: | ||
id-token: write | ||
steps: | ||
- name: Create GitHub Release | ||
if: ${{ ! inputs.dry-run && ! inputs.skip-github-release }} | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
tag: v${{ needs.calculate-version.version }} | ||
name: v${{ needs.calculate-version.version }} | ||
generateReleaseNotes: true | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
gh-pages: | ||
name: Deploy GitHub Pages | ||
runs-on: ubuntu-latest | ||
needs: | ||
- calculate-version | ||
- deploy | ||
permissions: | ||
pages: write | ||
environment: | ||
name: github-pages | ||
url: https://ascopes.github.io/protobuf-maven-plugin | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Set up JDK | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: '11' | ||
distribution: 'temurin' | ||
- name: Set version in POM | ||
run: |- | ||
./mvnw versions:set -DnewVersion=${{ needs.calculate-version.version }} | ||
- name: Generate site | ||
if: ${{ ! inputs.dry-run && ! inputs.skip-site-publication }} | ||
run: |- | ||
./mvnw site -DskipTests -Dinvoker.skip -Dcheckstyle.skip | ||
- name: Upload site | ||
uses: actions/upload-pages-artifact@v3 | ||
if: ${{ ! inputs.dry-run && ! inputs.skip-site-publication }} | ||
with: | ||
path: target/site | ||
- name: Deploy site | ||
if: ${{ ! inputs.dry-run && ! inputs.skip-site-publication }} | ||
uses: actions/deploy-pages@v4 |