Jenkins部署项目发布镜像报错failed to load
2020-10-23 本文已影响0人
cherishpf
报错信息:
#9 [internal] load build context
#9 CANCELED
failed to solve: rpc error: code = Unknown desc = failed to load LLB: runtime execution on platform linux/arm64 not supported
解决方法:
构建镜像之前安装qemu-user-static
为了让在x86上可以运行arm64的docker镜像,这里需要安装qemu-user-static,过程如下:
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
在Jenkins Pipeline Script中的添加方式:
sh 'docker run --rm --privileged multiarch/qemu-user-static --reset -p yes'
if( isMasterBranch || isHotFixBranch || isDevelopBranch ){
stage("Deploy to image repo") {
docker.withRegistry("https://registry.cn-shanghai.aliyuncs.com/", "aliyunDockerRegistry") {
def artifactoryVersion = getReleaseVersion()
def dockerTag
if( isMasterBranch || isHotFixBranch ) {
dockerTag = artifactoryVersion
} else if( isDevelopBranch ) {
dockerTag = getEdgeVersion();
}
println "---> Deploying the image with tag: " + dockerTag
deployedImageTag = "http://registry.cn-shanghai.aliyuncs.com/server/${service}:" + dockerTag
def latestImageTag = "http://registry.cn-shanghai.aliyuncs.com/server/${service}:latest"
sh 'docker run --rm --privileged multiarch/qemu-user-static --reset -p yes'
sh 'docker buildx create --name builder --use'
docker.build(deployedImageTag, "--rm --platform=linux/amd64,linux/arm64 --build-arg ARTIFACT_VERSION=${artifactoryVersion} . --push")
docker.build(latestImageTag, "--rm --platform=linux/amd64,linux/arm64 --build-arg ARTIFACT_VERSION=${artifactoryVersion} . --push")
}
}
}