Skip to content

Commit aaf8567

Browse files
committed
Call build.sh from Jenkinsfile
1 parent 854f0a9 commit aaf8567

File tree

2 files changed

+56
-70
lines changed

2 files changed

+56
-70
lines changed

Jenkinsfile

+13-53
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,6 @@ pipeline {
2525
booleanParam(name: 'DRY_RUN', defaultValue: false, description: 'Whether the release steps should actually push changes to git and maven repositories, or not.')
2626
}
2727

28-
environment {
29-
POM='pom.xml'
30-
MAVEN_OPTS='-Xmx1024m -Xms256m -XshowSettings:vm -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
31-
VERSIONS_MAVEN_PLUGIN = latest_maven_release_gav('org.codehaus.mojo', 'versions-maven-plugin')
32-
MAVEN_DEPENDENCY_PLUGIN = latest_maven_release_gav('org.apache.maven.plugins', 'maven-dependency-plugin')
33-
ARTIFACT_ID = sh(
34-
script: "xml sel -N mvn=\"http://maven.apache.org/POM/4.0.0\" -t -v \"/mvn:project/mvn:artifactId\" \"${env.POM}\"",
35-
returnStdout: true
36-
)
37-
GROUP_ID = sh(
38-
script: "xml sel -N mvn=\"http://maven.apache.org/POM/4.0.0\" -t -v \"(/mvn:project/mvn:groupId|/mvn:project/mvn:parent/mvn:groupId)[last()]\" \"${env.POM}\"",
39-
returnStdout: true
40-
)
41-
}
42-
4328
tools {
4429
jdk 'temurin-jdk17-latest'
4530
}
@@ -58,75 +43,50 @@ pipeline {
5843
}
5944
steps {
6045
sh '''
61-
"${WORKSPACE}/mvnw" "${VERSIONS_MAVEN_PLUGIN}:set" -DnewVersion="${RELEASE_VERSION}" -DgenerateBackupPoms=false -f "${POM}"
62-
63-
git config user.email "[email protected]"
64-
git config user.name "CBI Bot"
65-
git config --local credential.helper "!f() { echo username=\\$GIT_AUTH_USR; echo password=\\$GIT_AUTH_PSW; }; f"
66-
67-
git add --all
68-
git commit -m "Prepare release ${RELEASE_VERSION}"
69-
git tag "v${RELEASE_VERSION}" -m "Release ${RELEASE_VERSION}"
70-
71-
# quick check that we don't depend on SNAPSHOT anymore
72-
if "${WORKSPACE}/mvnw" "${MAVEN_DEPENDENCY_PLUGIN}:list" -f "${POM}" | grep SNAPSHOT; then
73-
>&2 echo "ERROR: At least one dependency to a 'SNAPSHOT' version has been found from '${POM}'"
74-
>&2 echo "ERROR: It is forbidden for releasing"
75-
exit 1
76-
fi
77-
78-
if grep SNAPSHOT "${POM}"; then
79-
>&2 echo "ERROR: At least one 'SNAPSHOT' string has been found in '${POM}'"
80-
>&2 echo "ERROR: It is forbidden for releasing"
81-
exit 1
82-
fi
46+
build.sh prepare_release "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"
47+
build.sh check_snapshot_deps "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"
8348
'''
8449
}
8550
}
8651

8752
stage('Display plugin/dependency updates') {
8853
steps {
8954
sh '''
90-
"${WORKSPACE}/mvnw" "${VERSIONS_MAVEN_PLUGIN}:display-plugin-updates" -f "${POM}"
91-
"${WORKSPACE}/mvnw" "${VERSIONS_MAVEN_PLUGIN}:display-dependency-updates" -f "${POM}"
55+
build.sh show_dep_updates "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"
9256
'''
9357
}
9458
}
9559

9660
stage('Build') {
9761
steps {
98-
sh '"${WORKSPACE}/mvnw" clean verify -f "${POM}"'
62+
sh 'build.sh build "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"'
9963
archiveArtifacts 'webservice/**/target/*.jar'
10064
junit '**/target/surefire-reports/*.xml'
10165
}
10266
}
10367

