From bcaa0de77b9bd85fbbb798df1389156435cd929b Mon Sep 17 00:00:00 2001 From: unidevel Date: Tue, 18 Mar 2025 20:14:26 +0000 Subject: [PATCH 1/2] Add release action --- .github/workflows/release.yml | 127 ++++++++++++++++++++++++++++++++++ 1 file changed, 127 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..51a58357b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,127 @@ +name: Publish Release + +on: + workflow_dispatch: + inputs: + prepare_release: + description: 'Prepare release' + type: boolean + required: false + default: true + publish_artifacts: + description: 'Publish maven artifacts' + type: boolean + required: false + default: true + +env: + MAVEN_OPTS: "-Xmx1024m" + +jobs: + release: + runs-on: ubuntu-latest + environment: release + strategy: + fail-fast: true + permissions: + contents: write + packages: write + + steps: + - name: Check branch + if: ${{ github.ref != 'refs/heads/master' }} + run: echo "Invalid branch. This action can only be run on the master branch." && exit 1 + + - uses: actions/checkout@v4 + with: + token: ${{ secrets.PRESTODB_CI_TOKEN }} + ref: master + show-progress: false + fetch-depth: 5 + fetch-tags: true + + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + overwrite-settings: true + server-id: ossrh + server-username: NEXUS_USERNAME + server-password: NEXUS_PASSWORD + gpg-private-key: ${{ secrets.GPG_SECRET }} + + - name: Setup git + run: | + git config --global --add safe.directory ${{github.workspace}} + git config --global user.email "ci@lists.prestodb.io" + git config --global user.name "prestodb-ci" + git config --global alias.ls 'log --pretty=format:"%cd %h %ce: %s" --date=short --no-merges' + git config pull.rebase false + git ls -3 + + - name: Get current version + run: | + CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + echo "CURRENT_VERSION=${CURRENT_VERSION}" + echo "CURRENT_VERSION=${CURRENT_VERSION}" >> $GITHUB_ENV + + - name: Prepare release + if: ${{ inputs.prepare_release }} + run: | + mvn release:prepare -B -DskipTests \ + -DautoVersionSubmodules=true \ + -DgenerateBackupPoms=false + echo "RELEASE_VERSION=$(grep scm.tag= release.properties | cut -d'=' -f2)" >> $GITHUB_ENV + git ls -5 + + - name: Set release version + if: ${{ !inputs.prepare_release }} + env: + CURRENT_VERSION: ${{ env.CURRENT_VERSION }} + run: | + VERSION_WITHOUT_SNAPSHOT=${CURRENT_VERSION%-SNAPSHOT} + VERSION=${VERSION_WITHOUT_SNAPSHOT%.*} + RELEASE_VERSION=$((VERSION - 1)) + echo "RELEASE_VERSION=${RELEASE_VERSION}" + echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV + + - name: Set up GPG key + if: ${{ inputs.publish_artifacts }} + env: + GPG_TTY: $(tty) + GPG_PASSPHRASE: "${{ secrets.GPG_PASSPHRASE }}" + GPG_KEY_FILE: /tmp/gpg-key.txt + run: | + echo "${{ secrets.GPG_SECRET }}" > ${{ env.GPG_KEY_FILE }} + chmod 600 ${{ env.GPG_KEY_FILE }} + gpg --import --batch ${{ env.GPG_KEY_FILE }} + gpg --batch --yes --pinentry-mode loopback --passphrase "${{ secrets.GPG_PASSPHRASE }}" --sign ${{ env.GPG_KEY_FILE }} + + - name: Publish maven artifacts + if: ${{ inputs.publish_artifacts }} + env: + NEXUS_USERNAME: "${{ secrets.NEXUS_USERNAME }}" + NEXUS_PASSWORD: "${{ secrets.NEXUS_PASSWORD }}" + GPG_PASSPHRASE: "${{ secrets.GPG_PASSPHRASE }}" + RELEASE_VERSION: "${{ env.RELEASE_VERSION }}" + run: | + echo "RELEASE_VERSION=${RELEASE_VERSION}" + git checkout "${RELEASE_VERSION}" + git ls -4 + mvn -V -B -U -e -T2C deploy \ + -DautoReleaseAfterClose=true \ + -Dgpg.passphrase="${GPG_PASSPHRASE}" \ + -DkeepStagingRepositoryOnCloseRuleFailure=true \ + -DkeepStagingRepositoryOnFailure=true \ + -DskipTests \ + -Poss-release \ + -Pdeploy-to-ossrh \ + -DstagingProgressTimeoutMinutes=10 + + - name: Push changes and tags + if: ${{ inputs.prepare_release }} + run: | + git checkout master + git ls -5 + git push origin master --tags From 60968adef3b22345da62f1dd229d8385ba2caa69 Mon Sep 17 00:00:00 2001 From: unidevel Date: Wed, 19 Mar 2025 10:03:31 +0000 Subject: [PATCH 2/2] Update to JDK 17 and remove maven option --- .github/workflows/release.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51a58357b..29a0a01bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,9 +14,6 @@ on: required: false default: true -env: - MAVEN_OPTS: "-Xmx1024m" - jobs: release: runs-on: ubuntu-latest @@ -40,10 +37,10 @@ jobs: fetch-depth: 5 fetch-tags: true - - name: Set up JDK 8 + - name: Set up JDK 17 uses: actions/setup-java@v4 with: - java-version: '8' + java-version: '17' distribution: 'temurin' overwrite-settings: true server-id: ossrh