@@ -30,7 +30,17 @@ pipeline {
3030 parameters {
3131 string(name : ' branch_specifier' , defaultValue : ' stable' , description : " What branch to release from?" )
3232 booleanParam(name : ' check_branch_ci_status' , defaultValue : true , description : " Check for failing tests in the given branch (if no stable branch)?" )
33+ booleanParam(name : ' check_oss_sonatype_org' , defaultValue : true , description : " Check for the oss.sonatype.org?" )
34+ booleanParam(name : ' check_changelog' , defaultValue : true , description : " Check if the CHANGELOG.asciidoc has been updated?" )
35+ booleanParam(name : ' set_release' , defaultValue : true , description : " Set the release version?" )
36+ booleanParam(name : ' create_update_major_branch' , defaultValue : true , description : " Create or update Major Branch?" )
37+ booleanParam(name : ' create_github_draft' , defaultValue : true , description : " Create the GitHub release draft?" )
38+ booleanParam(name : ' check_artifact_maven_central' , defaultValue : true , description : " Check for artifacts are available in the Maven Central?" )
3339 booleanParam(name : ' publish_aws_lambda' , defaultValue : true , description : " Whether to upload the AWS lambda" )
40+ booleanParam(name : ' update_cloudfoundry' , defaultValue : true , description : " Upload to Cloudfoundry?" )
41+ booleanParam(name : ' build_push_docker' , defaultValue : true , description : " Build and Publish docker images?" )
42+ booleanParam(name : ' publish_github_release' , defaultValue : true , description : " Publish the GitHub release?" )
43+ booleanParam(name : ' opbeans' , defaultValue : true , description : " Update opbeans-java?" )
3444 }
3545 stages {
3646 stage(' Initializing' ){
@@ -58,6 +68,21 @@ pipeline {
5868 deleteDir()
5969 dir(" ${ BASE_DIR} " ) {
6070 unstash ' source'
71+ script {
72+ env. SNAPSHOT_VERSION = mvnVersion(showQualifiers : true )
73+ env. RELEASE_VERSION_NO_SNAPSHOT = snapshot_version. minus(' -SNAPSHOT' )
74+ env. USER_RELEASE_VERSION = input(message : " Please enter version to release:" , parameters : [[
75+ $class : ' StringParameterDefinition' ,
76+ name : ' Release version' ,
77+ defaultValue : " ${ env.RELEASE_VERSION_NO_SNAPSHOT} " ,
78+ description : " Current project version is ${ env.SNAPSHOT_VERSION} , will be released as ${ env.RELEASE_VERSION_NO_SNAPSHOT} if unchanged. Input release version without '-SNAPSHOT' suffix"
79+ ]])
80+ env. RELEASE_TAG = " v" + env. USER_RELEASE_VERSION
81+ env. RELEASE_VERSION = env. USER_RELEASE_VERSION
82+ env. BRANCH_DOT_X = env. USER_RELEASE_VERSION . substring(0 , env. USER_RELEASE_VERSION . indexOf(' .' ))+ ' .x'
83+ env. RELEASE_AWS_LAMBDA_VERSION = ' -ver-' + env. USER_RELEASE_VERSION . replaceAll(' \\ .' , ' -' )
84+ env. SAME_VERSION = env. RELEASE_VERSION_NO_SNAPSHOT . equals(env. USER_RELEASE_VERSION )
85+ }
6186 }
6287 }
6388 }
@@ -67,6 +92,7 @@ pipeline {
6792 options { skipDefaultCheckout () }
6893 stages{
6994 stage(' Check oss.sonatype.org' ) {
95+ when { expression { params. check_oss_sonatype_org } }
7096 steps {
7197 // If this fails, an exception should be thrown and execution will halt
7298 dir(" ${ BASE_DIR} " ){
@@ -96,6 +122,7 @@ pipeline {
96122 }
97123 }
98124 stage(' Require confirmation that CHANGELOG.asciidoc has been updated' ) {
125+ when { expression { params. check_changelog } }
99126 steps {
100127 input(message : """
101128 Update CHANGELOG.asciidoc to reflect the new version release:
@@ -111,32 +138,18 @@ pipeline {
111138 }
112139 }
113140 stage(' Set release version' ) {
141+ when { expression { params. set_release } }
114142 steps {
115143 dir(" ${ BASE_DIR} " ){
116- script {
117- def snapshot_version = mvnVersion(showQualifiers : true )
118- def release_version = snapshot_version. minus(' -SNAPSHOT' )
119- def user_release_version = input(message : " Please enter version to release:" , parameters : [[
120- $class : ' StringParameterDefinition' ,
121- name : ' Release version' ,
122- defaultValue : " ${ release_version} " ,
123- description : " Current project version is ${ snapshot_version} , will be released as ${ release_version} if unchanged. Input release version without '-SNAPSHOT' suffix"
124- ]])
125-
126- if ( release_version. equals(user_release_version) ) {
127- echo " changing project version '${ snapshot_version} ' not required to release ${ release_version} "
128- } else {
129- echo " changing project version from '${ snapshot_version} ' to '${ user_release_version} ' to prepare release ${ user_release_version} ."
130- sh(label : " mavenVersionUpdate" , script : " ./mvnw --batch-mode release:update-versions -DdevelopmentVersion=${ user_release_version} -SNAPSHOT" )
131- sh(script : " git commit -a -m 'Version bump ${ user_release_version} '" )
132- sh(label : ' debug git user' , script : ' git --no-pager log -1' )
133- gitPush()
134- }
135-
136- env. RELEASE_TAG = " v" + user_release_version
137- env. RELEASE_VERSION = user_release_version
138- env. BRANCH_DOT_X = user_release_version. substring(0 , user_release_version. indexOf(' .' ))+ ' .x'
139- env. RELEASE_AWS_LAMBDA_VERSION = ' -ver-' + user_release_version. replaceAll(' \\ .' , ' -' )
144+ whenTrue(env. SAME_VERSION . equals(' true' )) {
145+ echo " changing project version '${ snapshot_version} ' not required to release ${ release_version} "
146+ }
147+ whenFalse(env. SAME_VERSION . equals(' true' )) {
148+ echo " changing project version from '${ snapshot_version} ' to '${ user_release_version} ' to prepare release ${ user_release_version} ."
149+ sh(label : " mavenVersionUpdate" , script : " ./mvnw --batch-mode release:update-versions -DdevelopmentVersion=${ user_release_version} -SNAPSHOT" )
150+ sh(script : " git commit -a -m 'Version bump ${ user_release_version} '" )
151+ sh(label : ' debug git user' , script : ' git --no-pager log -1' )
152+ gitPush()
140153 }
141154 }
142155 }
@@ -156,6 +169,7 @@ pipeline {
156169 }
157170 }
158171 stage(' Major Branch create/update' ) {
172+ when { expression { params. create_update_major_branch } }
159173 steps {
160174 dir(" ${ BASE_DIR} " ) {
161175 script {
@@ -171,9 +185,7 @@ pipeline {
171185 }
172186 }
173187 stage(' Publish AWS Lambda' ) {
174- when {
175- expression { params. publish_aws_lambda }
176- }
188+ when { expression { params. publish_aws_lambda } }
177189 environment {
178190 SOURCE_AWS_FILE = " elastic-apm-java-aws-lambda-layer-${ RELEASE_VERSION} .zip"
179191 PATH_PREFIX = ' jobs/elastic+apm-agent-java+release/src/github.com/elastic/apm-agent-java/target/checkout/elastic-apm-agent/target'
@@ -200,6 +212,7 @@ pipeline {
200212 }
201213 }
202214 stage(' Create GitHub release draft' ) {
215+ when { expression { params. create_github_draft } }
203216 steps {
204217 dir(" ${ BASE_DIR} " ){
205218 script {
@@ -221,6 +234,7 @@ pipeline {
221234 }
222235 }
223236 stage(' Wait for artifact to be available in Maven Central' ) {
237+ when { expression { params. check_artifact_maven_central } }
224238 steps {
225239 dir(" ${ BASE_DIR} " ){
226240 script {
@@ -236,6 +250,7 @@ pipeline {
236250 }
237251 }
238252 stage(' Update Cloudfoundry' ) {
253+ when { expression { params. update_cloudfoundry } }
239254 steps {
240255 dir(" ${ BASE_DIR} " ){
241256 sh(script : " .ci/release/update_cloudfoundry.sh ${ RELEASE_VERSION} " )
@@ -244,6 +259,7 @@ pipeline {
244259 }
245260 }
246261 stage(' Build and push Docker images' ) {
262+ when { expression { params. build_push_docker } }
247263 steps {
248264 dir(" ${ BASE_DIR} " ){
249265 // fetch agent artifact from remote repository
@@ -257,6 +273,7 @@ pipeline {
257273 }
258274 }
259275 stage(' Publish release on GitHub' ) {
276+ when { expression { params. publish_github_release } }
260277 steps {
261278 dir(" ${ BASE_DIR} " ){
262279 waitUntil(initialRecurrencePeriod : 60000 ) {
@@ -272,6 +289,7 @@ pipeline {
272289 }
273290 }
274291 stage(' Opbeans' ) {
292+ when { expression { params. opbeans } }
275293 environment {
276294 // The gitPush and gitCreateTag steps require this env variable
277295 REPO_NAME = ' opbeans-java'
0 commit comments