一尘不染

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

jenkins

我正在使用Docker Pipeline插件通过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()如果容器以非零代码退出,是否有办法使构建失败?


阅读 307

收藏
2020-07-25

共1个答案

一尘不染

我从withRun()命令中找不到有关退出代码的更多信息,所以我最终只是docker run从一个sh步骤执行了一个命令:

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"
}
2020-07-25