From 01ae02e0bcdcf15e25bc7c2ef6a9c6c8360485d1 Mon Sep 17 00:00:00 2001 From: Runar Borge Date: Wed, 1 Jan 2020 10:59:40 +0100 Subject: Jenkins: T1927: Update Jenkinsfile to build on arm --- Jenkinsfile | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 12 deletions(-) (limited to 'Jenkinsfile') diff --git a/Jenkinsfile b/Jenkinsfile index 40729a5..326c03e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -72,19 +72,76 @@ setDescription() // Due to long build times on DockerHub we rather build the container by ourself // and publish it later on. + +// create container names on demand +env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName() +env.DOCKER_IMAGE_ARM = "vyos/vyos-build:" + getGitBranchName() + "-armhf" +env.DOCKER_IMAGE_ARM64 = "vyos/vyos-build:" + getGitBranchName() + "-arm64" + node('Docker') { - stage('Build Container') { - script { - git branch: getGitBranchName(), - url: getGitRepoURL() - - // create container name on demand - env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName() - sh "docker build -t ${env.DOCKER_IMAGE} docker" - withDockerRegistry([credentialsId: "DockerHub"]) { - sh "docker push ${env.DOCKER_IMAGE}" + stage('Fetch') { + git branch: getGitBranchName(), + url: getGitRepoURL() + } + stage('Build Docker container') { + parallel ( + 'x86-64': { + script { + dir('docker') { + sh """ + mkdir -p x86-64 + cp Dockerfile x86-64/Dockerfile + cp entrypoint.sh x86-64/entrypoint.sh + + docker build -t ${env.DOCKER_IMAGE} x86-64 + """ + if ( ! isCustomBuild()) { + withDockerRegistry([credentialsId: "DockerHub"]) { + sh "docker push ${env.DOCKER_IMAGE}" + } + + } + } + } + }, + 'armhf': { + script { + dir('docker') { + sh """ + cp Dockerfile armhf/Dockerfile + cp entrypoint.sh armhf/entrypoint.sh + sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:armhf-buster-slim#' armhf/Dockerfile + docker build -t ${env.DOCKER_IMAGE_ARM} armhf + """ + if ( ! isCustomBuild()) { + withDockerRegistry([credentialsId: "DockerHub"]) { + sh "docker push ${env.DOCKER_IMAGE_ARM}" + } + } + } + } + }, + 'arm64': { + script { + dir('docker') { + sh """ + cp Dockerfile arm64/Dockerfile + cp entrypoint.sh arm64/entrypoint.sh + sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:arm64-buster-slim#' arm64/Dockerfile + docker build -t ${env.DOCKER_IMAGE_ARM64} arm64 + + """ + + if ( ! isCustomBuild()) { + withDockerRegistry([credentialsId: "DockerHub"]) { + sh "docker push ${env.DOCKER_IMAGE_ARM64}" + + } + } + } + } } - } + ) } } @@ -92,7 +149,7 @@ pipeline { options { skipDefaultCheckout() disableConcurrentBuilds() - timeout(time: 90, unit: 'MINUTES') + timeout(time: 120, unit: 'MINUTES') parallelsAlwaysFailFast() timestamps() } -- cgit v1.2.3