diff --git a/Jenkinsfile b/Jenkinsfile index 8053203..11f1aef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,7 +12,7 @@ * EXERCISE_FOLDERS has the image name and corresponding build folder **/ -TARGET_BRANCH = '202310' +TARGET_BRANCH = '202310-multiarch' EXERCISE_FOLDERS = [ "base": "base", @@ -22,11 +22,12 @@ EXERCISE_FOLDERS = [ ] pipeline { - agent any + agent { node { label 'docker-multi-arch' } } environment { maintainer = "t" imagename = 'g' tag = 'l' + DOCKERHUBPW=credentials('tieradmin-dockerhub-pw') } stages { stage('Setting build context') { @@ -79,8 +80,18 @@ pipeline { // builds.each{ k, v -> v.push(k) } <- not used anymore EXERCISE_FOLDERS.each { exercise, folder -> - def build = docker.build("${maintainer}/${imagename}:${exercise}-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ${folder}") - build.push("${exercise}-${tag}") + // old non multi-arch way + // def build = docker.build("${maintainer}/${imagename}:${exercise}-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ${folder}") + // build.push("${exercise}-${tag}") + + // switch to buildx, which is not supported by the jenkins docker plugin + sh 'docker login -u tieradmin -p $DOCKERHUBPW' + sh 'docker buildx inspect --bootstrap' + sh 'docker buildx ls' + sh "docker buildx build --platform linux/amd64 -t ${imagename} --build-arg GROUPER_CONTAINER_VERSION=${tag} --load ${folder}" + sh "docker buildx build --platform linux/arm64 -t ${imagename}:arm64 --build-arg GROUPER_CONTAINER_VERSION=${tag} --load ${folder}" + echo "Pushing image to dockerhub..." + sh "docker buildx build --push --platform linux/arm64,linux/amd64 -t ${maintainer}/${imagename}:${tag} ${folder}" } } else { echo "not building images, since the SCM branch is not ${TARGET_BRANCH}"