gpt4 book ai didi

docker - 如果 Docker Pipeline Plugin withRun 命令返回非零退出代码,我如何使 Jenkins 构建失败?

转载 作者:行者123 更新时间:2023-12-01 12:20:28 25 4
gpt4 key购买 nike

我正在使用 Docker Pipeline Plugin通过 Docker 容器执行我的构建脚本。我注意到如果我有一个脚本在 inside() 中执行时返回一个非零退出代码命令,Jenkins 会将管道执行标记为失败。此示例 Jenkinsfile 说明了该场景:

docker.image('alpine').inside() {
sh 'exit 1'
}

但是,如果我使用 withRun()命令,类似的 Jenkinsfile 不会导致构建失败,即使 docker ps -l命令显示容器以非零状态退出:
node() {
sh 'touch ./test.sh'
sh 'echo "exit 1" >> ./test.sh'
sh 'chmod 755 ./test.sh'

docker.image('alpine').withRun("-v ${WORKSPACE}:/newDir", '/bin/sh /newDir/test.sh') {container ->
sh "docker logs ${container.id} -f"
sh 'docker ps -l'
}
}

有没有办法让 withRun()如果容器以非零代码退出,则构建失败?

最佳答案

可能的解决方案之一:

docker.withRegistry("https://${REGISTRY}", 'creds-id') {

stage("RUN CONTAINER"){
Image = docker.image("${IMAGE}-${PROJECT}:${TAG}")
try {
c = Image.run("-v /mnt:/mnt")
sh "docker logs -f ${c.id}"
def out = sh script: "docker inspect ${c.id} --format='{{.State.ExitCode}}'", returnStdout: true
sh "exit ${out}"
} finally {
c.stop()
}
}
}

关于docker - 如果 Docker Pipeline Plugin withRun 命令返回非零退出代码,我如何使 Jenkins 构建失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com