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 #2245.
This commit is contained in:
committed by
Mark Paluch
parent
0320f3f8a7
commit
50f8ae4a29
29
Jenkinsfile
vendored
29
Jenkinsfile
vendored
@@ -1,3 +1,9 @@
|
||||
def p = [:]
|
||||
node {
|
||||
checkout scm
|
||||
p = readProperties interpolate: true, file: 'ci/pipeline.properties'
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
@@ -14,11 +20,12 @@ pipeline {
|
||||
stages {
|
||||
stage("Docker images") {
|
||||
parallel {
|
||||
stage('Publish OpenJDK 8 + Redis 6.2 docker image') {
|
||||
stage('Publish OpenJDK (main) + Redis 6.2 docker image') {
|
||||
when {
|
||||
anyOf {
|
||||
changeset "ci/openjdk8-redis-6.2/**"
|
||||
changeset "ci/openjdk8-redis-6.2/Dockerfile"
|
||||
changeset "Makefile"
|
||||
changeset "ci/pipeline.properties"
|
||||
}
|
||||
}
|
||||
agent { label 'data' }
|
||||
@@ -26,7 +33,7 @@ pipeline {
|
||||
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-data-openjdk8-with-redis-6.2", "-f ci/openjdk8-redis-6.2/Dockerfile .")
|
||||
def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg REDIS=${p['docker.redis.6.version']} -f ci/openjdk8-redis-6.2/Dockerfile .")
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
image.push()
|
||||
}
|
||||
@@ -38,6 +45,7 @@ pipeline {
|
||||
anyOf {
|
||||
changeset "ci/openjdk11-redis-6.2/**"
|
||||
changeset "Makefile"
|
||||
changeset "ci/pipeline.properties"
|
||||
}
|
||||
}
|
||||
agent { label 'data' }
|
||||
@@ -45,7 +53,7 @@ pipeline {
|
||||
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-data-openjdk11-with-redis-6.2", "-f ci/openjdk11-redis-6.2/Dockerfile .")
|
||||
def image = docker.build("springci/spring-data-openjdk11-with-redis-6.2:${p['java.11.tag']}", "--build-arg BASE=${p['docker.java.11.image']} --build-arg REDIS=${p['docker.redis.6.version']} -f ci/openjdk11-redis-6.2/Dockerfile .")
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
image.push()
|
||||
}
|
||||
@@ -57,6 +65,7 @@ pipeline {
|
||||
anyOf {
|
||||
changeset "ci/openjdk15-redis-6.2/**"
|
||||
changeset "Makefile"
|
||||
changeset "ci/pipeline.properties"
|
||||
}
|
||||
}
|
||||
agent { label 'data' }
|
||||
@@ -64,7 +73,7 @@ pipeline {
|
||||
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-data-openjdk15-with-redis-6.2", "-f ci/openjdk15-redis-6.2/Dockerfile .")
|
||||
def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.15.tag']}", "--build-arg BASE=${p['docker.java.15.image']} --build-arg REDIS=${p['docker.redis.6.version']} -f ci/openjdk17-redis-6.2/Dockerfile .")
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
image.push()
|
||||
}
|
||||
@@ -74,7 +83,7 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage("test: baseline (jdk8)") {
|
||||
stage("test: baseline (main)") {
|
||||
when {
|
||||
anyOf {
|
||||
branch '2.5.x'
|
||||
@@ -91,7 +100,7 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
docker.image('springci/spring-data-openjdk8-with-redis-6.2:latest').inside('-v $HOME:/tmp/jenkins-home') {
|
||||
docker.image("springci/spring-data-with-redis-6.2:${p['java.main.tag']}").inside(p['docker.java.inside.basic']) {
|
||||
sh 'PROFILE=none LONG_TESTS=true ci/test.sh'
|
||||
}
|
||||
}
|
||||
@@ -118,7 +127,7 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
docker.image('springci/spring-data-openjdk11-with-redis-6.2:latest').inside('-v $HOME:/tmp/jenkins-home') {
|
||||
docker.image("springci/spring-data-with-redis-6.2:${p['java.11.tag']}").inside(p['docker.java.inside.basic']) {
|
||||
sh 'PROFILE=java11 ci/test.sh'
|
||||
}
|
||||
}
|
||||
@@ -136,7 +145,7 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
docker.image('springci/spring-data-openjdk15-with-redis-6.2:latest').inside('-v $HOME:/tmp/jenkins-home') {
|
||||
docker.image("springci/spring-data-with-redis-6.2:${p['java.15.tag']}").inside(p['docker.java.inside.basic']) {
|
||||
sh 'PROFILE=java11 ci/test.sh'
|
||||
}
|
||||
}
|
||||
@@ -165,7 +174,7 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
|
||||
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
|
||||
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
|
||||
'-Dartifactory.server=https://repo.spring.io ' +
|
||||
"-Dartifactory.username=${ARTIFACTORY_USR} " +
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
FROM adoptopenjdk/openjdk11:latest
|
||||
ARG BASE
|
||||
FROM ${BASE}
|
||||
# Any ARG statements before FROM are cleared.
|
||||
ARG REDIS
|
||||
|
||||
# Copy Spring Data Redis's Makefile into the container
|
||||
COPY ./Makefile /
|
||||
|
||||
RUN set -eux; \
|
||||
# sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y build-essential ; \
|
||||
make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=6.2.1; \
|
||||
make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=${REDIS}; \
|
||||
chmod -R o+rw work; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*;
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
FROM adoptopenjdk/openjdk8:latest
|
||||
ARG BASE
|
||||
FROM ${BASE}
|
||||
# Any ARG statements before FROM are cleared.
|
||||
ARG REDIS
|
||||
|
||||
# Copy Spring Data Redis's Makefile into the container
|
||||
COPY ./Makefile /
|
||||
@@ -6,7 +9,7 @@ COPY ./Makefile /
|
||||
RUN set -eux; \
|
||||
apt-get update ; \
|
||||
apt-get install -y build-essential ; \
|
||||
make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=6.2.1; \
|
||||
make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=${REDIS}; \
|
||||
chmod -R o+rw work; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*;
|
||||
|
||||
29
ci/pipeline.properties
Normal file
29
ci/pipeline.properties
Normal file
@@ -0,0 +1,29 @@
|
||||
# Java versions
|
||||
java.main.tag=8u312-b07-jdk
|
||||
java.11.tag=11.0.13_8-jdk
|
||||
java.15.tag=15.0.2_7-jdk-hotspot
|
||||
|
||||
# Docker container images - standard
|
||||
docker.java.main.image=eclipse-temurin:${java.main.tag}
|
||||
docker.java.11.image=eclipse-temurin:${java.11.tag}
|
||||
docker.java.15.image=adoptopenjdk:${java.15.tag}
|
||||
|
||||
# Supported versions of MongoDB
|
||||
docker.mongodb.4.0.version=4.0.23
|
||||
docker.mongodb.4.4.version=4.4.4
|
||||
docker.mongodb.5.0.version=5.0.3
|
||||
|
||||
# Supported versions of Redis
|
||||
docker.redis.6.version=6.2.4
|
||||
|
||||
# Supported versions of Cassandra
|
||||
docker.cassandra.3.version=3.11.10
|
||||
|
||||
# Docker environment settings
|
||||
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home
|
||||
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
|
||||
|
||||
# Credentials
|
||||
docker.registry=
|
||||
docker.credentials=hub.docker.com-springbuildmaster
|
||||
artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c
|
||||
Reference in New Issue
Block a user