Skip to content

Commit

Permalink
Adopt Harbor Proxy service for CI.
Browse files Browse the repository at this point in the history
Resolves #1348.
  • Loading branch information
gregturn committed Apr 20, 2023
1 parent c955dc7 commit 2b27550
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 106 deletions.
182 changes: 83 additions & 99 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
def p = [:]
node {
checkout scm
p = readProperties interpolate: true, file: 'ci/pipeline.properties'
}

pipeline {
agent none

Expand All @@ -11,79 +17,59 @@ pipeline {
}

stages {
stage('Publish OpenJDK 17 + jq docker image') {
when {
changeset "ci/Dockerfile"
stage("Test: baseline (main)") {
options { timeout(time: 30, unit: 'MINUTES')}
environment {
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
agent any

steps {
script {
def image = docker.build("springci/spring-ws-openjdk17-with-jq", "ci/")
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
image.push()
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
sh "PROFILE=jakarta-ee-10,distribute,convergence ci/test.sh"
}
}
}
}

stage("Test: baseline (jdk17)") {
agent {
docker {
image 'openjdk:17-bullseye'
args '-v $HOME/.m2:/root/.m2'
}
}
environment {
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
sh "PROFILE=jakarta-ee-10,distribute,convergence ci/test.sh"
stage("Test other configurations") {
when {
beforeAgent(true)
branch(pattern: "issue/slim-ci|main|(\\d\\.\\d\\.x)", comparator: "REGEXP") // TOOD: Remove issue/slim-ci
}
}

stage("Test other configurations") {
parallel {
stage("Test: spring-buildsnapshot (jdk17)") {
agent {
docker {
image 'openjdk:17-bullseye'
args '-v $HOME/.m2:/root/.m2'
}
}
stage("Test: spring-buildsnapshot (main)") {
options { timeout(time: 30, unit: 'MINUTES')}
environment {
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
sh "PROFILE=jakarta-ee-10,spring-buildsnapshot,convergence ci/test.sh"
script {
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
sh "PROFILE=jakarta-ee-10,spring-buildsnapshot,convergence ci/test.sh"
}
}
}
}

stage("Test: jakarta-ee-9 (jdk17)") {
agent {
docker {
image 'openjdk:17-bullseye'
args '-v $HOME/.m2:/root/.m2'
}
}
stage("Test: jakarta-ee-9 (main)") {
options { timeout(time: 30, unit: 'MINUTES')}
environment {
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
// Active Jakarta EE 9 profile and disable Jakarta EE 10 (default) profile
sh "PROFILE=jakarta-ee-9,-jakarta-ee-10,convergence ci/test.sh"
script {
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
// Active Jakarta EE 9 profile and disable Jakarta EE 10 (default) profile
sh "PROFILE=jakarta-ee-9,-jakarta-ee-10,convergence ci/test.sh"
}
}
}
}
}
}

stage('Deploy') {
agent {
docker {
image 'springci/spring-ws-openjdk17-with-jq:latest'
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
}
}
options { timeout(time: 20, unit: 'MINUTES') }

environment {
Expand All @@ -96,52 +82,54 @@ pipeline {

steps {
script {
PROJECT_VERSION = sh(
script: "ci/version.sh",
returnStdout: true
).trim()

if (PROJECT_VERSION.matches(/.*-RC[0-9]+$/) || PROJECT_VERSION.matches(/.*-M[0-9]+$/)) {
RELEASE_TYPE = "milestone"
} else if (PROJECT_VERSION.endsWith('SNAPSHOT')) {
RELEASE_TYPE = 'snapshot'
} else if (PROJECT_VERSION.matches(/.*\.[0-9]+$/)) {
RELEASE_TYPE = 'release'
} else {
RELEASE_TYPE = 'snapshot'
}
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
PROJECT_VERSION = sh(
script: "ci/version.sh",
returnStdout: true
).trim()

if (PROJECT_VERSION.matches(/.*-RC[0-9]+$/) || PROJECT_VERSION.matches(/.*-M[0-9]+$/)) {
RELEASE_TYPE = "milestone"
} else if (PROJECT_VERSION.endsWith('SNAPSHOT')) {
RELEASE_TYPE = 'snapshot'
} else if (PROJECT_VERSION.matches(/.*\.[0-9]+$/)) {
RELEASE_TYPE = 'release'
} else {
RELEASE_TYPE = 'snapshot'
}

if (RELEASE_TYPE == 'release') {

STAGING_REPOSITORY_ID = sh(
script: "ci/rc-open.sh",
returnStdout: true
).readLines()
.findAll{ line -> line.contains("<repository>") && !line.contains("%s") }
.collect{ s -> s.substring(s.indexOf("<repository>") + "<repository>".length(), s.indexOf("</repository>")) }
.inject(0){ first, second -> second } // find the last entry, a.k.a. the most recent staging repository id

sh "ci/build-and-deploy-to-maven-central.sh ${PROJECT_VERSION} ${STAGING_REPOSITORY_ID}"
sh "ci/rc-close.sh ${STAGING_REPOSITORY_ID}"
sh "ci/smoke-test-against-maven-central.sh ${PROJECT_VERSION} ${STAGING_REPOSITORY_ID}"
sh "ci/rc-release.sh ${STAGING_REPOSITORY_ID}"

if (RELEASE_TYPE == 'release') {

STAGING_REPOSITORY_ID = sh(
script: "ci/rc-open.sh",
returnStdout: true
).readLines()
.findAll{ line -> line.contains("<repository>") && !line.contains("%s") }
.collect{ s -> s.substring(s.indexOf("<repository>") + "<repository>".length(), s.indexOf("</repository>")) }
.inject(0){ first, second -> second } // find the last entry, a.k.a. the most recent staging repository id

sh "ci/build-and-deploy-to-maven-central.sh ${PROJECT_VERSION} ${STAGING_REPOSITORY_ID}"
sh "ci/rc-close.sh ${STAGING_REPOSITORY_ID}"
sh "ci/smoke-test-against-maven-central.sh ${PROJECT_VERSION} ${STAGING_REPOSITORY_ID}"
sh "ci/rc-release.sh ${STAGING_REPOSITORY_ID}"

slackSend(
color: (currentBuild.currentResult == 'SUCCESS') ? 'good' : 'danger',
channel: '#spring-ws',
message: "Spring WS ${PROJECT_VERSION} is released to Maven Central!")
} else {

sh "ci/build-and-deploy-to-artifactory.sh ${RELEASE_TYPE}"

// TODO: Resolve smoke testing against Artifactory
// sh "ci/smoke-test-against-artifactory.sh ${PROJECT_VERSION}"

if (RELEASE_TYPE == 'milestone') {
slackSend(
color: (currentBuild.currentResult == 'SUCCESS') ? 'good' : 'danger',
channel: '#spring-ws',
message: "Spring WS ${PROJECT_VERSION} is released to Artifactory!")
message: "Spring WS ${PROJECT_VERSION} is released to Maven Central!")
} else {

sh "ci/build-and-deploy-to-artifactory.sh ${RELEASE_TYPE}"

// TODO: Resolve smoke testing against Artifactory
// sh "ci/smoke-test-against-artifactory.sh ${PROJECT_VERSION}"

if (RELEASE_TYPE == 'milestone') {
slackSend(
color: (currentBuild.currentResult == 'SUCCESS') ? 'good' : 'danger',
channel: '#spring-ws',
message: "Spring WS ${PROJECT_VERSION} is released to Artifactory!")
}
}
}
}
Expand All @@ -155,12 +143,6 @@ pipeline {
branch 'release'
}
}
agent {
docker {
image 'openjdk:17-bullseye'
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
}
}
options { timeout(time: 20, unit: 'MINUTES') }

environment {
Expand All @@ -169,12 +151,14 @@ pipeline {

steps {
script {
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pjakarta-ee-10,distribute,docs ' +
'-Dartifactory.server=https://repo.spring.io ' +
"-Dartifactory.username=${ARTIFACTORY_USR} " +
"-Dartifactory.password=${ARTIFACTORY_PSW} " +
"-Dartifactory.distribution-repository=temp-private-local " +
'-Dmaven.test.skip=true -Dmaven.deploy.skip=true deploy -B'
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 -Pjakarta-ee-10,distribute,docs ' +
'-Dartifactory.server=https://repo.spring.io ' +
"-Dartifactory.username=${ARTIFACTORY_USR} " +
"-Dartifactory.password=${ARTIFACTORY_PSW} " +
"-Dartifactory.distribution-repository=temp-private-local " +
'-Dmaven.test.skip=true -Dmaven.deploy.skip=true deploy -B'
}
}
}
}
Expand Down
6 changes: 0 additions & 6 deletions ci/Dockerfile

This file was deleted.

10 changes: 10 additions & 0 deletions ci/pipeline.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Java versions
java.main.tag=17.0.6_10-jdk-focal
java.next.tag=20-jdk-jammy

# Docker container images - standard
docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag}
docker.java.next.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.next.tag}

# Docker environment settings
docker.java.inside.basic=-v $HOME/.m2:/tmp/jenkins-home/.m2
6 changes: 5 additions & 1 deletion ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@

set -euo pipefail

mkdir -p /tmp/jenkins-home/.m2/spring-ws
chown -R 1001:1001 .

MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" \
./mvnw -s settings.xml -P${PROFILE} clean dependency:list test -Dsort -B
./mvnw -s settings.xml \
-P${PROFILE} clean dependency:list test -Dsort -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-ws

0 comments on commit 2b27550

Please sign in to comment.