Skip to content

Commit dc41f92

Browse files
committed
Externalize build properties.
See #2103.
1 parent f997110 commit dc41f92

File tree

5 files changed

+80
-28
lines changed

5 files changed

+80
-28
lines changed

Jenkinsfile

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
def p = [:]
2+
node {
3+
checkout scm
4+
p = readProperties interpolate: true, file: 'ci/pipeline.properties'
5+
}
6+
17
pipeline {
28
agent none
39

@@ -15,48 +21,57 @@ pipeline {
1521
stages {
1622
stage("Docker images") {
1723
parallel {
18-
stage('Publish JDK 8 + MongoDB 4.4') {
24+
stage('Publish JDK (main) + MongoDB 4.4') {
1925
when {
20-
changeset "ci/openjdk8-mongodb-4.4/**"
26+
anyOf {
27+
changeset "ci/openjdk8-mongodb-4.4/**"
28+
changeset "ci/pipeline.properties"
29+
}
2130
}
2231
agent { label 'data' }
2332
options { timeout(time: 30, unit: 'MINUTES') }
2433

2534
steps {
2635
script {
27-
def image = docker.build("springci/spring-data-rest-openjdk8-with-mongodb-4.4", "ci/openjdk8-mongodb-4.4/")
36+
def image = docker.build("springci/spring-data-rest-with-mongodb-4.4:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg MONGODB=${p['docker.mongodb.4.4.version']} ci/openjdk8-mongodb-4.4/")
2837
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
2938
image.push()
3039
}
3140
}
3241
}
3342
}
34-
stage('Publish JDK 11 + MongoDB 4.4') {
43+
stage('Publish JDK (next) + MongoDB 4.4') {
3544
when {
36-
changeset "ci/openjdk11-mongodb-4.4/**"
45+
anyOf {
46+
changeset "ci/openjdk11-mongodb-4.4/**"
47+
changeset "ci/pipeline.properties"
48+
}
3749
}
3850
agent { label 'data' }
3951
options { timeout(time: 30, unit: 'MINUTES') }
4052

4153
steps {
4254
script {
43-
def image = docker.build("springci/spring-data-rest-openjdk11-with-mongodb-4.4", "ci/openjdk8-mongodb-4.4/")
55+
def image = docker.build("springci/spring-data-rest-with-mongodb-4.4:${p['java.next.tag']}", "--build-arg BASE=${p['docker.java.next.image']} --build-arg MONGODB=${p['docker.mongodb.4.4.version']} ci/openjdk8-mongodb-4.4/")
4456
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
4557
image.push()
4658
}
4759
}
4860
}
4961
}
50-
stage('Publish JDK 17/ + MongoDB 4.4') {
62+
stage('Publish JDK (LTS) + MongoDB 4.4') {
5163
when {
52-
changeset "ci/openjdk17-mongodb-4.4/**"
64+
anyOf {
65+
changeset "ci/openjdk17-mongodb-4.4/**"
66+
changeset "ci/pipeline.properties"
67+
}
5368
}
5469
agent { label 'data' }
5570
options { timeout(time: 30, unit: 'MINUTES') }
5671

5772
steps {
5873
script {
59-
def image = docker.build("springci/spring-data-rest-openjdk17-with-mongodb-4.4", "ci/openjdk17-mongodb-4.4/")
74+
def image = docker.build("springci/spring-data-rest-with-mongodb-4.4:${p['java.lts.tag']}", "--build-arg BASE=${p['docker.java.lts.image']} --build-arg MONGODB=${p['docker.mongodb.4.4.version']} ci/openjdk17-mongodb-4.4/")
6075
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
6176
image.push()
6277
}
@@ -66,7 +81,7 @@ pipeline {
6681
}
6782
}
6883

69-
stage("test: baseline (jdk8)") {
84+
stage("test: baseline (main)") {
7085
when {
7186
beforeAgent(true)
7287
anyOf {
@@ -84,7 +99,7 @@ pipeline {
8499
steps {
85100
script {
86101
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
87-
docker.image('springci/spring-data-rest-openjdk8-with-mongodb-4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
102+
docker.image("springci/spring-data-rest-with-mongodb-4.4:${p['java.main.tag']}").inside(p['docker.java.inside.basic']) {
88103
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
89104
sh 'mongod --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
90105
sh 'sleep 10'
@@ -106,7 +121,7 @@ pipeline {
106121
}
107122
}
108123
parallel {
109-
stage("test: baseline (jdk11)") {
124+
stage("test: baseline (next)") {
110125
agent {
111126
label 'data'
112127
}
@@ -117,7 +132,7 @@ pipeline {
117132
steps {
118133
script {
119134
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
120-
docker.image('springci/spring-data-rest-openjdk11-with-mongodb-4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
135+
docker.image("springci/spring-data-rest-with-mongodb-4.4:${p['java.next.tag']}").inside(p['docker.java.inside.basic']) {
121136
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
122137
sh 'mongod --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
123138
sh 'sleep 10'
@@ -129,7 +144,7 @@ pipeline {
129144
}
130145
}
131146
}
132-
stage("test: baseline (JDK 17)") {
147+
stage("test: baseline (LTS)") {
133148
agent {
134149
label 'data'
135150
}
@@ -140,7 +155,7 @@ pipeline {
140155
steps {
141156
script {
142157
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
143-
docker.image('springci/spring-data-rest-openjdk17-with-mongodb-4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
158+
docker.image("springci/spring-data-rest-with-mongodb-4.4:${p['java.lts.tag']}").inside(p['docker.java.inside.basic']) {
144159
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
145160
sh 'mongod --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
146161
sh 'sleep 10'
@@ -152,7 +167,7 @@ pipeline {
152167
}
153168
}
154169
}
155-
stage("test: spring53-next (jdk8)") {
170+
stage("test: spring53-next (main)") {
156171
agent {
157172
label 'data'
158173
}
@@ -163,7 +178,7 @@ pipeline {
163178
steps {
164179
script {
165180
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
166-
docker.image('springci/spring-data-rest-openjdk8-with-mongodb-4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
181+
docker.image("springci/spring-data-rest-with-mongodb-4.4:${p['java.main.tag']}").inside(p['docker.java.inside.basic']) {
167182
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
168183
sh 'mongod --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
169184
sh 'sleep 10'
@@ -175,7 +190,7 @@ pipeline {
175190
}
176191
}
177192
}
178-
stage("test: spring53-next (JDK 17)") {
193+
stage("test: spring53-next (LTS)") {
179194
agent {
180195
label 'data'
181196
}
@@ -186,7 +201,7 @@ pipeline {
186201
steps {
187202
script {
188203
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
189-
docker.image('springci/spring-data-rest-openjdk17-with-mongodb-4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
204+
docker.image("springci/spring-data-rest-with-mongodb-4.4:${p['java.lts.tag']}").inside(p['docker.java.inside.basic']) {
190205
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
191206
sh 'mongod --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
192207
sh 'sleep 10'
@@ -221,7 +236,7 @@ pipeline {
221236
steps {
222237
script {
223238
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
224-
docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
239+
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
225240
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
226241
'-Dartifactory.server=https://repo.spring.io ' +
227242
"-Dartifactory.username=${ARTIFACTORY_USR} " +

ci/openjdk11-mongodb-4.4/Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
FROM adoptopenjdk/openjdk11:latest
1+
ARG BASE
2+
FROM ${BASE}
3+
# Any ARG statements before FROM are cleared.
4+
ARG MONGODB
25

36
ENV TZ=Etc/UTC
47
ENV DEBIAN_FRONTEND=noninteractive
@@ -10,6 +13,6 @@ RUN set -eux; \
1013
echo ${TZ} > /etc/timezone;
1114

1215
RUN apt-get update ; \
13-
apt-get install -y mongodb-org=4.4.4 mongodb-org-server=4.4.4 mongodb-org-shell=4.4.4 mongodb-org-mongos=4.4.4 mongodb-org-tools=4.4.4 ; \
16+
apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
1417
apt-get clean; \
1518
rm -rf /var/lib/apt/lists/*;

ci/openjdk17-mongodb-4.4/Dockerfile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1-
FROM openjdk:17-bullseye
1+
ARG BASE
2+
FROM ${BASE}
3+
# Any ARG statements before FROM are cleared.
4+
ARG MONGODB
25

36
ENV TZ=Etc/UTC
47
ENV DEBIAN_FRONTEND=noninteractive
58

6-
RUN sed -i -e 's/http/https/g' /etc/apt/sources.list
7-
89
RUN set -eux; \
10+
sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
11+
sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
12+
sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
913
apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 ; \
1014
apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 656408E390CFB1F5 ; \
1115
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list; \
1216
echo ${TZ} > /etc/timezone;
1317

1418
RUN apt-get update ; \
15-
apt-get install -y mongodb-org=4.4.4 mongodb-org-server=4.4.4 mongodb-org-shell=4.4.4 mongodb-org-mongos=4.4.4 mongodb-org-tools=4.4.4 ; \
19+
apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
1620
apt-get clean; \
1721
rm -rf /var/lib/apt/lists/*;

ci/openjdk8-mongodb-4.4/Dockerfile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
1-
FROM adoptopenjdk/openjdk8:latest
1+
ARG BASE
2+
FROM ${BASE}
3+
# Any ARG statements before FROM are cleared.
4+
ARG MONGODB
25

36
ENV TZ=Etc/UTC
47
ENV DEBIAN_FRONTEND=noninteractive
58

69
RUN set -eux; \
10+
sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
11+
sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
12+
sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
713
apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 ; \
814
apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 656408E390CFB1F5 ; \
915
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list; \
1016
echo ${TZ} > /etc/timezone;
1117

1218
RUN apt-get update ; \
1319
ln -T /bin/true /usr/bin/systemctl ; \
14-
apt-get install -y mongodb-org=4.4.4 mongodb-org-server=4.4.4 mongodb-org-shell=4.4.4 mongodb-org-mongos=4.4.4 mongodb-org-tools=4.4.4 ; \
20+
apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
1521
rm /usr/bin/systemctl ; \
1622
apt-get clean; \
1723
rm -rf /var/lib/apt/lists/*;

ci/pipeline.properties

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Java versions
2+
java.main.tag=8u312-b07-jdk
3+
java.next.tag=11.0.13_8-jdk
4+
java.lts.tag=17.0.1_12-jdk
5+
6+
# Docker container images - standard
7+
docker.java.main.image=eclipse-temurin:${java.main.tag}
8+
docker.java.next.image=eclipse-temurin:${java.next.tag}
9+
docker.java.lts.image=eclipse-temurin:${java.lts.tag}
10+
11+
# Supported versions of MongoDB
12+
docker.mongodb.4.0.version=4.0.23
13+
docker.mongodb.4.4.version=4.4.4
14+
docker.mongodb.5.0.version=5.0.3
15+
16+
# Supported versions of Redis
17+
docker.redis.6.version=6.2.4
18+
19+
# Supported versions of Cassandra
20+
docker.cassandra.3.version=3.11.10
21+
22+
# Docker environment settings
23+
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home
24+
docker.java.inside.docker=-u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v $HOME:/tmp/jenkins-home

0 commit comments

Comments
 (0)