@@ -3,10 +3,20 @@ name: Release ScyllaDB Java Driver
33on :
44 workflow_dispatch :
55 inputs :
6- dryrun :
6+ dry-run :
77 type : boolean
8- description : ' dryrun: run without pushing SCM changes to upstream'
9- default : true
8+ description : ' dry-run: run without pushing SCM changes to upstream'
9+ default : false
10+
11+ skip-tests :
12+ type : boolean
13+ description : ' skip-tests: do not run tests while releasing'
14+ default : false
15+
16+ target-tag :
17+ type : string
18+ description : ' target-tag: tag or branch name to release. Use to to re-release failed releases'
19+ default : scylla-3.x
1020
1121jobs :
1222 release :
@@ -20,44 +30,79 @@ jobs:
2030 MVNCMD : mvn -B -X -ntp
2131
2232 steps :
23- - name : Checkout Repository
24- uses : actions/checkout@v4
25-
26- - name : Set up Java
27- uses : actions/setup-java@v4
28- with :
29- java-version : ' 8'
30- distribution : ' temurin'
31- server-id : ossrh
32- gpg-private-key : ${{ secrets.GPG_PRIVATE_KEY }}
33- server-username : OSSRH_USERNAME
34- server-password : OSSRH_PASSWORD
35-
36- - name : Configure Git user
37- run : |
38- git config user.name "ScyllaDB Promoter"
39- git config user.email "[email protected] " 40-
41- - name : Clean project
42- run : $MVNCMD clean
43-
44- - name : Clean release
45- run : $MVNCMD release:clean
46-
47- - name : Prepare release
48- env :
49- GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
50- run : $MVNCMD release:prepare -DpushChanges=false -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}
51-
52- - name : Perform release
53- env :
54- GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
55- OSSRH_USERNAME : ${{ secrets.OSSRH_USERNAME }}
56- OSSRH_PASSWORD : ${{ secrets.OSSRH_PASSWORD }}
57- run : $MVNCMD release:perform -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}
58-
59- - name : Push changes to SCM
60- if : ${{ github.event.inputs.dryrun == 'false' }}
61- run : |
62- git status && git log -3
63- git push origin --follow-tags -v
33+ - name : Checkout Repository
34+ uses : actions/checkout@v4
35+
36+ - name : Checkout Code One Commit Before ${{ inputs.target-tag }}
37+ if : inputs.target-tag != 'scylla-3.x'
38+ run : |
39+ git fetch --prune --unshallow || true
40+ git checkout ${{ inputs.target-tag }}~1
41+ git tag -d ${{ inputs.target-tag }}
42+
43+ - name : Set up Java
44+ uses : actions/setup-java@v4
45+ with :
46+ java-version : ' 11'
47+ distribution : ' temurin'
48+ server-id : central
49+ gpg-private-key : ${{ secrets.GPG_PRIVATE_KEY }}
50+ server-username : SONATYPE_TOKEN_USERNAME
51+ server-password : SONATYPE_TOKEN_PASSWORD
52+
53+ - name : Configure Git user
54+ run : |
55+ git config user.name "ScyllaDB Promoter"
56+ git config user.email "[email protected] " 57+
58+ - name : Clean project
59+ run : $MVNCMD clean
60+
61+ - name : Clean release
62+ run : $MVNCMD release:clean
63+
64+ - name : Prepare release
65+ env :
66+ GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
67+ run : |
68+ if [[ "${{ inputs.skip-tests }}" == "true" ]]; then
69+ MAVEN_OPTS="${MAVEN_OPTS} -DskipTests=true -DskipITs=true"
70+ fi
71+ export MAVEN_OPTS
72+ $MVNCMD release:prepare -DpushChanges=false -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}
73+
74+ - name : Perform release
75+ env :
76+ GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
77+ SONATYPE_TOKEN_USERNAME : ${{ secrets.SONATYPE_TOKEN_USERNAME }}
78+ SONATYPE_TOKEN_PASSWORD : ${{ secrets.SONATYPE_TOKEN_PASSWORD }}
79+ run : |
80+ CMD_OPTS=""
81+ if [[ "${{ inputs.dry-run }}" != "true" ]]; then
82+ CMD_OPTS="-Drelease.autopublish=true"
83+ fi
84+ if [[ "${{ inputs.skip-tests }}" == "true" ]]; then
85+ MAVEN_OPTS="${MAVEN_OPTS} -DskipTests=true -DskipITs=true"
86+ fi
87+ export MAVEN_OPTS
88+ $MVNCMD release:perform $CMD_OPTS -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} > >(tee /tmp/logs-stdout.log) 2> >(tee /tmp/logs-stderr.log)
89+
90+ - name : Upload stdout.log
91+ if : failure()
92+ uses : actions/upload-artifact@v4
93+ with :
94+ name : maven-stdout
95+ path : /tmp/logs-stdout.log
96+
97+ - name : Upload stderr.log
98+ if : failure()
99+ uses : actions/upload-artifact@v4
100+ with :
101+ name : maven-stderr
102+ path : /tmp/logs-stderr.log
103+
104+ - name : Push changes to SCM
105+ if : ${{ inputs.dry-run == 'false' && inputs.target-tag == 'scylla-3.x' }}
106+ run : |
107+ git status && git log -3
108+ git push origin --follow-tags -v
0 commit comments