11#! /usr/bin/env groovy
22
3+ // Automated release, promotion and dependencies
4+ properties([
5+ release. addParams()
6+ ])
7+
8+ if (params. MODE == " PROMOTE" ) {
9+ release. promote(params. VERSION_TO_PROMOTE ) { sourceVersion , targetVersion , assetDirectory ->
10+ sh ' ./publish.sh'
11+ }
12+ return
13+ }
14+
315pipeline {
416 agent { label ' executor-v2' }
517
@@ -12,9 +24,29 @@ pipeline {
1224 cron(getDailyCronString())
1325 }
1426
27+ environment {
28+ MODE = release. canonicalizeMode()
29+ }
30+
1531 stages {
16- stage(' Validate Changelog' ) {
17- steps { sh ' ./bin/parse-changelog.sh' }
32+ stage (" Skip build if triggering job didn't create a release" ) {
33+ when {
34+ expression {
35+ MODE == " SKIP"
36+ }
37+ }
38+ steps {
39+ script {
40+ currentBuild. result = ' ABORTED'
41+ error(" Aborting build because this build was triggered from upstream, but no release was built" )
42+ }
43+ }
44+ }
45+ stage(' Validate Changelog and set version' ) {
46+ steps {
47+ sh ' ./bin/parse-changelog.sh'
48+ updateVersion(" CHANGELOG.md" , " ${ BUILD_NUMBER} " )
49+ }
1850 }
1951
2052 stage(' Prepare CC Report Dir' ){
@@ -107,23 +139,21 @@ pipeline {
107139 }
108140 }
109141
110- // Only publish to RubyGems if the tag begins with 'v' ex) v5.3.2
111- stage(' Publish to RubyGems?' ) {
112- agent { label ' executor-v2' }
142+ stage(' Release' ) {
143+ when {
144+ expression {
145+ MODE == " RELEASE"
146+ }
147+ }
113148
114- when { tag " v*" }
115149 steps {
116- // Clean up first
117- sh ' docker run -i --rm -v $PWD:/src -w /src alpine/git clean -fxd'
118-
119- sh ' ./publish.sh'
120-
121- // Clean up again...
122- sh ' docker run -i --rm -v $PWD:/src -w /src alpine/git clean -fxd'
123- deleteDir()
150+ release {
151+ // Clean up all but the calculated VERSION
152+ sh ' docker run -i --rm -v $PWD:/src -w /src alpine/git clean -fxd -e VERSION'
153+ sh ' ./publish.sh'
154+ }
124155 }
125156 }
126-
127157 }
128158
129159 post {
0 commit comments