From 50047d0173724b75ddce06083dc1e1f0dfb741b7 Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Sat, 27 Jul 2024 17:18:13 +0530 Subject: [PATCH] ci : Add a pipeline for release to maven central This is taken from Fabric8 Kubernetes Client release pipeline It would take input of release tag and perform release of project at that specific revision. There are some additional inputs as well with java version and additional_args (for release). Signed-off-by: Rohan Kumar --- .github/workflows/release.yml | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..0649c51aa --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Release to Maven Central + +env: + MAVEN_ARGS: -B -C -V -ntp -Dhttp.keepAlive=false -e ${{ github.event.inputs.additional_args }} + RELEASE_MAVEN_ARGS: -Prelease -DstagingProgressTimeoutMinutes=20 + OSSRHUSERNAME: ${{ secrets.OSSRHUSERNAME }} + OSSRHPASSWORD: ${{ secrets.OSSRHPASSWORD }} + SIGNINGPASSWORD: ${{ secrets.SIGNINGPASSWORD }} + +on: + workflow_dispatch: + input: + tag: + description: Tag to release + required: true + additional_args: + description: Additional Maven Args + required: false + default: '' + java_distribution: + description: Java Distribution to use for release + required: true + default: 'temurin' + +jobs: + release: + name: Release to maven central + # Cheap way to prevent accidental releases + # Modify the list to add users with release permissions + if: contains('["rhuss","rohanKanojia"]', github.actor) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs.tag }} + - name: Setup Java + uses: actions/setup-java@v4 + with: + java-version: 11 + distribution: ${{ github.event.inputs.java_distribution }} + server-id: sonatype-nexus-staging + server-username: OSSRHUSERNAME + server-password: OSSRHPASSWORD + gpg-private-key: ${{ secrets.SIGNINGKEY }} + gpg-passphrase: SIGNINGPASSWORD + - name: Build and Release Project + run: ./mvnw ${MAVEN_ARGS} ${RELEASE_MAVEN_ARGS} clean deploy