From 4ec212b4028544f0fe04edd166e7b9165c76d3db Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 3 May 2022 17:08:03 -0700 Subject: [PATCH] Reconfigure the Jenkins CI build pipeline. * Configure the buld to use the VMW provided Harbor DockerHub Proxy. * Use pipeline.properties to parameterize the build. * Remove Docker logins (docker.withRegistry(..) directtives in Jenkinsfile & 'docker login' command in setup.sh). --- Jenkinsfile | 102 +++++++++++++++++++---------------------- ci/pipeline.properties | 14 ++++++ ci/setup.sh | 4 +- 3 files changed, 63 insertions(+), 57 deletions(-) create mode 100644 ci/pipeline.properties diff --git a/Jenkinsfile b/Jenkinsfile index a1fa2b6c..f6034324 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,13 +1,14 @@ +def p = [:] + +node { + checkout scm + p = readProperties interpolate: true, file: 'ci/pipeline.properties' +} + pipeline { agent any -/* - environment { - JAVA_HOME = "${tool 'jdk8'}" - } - */ - options { buildDiscarder(logRotator(numToKeepStr: '15')) disableConcurrentBuilds() @@ -20,40 +21,35 @@ pipeline { stages { stage('Build') { - environment { - DOCKER_HUB = credentials('hub.docker.com-springbuildmaster') - } options { timeout(time: 15, unit: "MINUTES") } steps { script { - docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('adoptopenjdk/openjdk8:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp') { + docker.image(p['docker.container.image.java.main']).inside(p['docker.container.inside.env.full']) { - sh "echo 'Setup build environment...'" - sh "ci/setup.sh" + sh "echo 'Setup build environment...'" + sh "ci/setup.sh" - // Cleanup any prior build system resources - try { - sh "echo 'Clean up GemFire/Geode files & build artifacts...'" - sh "ci/cleanupGemFiles.sh" - sh "ci/cleanupArtifacts.sh" - } - catch (ignore) { } + // Cleanup any prior build system resources + try { + sh "echo 'Clean up GemFire/Geode files & build artifacts...'" + sh "ci/cleanupGemFiles.sh" + sh "ci/cleanupArtifacts.sh" + } + catch (ignore) { } - // Run the SBDG project Gradle build using JDK 8 inside Docker - try { - sh "echo 'Building SBDG...'" - sh "ci/check.sh" - } - catch (e) { - currentBuild.result = "FAILED: build" - throw e - } - finally { - junit '**/build/test-results/*/*.xml' - } + // Run the SBDG project Gradle build using JDK 8 inside Docker + try { + sh "echo 'Building SBDG...'" + sh "ci/check.sh" + } + catch (e) { + currentBuild.result = "FAILED: build" + throw e + } + finally { + junit '**/build/test-results/*/*.xml' } } } @@ -63,16 +59,14 @@ pipeline { stage ('Deploy Docs') { steps { script { - docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('adoptopenjdk/openjdk8:latest').inside("--name ${env.HOSTNAME}Two -u root -v /tmp:/tmp") { - withCredentials([file(credentialsId: 'docs.spring.io-jenkins_private_ssh_key', variable: 'DEPLOY_SSH_KEY')]) { - try { - sh "ci/deployDocs.sh" - } - catch (e) { - currentBuild.result = "FAILED: deploy docs" - throw e - } + docker.image('adoptopenjdk/openjdk8:latest').inside("--name ${env.HOSTNAME}Two -u root -v /tmp:/tmp") { + withCredentials([file(credentialsId: 'docs.spring.io-jenkins_private_ssh_key', variable: 'DEPLOY_SSH_KEY')]) { + try { + sh "ci/deployDocs.sh" + } + catch (e) { + currentBuild.result = "FAILED: deploy docs" + throw e } } } @@ -83,19 +77,17 @@ pipeline { stage ('Deploy Artifacts') { steps { script { - docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('adoptopenjdk/openjdk8:latest').inside("--name ${env.HOSTNAME}One -u root -v /tmp:/tmp") { - withCredentials([file(credentialsId: 'spring-signing-secring.gpg', variable: 'SIGNING_KEYRING_FILE')]) { - withCredentials([string(credentialsId: 'spring-gpg-passphrase', variable: 'SIGNING_PASSWORD')]) { - withCredentials([usernamePassword(credentialsId: 'oss-token', passwordVariable: 'OSSRH_PASSWORD', usernameVariable: 'OSSRH_USERNAME')]) { - withCredentials([usernamePassword(credentialsId: '02bd1690-b54f-4c9f-819d-a77cb7a9822c', usernameVariable: 'ARTIFACTORY_USERNAME', passwordVariable: 'ARTIFACTORY_PASSWORD')]) { - try { - sh "ci/deployArtifacts.sh" - } - catch (e) { - currentBuild.result = "FAILED: deploy artifacts" - throw e - } + docker.image('adoptopenjdk/openjdk8:latest').inside("--name ${env.HOSTNAME}One -u root -v /tmp:/tmp") { + withCredentials([file(credentialsId: 'spring-signing-secring.gpg', variable: 'SIGNING_KEYRING_FILE')]) { + withCredentials([string(credentialsId: 'spring-gpg-passphrase', variable: 'SIGNING_PASSWORD')]) { + withCredentials([usernamePassword(credentialsId: 'oss-token', passwordVariable: 'OSSRH_PASSWORD', usernameVariable: 'OSSRH_USERNAME')]) { + withCredentials([usernamePassword(credentialsId: '02bd1690-b54f-4c9f-819d-a77cb7a9822c', usernameVariable: 'ARTIFACTORY_USERNAME', passwordVariable: 'ARTIFACTORY_PASSWORD')]) { + try { + sh "ci/deployArtifacts.sh" + } + catch (e) { + currentBuild.result = "FAILED: deploy artifacts" + throw e } } } diff --git a/ci/pipeline.properties b/ci/pipeline.properties new file mode 100644 index 00000000..1ae0d73e --- /dev/null +++ b/ci/pipeline.properties @@ -0,0 +1,14 @@ +# Java (JDK) versions +java.main.tag=8u322-b06-jdk + +# Docker Container Images +docker.container.image.java.main=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag} + +# Docker Environment Settings +docker.container.inside.env.basic=-u root -v $HOME:/tmp/jenkins-home -v /tmp:/tmp +docker.container.inside.env.full=-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp -v $HOME:/tmp/jenkins-home + +# Credentials +docker.registry= +docker.credentials=hub.docker.com-springbuildmaster +artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c diff --git a/ci/setup.sh b/ci/setup.sh index 0235c9b1..732b9b4c 100755 --- a/ci/setup.sh +++ b/ci/setup.sh @@ -9,6 +9,6 @@ chown -R 1001:1001 . mkdir -p /tmp/geode/boot/artifacts-gradle-cache mkdir -p /tmp/geode/boot/build-gradle-cache mkdir -p /tmp/geode/boot/docs-gradle-cache -echo "Logging into Docker..." -docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW} +#echo "Logging into Docker..." +#docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW} exit 0