Skip to content

Commit cb6f9f0

Browse files
committed
Externalize build properties.
By reading a properties file from an external location, it is possible to inject a consistent set of properties from Spring Data Build. This also supports repeatable builds. Closes #3949.
1 parent c7563ab commit cb6f9f0

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

Jenkinsfile

+16-10
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

@@ -23,7 +29,7 @@ pipeline {
2329

2430
steps {
2531
script {
26-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-5.0.0", "ci/openjdk8-mongodb-5.0/")
32+
def image = docker.build(p['docker.java.main.mongodb.5.0.name'], "ci/openjdk8-mongodb-5.0/")
2733
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
2834
image.push()
2935
}
@@ -39,7 +45,7 @@ pipeline {
3945

4046
steps {
4147
script {
42-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-4.0.23", "ci/openjdk8-mongodb-4.0/")
48+
def image = docker.build(p['docker.java.main.mongodb.4.0.name'], "ci/openjdk8-mongodb-4.0/")
4349
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
4450
image.push()
4551
}
@@ -55,7 +61,7 @@ pipeline {
5561

5662
steps {
5763
script {
58-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-4.4.4", "ci/openjdk8-mongodb-4.4/")
64+
def image = docker.build(p['docker.java.main.mongodb.4.4.name'], "ci/openjdk8-mongodb-4.4/")
5965
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
6066
image.push()
6167
}
@@ -71,7 +77,7 @@ pipeline {
7177

7278
steps {
7379
script {
74-
def image = docker.build("springci/spring-data-openjdk16-with-mongodb-4.4.4", "ci/openjdk16-mongodb-4.4/")
80+
def image = docker.build(p['docker.java.next.mongodb.4.4.name'], "ci/openjdk16-mongodb-4.4/")
7581
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
7682
image.push()
7783
}
@@ -99,7 +105,7 @@ pipeline {
99105
steps {
100106
script {
101107
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
102-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.0.23:latest').inside('-v $HOME:/tmp/jenkins-home') {
108+
docker.image(p['docker.java.main.mongodb.4.0.image']).inside(p['docker.java.inside.basic']) {
103109
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
104110
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
105111
sh 'sleep 10'
@@ -132,7 +138,7 @@ pipeline {
132138
steps {
133139
script {
134140
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
135-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.0.23:latest').inside('-v $HOME:/tmp/jenkins-home') {
141+
docker.image(p['docker.java.main.mongodb.4.0.image']).inside(p['docker.java.inside.basic']) {
136142
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
137143
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
138144
sh 'sleep 10'
@@ -156,7 +162,7 @@ pipeline {
156162
steps {
157163
script {
158164
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
159-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
165+
docker.image(p['docker.java.main.mongodb.4.4.image']).inside(p['docker.java.inside.basic']) {
160166
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
161167
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
162168
sh 'sleep 10'
@@ -180,7 +186,7 @@ pipeline {
180186
steps {
181187
script {
182188
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
183-
docker.image('springci/spring-data-openjdk8-with-mongodb-5.0.0:latest').inside('-v $HOME:/tmp/jenkins-home') {
189+
docker.image(p['docker.java.main.mongodb.5.0.image']).inside(p['docker.java.inside.basic']) {
184190
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
185191
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
186192
sh 'sleep 10'
@@ -204,7 +210,7 @@ pipeline {
204210
steps {
205211
script {
206212
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
207-
docker.image('springci/spring-data-openjdk16-with-mongodb-4.4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
213+
docker.image(p['docker.java.next.mongodb.4.4.image']).inside(p['docker.java.inside.basic']) {
208214
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
209215
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
210216
sh 'sleep 10'
@@ -239,7 +245,7 @@ pipeline {
239245
steps {
240246
script {
241247
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
242-
docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
248+
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
243249
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -v'
244250
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
245251
'-Dartifactory.server=https://repo.spring.io ' +

ci/pipeline.properties

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Docker container images - standard
2+
docker.java.main.image=adoptopenjdk/openjdk8:latest
3+
docker.java.next.image=adoptopenjdk/openjdk11:latest
4+
docker.java.lts.image=openjdk:17-bullseye
5+
6+
# Docker container images - MongoDB
7+
docker.java.main.mongodb.5.0.name=springci/spring-data-openjdk8-with-mongodb-5.0.0
8+
docker.java.main.mongodb.4.0.name=springci/spring-data-openjdk8-with-mongodb-4.0.23
9+
docker.java.main.mongodb.4.4.name=springci/spring-data-openjdk8-with-mongodb-4.4.4
10+
docker.java.next.mongodb.4.4.name=springci/spring-data-openjdk16-with-mongodb-4.4.4
11+
12+
docker.java.main.mongodb.5.0.image=${docker.java.main.mongodb.5.0.name}:latest
13+
docker.java.main.mongodb.4.0.image=${docker.java.main.mongodb.4.0.name}:latest
14+
docker.java.main.mongodb.4.4.image=${docker.java.main.mongodb.4.4.name}:latest
15+
docker.java.next.mongodb.4.4.image=${docker.java.next.mongodb.4.4.name}:latest
16+
17+
# Docker container images - Redis
18+
docker.java.main.redis.6.name=springci/spring-data-openjdk8-with-redis-6.2
19+
docker.java.lts.redis.6.name=springci/spring-data-openjdk17-with-redis-6.2
20+
21+
docker.java.main.redis.6.image=${docker.java.main.redis.6.name}:latest
22+
docker.java.lts.redis.6.image=${docker.java.lts.redis.6.name}:latest
23+
24+
# Docker container images - Cassandra
25+
docker.java.main.cassandra.3.name=springci/spring-data-openjdk8-cassandra-3.11
26+
docker.java.next.cassandra.3.name=springci/spring-data-openjdk11-8-cassandra-3.11
27+
docker.java.lts.cassandra.3.name=springci/spring-data-openjdk17-8-cassandra-3.11
28+
29+
docker.java.main.cassandra.3.image=${docker.java.main.cassandra.3.name}:latest
30+
docker.java.next.cassandra.3.image=${docker.java.next.cassandra.3.name}:latest
31+
docker.java.lts.cassandra.3.image=${docker.java.lts.cassandra.3.name}:latest
32+
33+
34+
# Docker environment settings
35+
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home
36+
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
37+
38+

0 commit comments

Comments
 (0)