如果一个Dockerpipe道插件withRun命令返回一个非零的退出代码,我如何失败一个Jenkins构build?
我正在使用Dockerpipe道插件通过Docker容器执行我的构build脚本。 我注意到,如果我有一个脚本在inside()
命令中执行时返回一个非零的退出代码,Jenkins会将pipe道执行标记为失败。 这个例子Jenkinsfile说明了这种情况:
docker.image('alpine').inside() { sh 'exit 1' }
但是,如果使用withRun()
命令,即使docker docker ps -l
命令显示容器以非零状态退出,类似的Jenkinsfile也不会导致构build失败:
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()
失败的构build,如果容器退出非零代码?
我从withRun()
命令找不到更多关于退出代码的信息,所以我最后只是执行sh
步骤中的withRun()
docker run
命令:
node() { sh 'touch ./test.sh' sh 'echo "exit 1" >> ./test.sh' sh 'chmod 755 ./test.sh' sh "docker run --rm -v ${WORKSPACE}:/newDir alpine /bin/sh /newDir/test.sh" }