Publish release #4
This file contains hidden or 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: Publish release | |
on: | |
workflow_dispatch: | |
env: | |
JAVA_VERSION: ${{ vars.JAVA_VERSION }} | |
JAVA_DISTRIBUTION: ${{ vars.JAVA_DISTRIBUTION }} | |
MAVEN_OPTS: ${{ vars.MAVEN_OPTS }} | |
GPG_KEY_FILE: /tmp/gpg-key.txt | |
jobs: | |
publish-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 | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.PRESTODB_CI_TOKEN }} | |
show-progress: false | |
fetch-depth: 0 | |
ref: master | |
- name: Set up JDK ${{ env.JAVA_DISTRIBUTION }}/${{ env.JAVA_VERSION }} | |
uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
overwrite-settings: true | |
server-id: ossrh | |
server-username: NEXUS_USERNAME | |
server-password: NEXUS_PASSWORD | |
gpg-private-key: ${{ secrets.GPG_SECRET }} | |
- name: Set up git | |
run: | | |
git config --global --add safe.directory ${{github.workspace}} | |
git config --global user.email "[email protected]" | |
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 | |
- name: Get release version | |
id: get-version | |
run: | | |
RELEASE_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | tail -n 1 | sed 's/-SNAPSHOT//') | |
echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV | |
echo "RELEASE_VERSION=$RELEASE_VERSION" | |
echo "In case cut release failed, please delete the tag ${RELEASE_VERSION} manually" | |
- name: Prepare release | |
run: | | |
git reset --hard | |
mvn release:prepare -DreleaseVersion=${{ env.RELEASE_VERSION }} | |
grep -m 1 "<version>" pom.xml | |
git ls -5 | |
- name: Set up GPG key | |
env: | |
GPG_TTY: $(tty) | |
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 release | |
env: | |
NEXUS_USERNAME: "${{ secrets.NEXUS_USERNAME }}" | |
NEXUS_PASSWORD: "${{ secrets.NEXUS_PASSWORD }}" | |
GPG_PASSPHRASE: "${{ secrets.GPG_PASSPHRASE }}" | |
run: | | |
git checkout ${{ env.RELEASE_VERSION }} | |
git ls -5 | |
mvn -V -B -U -e -T2C deploy \ | |
-Poss-release \ | |
-DautoReleaseAfterClose=true \ | |
-DkeepStagingRepositoryOnCloseRuleFailure=true \ | |
-DkeepStagingRepositoryOnFailure=true \ | |
-DstagingProgressTimeoutMinutes=10 | |
- name: Push changes and tags | |
run: | | |
git checkout master | |
git ls -5 | |
git push origin master --tags |