Skip to content

Commit 26f0b39

Browse files
authored
release: less interactive and allow running stages individually (#2790)
1 parent 3adaf4a commit 26f0b39

File tree

1 file changed

+45
-27
lines changed

1 file changed

+45
-27
lines changed

.ci/release/Jenkinsfile

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)