summaryrefslogtreecommitdiff
path: root/Jenkinsfile
diff options
context:
space:
mode:
authorRunar Borge <runar@borge.nu>2020-01-01 10:59:40 +0100
committerRunar Borge <runar@borge.nu>2020-01-03 22:18:42 +0100
commit01ae02e0bcdcf15e25bc7c2ef6a9c6c8360485d1 (patch)
tree06d07c4178bafae9f305d60d7420a68a52428fe4 /Jenkinsfile
parentde4805055f2cec53af0e80e9d742bc13d9e2bc4d (diff)
downloadvyos-build-01ae02e0bcdcf15e25bc7c2ef6a9c6c8360485d1.tar.gz
vyos-build-01ae02e0bcdcf15e25bc7c2ef6a9c6c8360485d1.zip
Jenkins: T1927: Update Jenkinsfile to build on arm
Diffstat (limited to 'Jenkinsfile')
-rw-r--r--Jenkinsfile81
1 files changed, 69 insertions, 12 deletions
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()
}