atuin/Jenkinsfile
Sebastian Hugentobler c908b4a7b5
Some checks are pending
Build Multiarch Container Image / call-reusable-workflow (push) Waiting to run
try git ref
2025-06-04 10:23:32 +02:00

59 lines
2.5 KiB
Groovy

pipeline {
agent any
environment {
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 {
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
}
}
}
stage("Combine and Push") {
when { tag "*" }
agent any
steps {
unstash 'aarch64-image'
unstash 'x86_64-image'
sh "podman load -i aarch64.tar"
sh "podman load -i x86_64.tar"
sh '''
podman manifest create ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${BRANCH_NAME} \
${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${BRANCH_NAME}-aarch64 \
${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${BRANCH_NAME}-x86_64
'''
withCredentials([usernamePassword(credentialsId: "dockerhub", usernameVariable: "REG_USERNAME", passwordVariable: "REG_PASSWORD")]) {
sh '''
podman login ${CONTAINER_REGISTRY} -u ${REG_USERNAME} -p ${REG_PASSWORD}
podman manifest push ${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${BRANCH_NAME} \
docker://${CONTAINER_REGISTRY}/${REGISTRY_NAMESPACE}/${REPO_NAME}:${BRANCH_NAME}
'''
}
}
}
}
}