diff --git a/Jenkinsfile b/Jenkinsfile index e70687c..ba73399 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,26 +4,29 @@ pipeline { CONTAINER_REGISTRY = credentials("container_registry") REGISTRY_NAMESPACE = credentials("registry_namespace") REPO_NAME = env.GIT_URL.replaceFirst(/^.*\/([^\/]+?).git$/, '$1') + ARCHITECTURES = ['aarch64', 'x86_64'] } stages { stage("Build") { when { tag "*" } parallel { - stage("aarch64") { - agent { label "aarch64" } - steps { - sh "podman build -t ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-aarch64 ." - sh "podman save -o aarch64.tar ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-aarch64" - stash includes: "aarch64.tar", name: 'aarch64-image' - } - } - stage("x86_64") { - agent { label "x86_64" } - steps { - sh "podman build -t ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-x86_64 ." - sh "podman save -o x86_64.tar ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-x86_64" - stash includes: "x86_64.tar", name: 'x86_64-image' + script { + def parallelStages = [:] + + ARCHITECTURES.each { arch -> + parallelStages[arch] = { + stage(arch) { + agent { label arch } + steps { + sh "podman build -t ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-${arch} ." + sh "podman save -o ${arch}.tar ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${env.BRANCH_NAME}-${arch}" + stash includes: "${arch}.tar", name: "${arch}-image" + } + } + } } + + parallel parallelStages } } }