104-
stage('Deploy') {
68+
stage('Push tag to repository') {
10569
when {
10670
expression {
107-
env.BRANCH_NAME == 'main' && env.DRY_RUN != 'true'
71+
env.BRANCH_NAME == 'main' && params.RELEASE_VERSION != '' && params.NEXT_DEVELOPMENT_VERSION != ''
10872
}
10973
}
74+
environment {
75+
GIT_AUTH = credentials('github-bot')
76+
}
11077
steps {
111-
sh '''
112-
"${WORKSPACE}/mvnw" deploy -f "${POM}"
113-
'''
78+
sh 'build.sh push_release "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"'
11479
}
11580
}
11681

117-
stage('Push tag to repository') {
82+
stage('Deploy') {
11883
when {
11984
expression {
120-
env.BRANCH_NAME == 'main' && params.RELEASE_VERSION != '' && params.NEXT_DEVELOPMENT_VERSION != '' && env.DRY_RUN != 'true'
85+
env.BRANCH_NAME == 'main'
12186
}
12287
}
123-
environment {
124-
GIT_AUTH = credentials('github-bot')
125-
}
12688
steps {
127-
sh'''
128-
git push origin "v${RELEASE_VERSION}"
129-
'''
89+
sh 'build.sh deploy "${RELEASE_VERSION}" "${NEXT_DEVELOPMENT_VERSION}"'
13090
}
13191
}
13292

build.sh

+43-17
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ shopt -s nullglob
2626

2727
SCRIPT_FOLDER="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
2828

29-
export RELEASE_VERSION="${RELEASE_VERSION:-}"
30-
export NEXT_DEVELOPMENT_VERSION="${NEXT_DEVELOPMENT_VERSION:-}"
31-
export POM="${2:-pom.xml}"
29+
export RELEASE_VERSION="${2:-}"
30+
export NEXT_DEVELOPMENT_VERSION="${3:-}"
31+
export POM="${4:-pom.xml}"
3232

33-
export MAVEN_OPTS="${MAVEN_OPTS:--B -C -U -e -Xmx1024m -Xms256m -XX:MaxPermSize=256M}"
33+
export MAVEN_OPTS="${MAVEN_OPTS:--Xmx1024m -Xms256m -XshowSettings:vm -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn}"
3434
export GIT_BRANCH="${GIT_BRANCH:-main}"
3535
export DRY_RUN="${DRY_RUN:-false}"
3636

@@ -75,8 +75,8 @@ prepare_release() {
7575
git config --global user.email "[email protected]"
7676
git config --global user.name "CBI Bot"
7777
git add --all
78-
git commit -m "Prepare release ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
79-
git tag "${GROUP_ID}_${ARTIFACT_ID}_${RELEASE_VERSION}" -m "Release ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
78+
git commit -m "Prepare release ${RELEASE_VERSION}"
79+
git tag "v${RELEASE_VERSION}" -m "Release ${RELEASE_VERSION}"
8080
fi
8181
}
8282

@@ -95,23 +95,26 @@ check_snapshot_deps() {
9595
fi
9696
}
9797

98-
# Push all changes made to the pom and the release tag
99-
push_release() {
100-
if [ "${DRY_RUN}" = true ]; then
101-
>&2 echo "DRY RUN: git push origin \"${GROUP_ID}_${ARTIFACT_ID}_${RELEASE_VERSION}\""
102-
>&2 echo "DRY RUN: git push origin \"${GIT_BRANCH}\""
103-
else
104-
git push origin "${GROUP_ID}_${ARTIFACT_ID}_${RELEASE_VERSION}"
105-
git push origin "${GIT_BRANCH}"
106-
fi
98+
show_dep_updates() {
99+
"${SCRIPT_FOLDER}/mvnw" "${VERSIONS_MAVEN_PLUGIN}:display-plugin-updates" -f "${POM}"
100+
"${SCRIPT_FOLDER}/mvnw" "${VERSIONS_MAVEN_PLUGIN}:display-dependency-updates" -f "${POM}"
107101
}
108102

109103
# build artifacts to be deployed
110104
build() {
111105
if [ "${DRY_RUN}" = true ]; then
112-
>&2 echo "DRY RUN: ${SCRIPT_FOLDER}/mvnw -B -C -U -e clean verify -f \"${POM}\""
106+
>&2 echo "DRY RUN: ${SCRIPT_FOLDER}/mvnw clean verify -f \"${POM}\""
113107
else
114-
"${SCRIPT_FOLDER}/mvnw" -B -C -U -e clean verify -f "${POM}"
108+
"${SCRIPT_FOLDER}/mvnw" clean verify -f "${POM}"
109+
fi
110+
}
111+
112+
# Push all changes made to the pom and the release tag
113+
push_release() {
114+
if [ "${DRY_RUN}" = true ]; then
115+
>&2 echo "DRY RUN: git push origin \"v${RELEASE_VERSION}\""
116+
else
117+
git push origin "v${RELEASE_VERSION}"
115118
fi
116119
}
117120

@@ -140,5 +143,28 @@ prepare_next_dev() {
140143
fi
141144
}
142145

146+
main() {
147+
echo "Prepare release"
148+
prepare_release
149+
echo
150+
echo "Check snapshots dependencies"
151+
check_snapshot_deps
152+
echo
153+
echo "Display plugin/dependency updates"
154+
show_dep_updates
155+
echo
156+
echo "Build"
157+
build
158+
echo
159+
echo "Push tag to repository"
160+
push_release
161+
echo
162+
echo "Deploy"
163+
deploy
164+
echo
165+
echo "Prepare and push next development cycle"
166+
prepare_next_dev
167+
}
168+
143169
"${@}"
144170

0 commit comments

Comments
 (0)