@@ -3,10 +3,20 @@ name: Release ScyllaDB Java Driver
3
3
on :
4
4
workflow_dispatch :
5
5
inputs :
6
- dryrun :
6
+ dry-run :
7
7
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 : master
10
20
11
21
jobs :
12
22
release :
@@ -20,44 +30,79 @@ jobs:
20
30
MVNCMD : mvn -B -X -ntp
21
31
22
32
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 != 'master'
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 == 'master' }}
106
+ run : |
107
+ git status && git log -3
108
+ git push origin --follow-tags -v
0 commit comments