forked from airlift/airlift
-
Notifications
You must be signed in to change notification settings - Fork 55
101 lines (89 loc) · 3.4 KB
/
release.yml
File metadata and controls
101 lines (89 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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 "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
- 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 -B -DreleaseVersion=${{ env.RELEASE_VERSION }} -DskipTests \
-DautoVersionSubmodules=true \
-DgenerateBackupPoms=false
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
cat ~/.m2/settings.xml
mvn -V -B -U -e -T2C deploy \
-DautoReleaseAfterClose=true \
-DkeepStagingRepositoryOnCloseRuleFailure=true \
-DkeepStagingRepositoryOnFailure=true \
-DstagingProgressTimeoutMinutes=10 \
-DskipTests \
-Poss-release
- name: Push changes and tags
run: |
git checkout master
git ls -5
git push origin master --tags