我正在使用Docker Pipeline Plugin通过Docker容器执行我的构建脚本 . 我注意到,如果我在 inside()
命令中执行时有一个脚本返回非零退出代码,Jenkins会将管道执行标记为失败 . 这个示例Jenkinsfile说明了这种情况:
docker.image('alpine').inside() {
sh 'exit 1'
}
但是,如果我使用 withRun()
命令,类似的Jenkins文件将不会导致构建失败,即使 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()
失败?
3 回答
我无法从
withRun()
命令中找到有关退出代码的更多信息,所以我最终只是从sh
步骤执行docker run
命令:一种可能的解决方案:
docker wait怎么样?
wait
打印容器的退出代码,如果发生错误导致构建失败,根据sh docs: