一个Jenkins流水线怎么同时打两个镜像
需求背景,当往生产环境打镜像时,需要同时打出x86和arm64的镜像。
主要脚本如下:
steps {
echo '生成镜像......'
script {
sh 'printenv'
updateGitlabCommitStatus name: '生成镜像', state: 'running'
dockerImage = docker.build("${registryCredential}/${registryName}-${env.C_ENV}:${env.C_IMAGE_TAG}")
docker.withRegistry(registryURL, 'harbor-jenkins-user') {
dockerImage.push()
}
if (env.C_ENV == 'pro') {
dockerImage = docker.build("${registryCredential}/${registryName}-${env.C_ENV}:${env.C_IMAGE_TAG}-arm64", "-f Dockerfile-arm64 .")
docker.withRegistry(registryURL, 'harbor-jenkins-user') {
dockerImage.push()
}
}
}
}
当然源码仓库的根目录应该有一个Dockerfile,还应该有一个叫做Dockerfile-arm64文件内容如下:
FROM harborHost:8081/library/java:8u291-k8s-arm64
ADD --chown=1000:1000 target/xxx.jar /var/k8s/xxx.jar
和x86所使用的Dockerfile主要区别就是基础镜像的不同,这里Dockerfile内容不再列举。

浙公网安备 33010602011771号