diff --git a/CI.adoc b/CI.adoc
index d7b3c672a..613add516 100644
--- a/CI.adoc
+++ b/CI.adoc
@@ -9,7 +9,7 @@ image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-elasticsearch%2
Since this pipeline is purely Docker-based, it's easy to:
* Debug what went wrong on your local machine.
-* Test out a a tweak to your `test.sh` script before sending it out.
+* Test out a a tweak to your `verify.sh` script before sending it out.
* Experiment against a new image before submitting your pull request.
All of these use cases are great reasons to essentially run what the CI server does on your local machine.
diff --git a/Jenkinsfile b/Jenkinsfile
index b47e8a04b..634cce6d6 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -20,17 +20,19 @@ pipeline {
}
}
agent {
- docker {
- image 'adoptopenjdk/openjdk8:latest'
- label 'data'
- args '-u root -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home'
- }
+ label 'data'
}
options { timeout(time: 30, unit: 'MINUTES') }
steps {
- sh 'mkdir -p /tmp/jenkins-home'
- sh 'chown -R 1001:1001 .'
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch'
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image('adoptopenjdk/openjdk8:latest').inside('-u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v $HOME:/tmp/jenkins-home') {
+ sh "docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW}"
+ sh 'PROFILE=none ci/verify.sh'
+ sh "ci/clean.sh"
+ }
+ }
+ }
}
}
@@ -44,29 +46,37 @@ pipeline {
parallel {
stage("test: baseline (jdk11)") {
agent {
- docker {
- image 'adoptopenjdk/openjdk11:latest'
- label 'data'
- args '-u root -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home'
- }
+ label 'data'
}
options { timeout(time: 30, unit: 'MINUTES') }
steps {
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pjava11 clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch'
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image('adoptopenjdk/openjdk11:latest').inside('-u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v $HOME:/tmp/jenkins-home') {
+ sh "docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW}"
+ sh 'PROFILE=java11 ci/verify.sh'
+ sh "ci/clean.sh"
+ }
+ }
+ }
}
}
stage("test: baseline (jdk15)") {
agent {
- docker {
- image 'adoptopenjdk/openjdk15:latest'
- label 'data'
- args '-u root -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home'
- }
+ label 'data'
}
options { timeout(time: 30, unit: 'MINUTES') }
steps {
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pjava11 clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch'
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image('adoptopenjdk/openjdk15:latest').inside('-u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v $HOME:/tmp/jenkins-home') {
+ sh "docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW}"
+ sh 'PROFILE=java11 ci/verify.sh'
+ sh "ci/clean.sh"
+ }
+ }
+ }
}
}
}
@@ -80,11 +90,7 @@ pipeline {
}
}
agent {
- docker {
- image 'adoptopenjdk/openjdk8:latest'
- label 'data'
- args '-u root -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home'
- }
+ label 'data'
}
options { timeout(time: 20, unit: 'MINUTES') }
@@ -93,14 +99,20 @@ pipeline {
}
steps {
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pci,artifactory -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch ' +
- '-Dartifactory.server=https://repo.spring.io ' +
- "-Dartifactory.username=${ARTIFACTORY_USR} " +
- "-Dartifactory.password=${ARTIFACTORY_PSW} " +
- "-Dartifactory.staging-repository=libs-snapshot-local " +
- "-Dartifactory.build-name=spring-data-elasticsearch " +
- "-Dartifactory.build-number=${BUILD_NUMBER} " +
- '-Dmaven.test.skip=true clean deploy -U -B'
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
+ sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pci,artifactory -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root ' +
+ '-Dartifactory.server=https://repo.spring.io ' +
+ "-Dartifactory.username=${ARTIFACTORY_USR} " +
+ "-Dartifactory.password=${ARTIFACTORY_PSW} " +
+ "-Dartifactory.staging-repository=libs-snapshot-local " +
+ "-Dartifactory.build-name=spring-data-elasticsearch " +
+ "-Dartifactory.build-number=${BUILD_NUMBER} " +
+ '-Dmaven.test.skip=true clean deploy -U -B'
+ }
+ }
+ }
}
}
stage('Publish documentation') {
@@ -108,11 +120,7 @@ pipeline {
branch 'master'
}
agent {
- docker {
- image 'adoptopenjdk/openjdk8:latest'
- label 'data'
- args '-u root -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home'
- }
+ label 'data'
}
options { timeout(time: 20, unit: 'MINUTES') }
@@ -121,12 +129,18 @@ pipeline {
}
steps {
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pci,distribute -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch ' +
- '-Dartifactory.server=https://repo.spring.io ' +
- "-Dartifactory.username=${ARTIFACTORY_USR} " +
- "-Dartifactory.password=${ARTIFACTORY_PSW} " +
- "-Dartifactory.distribution-repository=temp-private-local " +
- '-Dmaven.test.skip=true clean deploy -U -B'
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
+ sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pci,distribute -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root ' +
+ '-Dartifactory.server=https://repo.spring.io ' +
+ "-Dartifactory.username=${ARTIFACTORY_USR} " +
+ "-Dartifactory.password=${ARTIFACTORY_PSW} " +
+ "-Dartifactory.distribution-repository=temp-private-local " +
+ '-Dmaven.test.skip=true clean deploy -U -B'
+ }
+ }
+ }
}
}
}
diff --git a/ci/clean.sh b/ci/clean.sh
new file mode 100755
index 000000000..26f14033f
--- /dev/null
+++ b/ci/clean.sh
@@ -0,0 +1,6 @@
+#!/bin/bash -x
+
+set -euo pipefail
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" \
+ ./mvnw clean -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch
diff --git a/ci/verify.sh b/ci/verify.sh
new file mode 100755
index 000000000..744718c47
--- /dev/null
+++ b/ci/verify.sh
@@ -0,0 +1,10 @@
+#!/bin/bash -x
+
+set -euo pipefail
+
+mkdir -p /tmp/jenkins-home/.m2/spring-data-elasticsearch
+chown -R 1001:1001 .
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" \
+ ./mvnw \
+ -P${PROFILE} clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 749d49c00..bc4d95c68 100644
--- a/pom.xml
+++ b/pom.xml
@@ -441,6 +441,11 @@
spring-plugins-release
https://repo.spring.io/plugins-release
+
+ bintray-plugins
+ bintray-plugins
+ https://jcenter.bintray.com
+