Skip to content

Instantly share code, notes, and snippets.

@bgulla
Created January 13, 2020 16:07
Show Gist options
  • Save bgulla/194736124c3824d54d8082918930b1bb to your computer and use it in GitHub Desktop.
Save bgulla/194736124c3824d54d8082918930b1bb to your computer and use it in GitHub Desktop.
Multi-architecture Jenkins Docker Builds with Docker manifest support
pipeline {
environment {
registryCredential = 'harbor-lol-jenk-robot'
DOCKER_IMAGE = sh 'echo ${JOB_NAME} | sed "s/gitea-larkspur//g" | sed "s/master//g"'
registry = "" /*be sure to include trailing slash*/
docker_image_name = "bgulla/rtl-tcp"
docker_img = "${registry}${docker_image_name}"
/* */
push_to_local_registry = true
local_registry = "harbor.lol"
local_registry_namespace = "dev"
}
// agent any
agent {
label 'arm'
}
stages {
stage('Build AMD64 Docker and Push to Registries') {
agent {
label 'amd64'
}
steps {
script {
sh 'whoami'
sh 'env'
docker.withRegistry( '', 'dockerhub-creds' ) {
dockerImage = docker.build docker_img + ":amd64"
dockerImage.push()
}
if (push_to_local_registry){
docker.withRegistry( 'https://${local_registry}', 'harbor-lol-jenk-robot' ) {
local_registry_docker_image = "${local_registry_namespace}/${docker_img}"
sh "echo ${local_registry_docker_image}"
dockerImage = docker.build local_registry_docker_image + ":amd64"
dockerImage.push()
}
}
}
}
}
stage('Build ARMv7 Docker and Push to Registries') {
agent {
label 'arm'
}
steps {
script {
sh 'whoami'
sh 'env'
docker.withRegistry( '', 'dockerhub-creds' ) {
dockerImage = docker.build docker_img + ":armv7"
dockerImage.push()
}
if (push_to_local_registry){
docker.withRegistry( 'https://harbor.lol', 'harbor-lol-jenk-robot' ) {
local_registry_docker_image = "${local_registry}/${local_registry_namespace}/${docker_img}"
dockerImage = docker.build local_registry_docker_image + ":armv7"
dockerImage.push()
}
}
}
}
}
stage('Build ARM64 Docker and Push to Registries') {
agent {
label 'arm64'
}
steps {
script {
sh 'whoami'
sh 'env'
docker.withRegistry( '', 'dockerhub-creds' ) {
dockerImage = docker.build docker_img + ":arm64"
dockerImage.push()
}
if (push_to_local_registry){
docker.withRegistry( 'https://harbor.lol', 'harbor-lol-jenk-robot' ) {
local_registry_docker_image = "${local_registry}/${local_registry_namespace}/${docker_img}"
dockerImage = docker.build local_registry_docker_image + ":arm64"
dockerImage.push()
}
}
}
}
}
stage('Build Docker Manifest and push') {
agent {
label 'amd64'
}
steps {
script {
sh 'whoami'
sh 'env'
docker.withRegistry( '', 'dockerhub-creds' ) {
sh 'docker version'
sh "docker manifest create ${docker_img}:latest ${docker_img}:armv7 ${docker_img}:amd64 ${docker_img}:armv7 ${docker_img}:arm64"
sh "docker manifest push ${docker_img}:latest"
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment