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

Nat*_*son 5 jenkins jenkins-plugins docker jenkins-pipeline

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

docker.image('alpine').inside() {
  sh 'exit 1'
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用该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'
  }
}
Run Code Online (Sandbox Code Playgroud)

withRun()如果容器以非零代码退出,是否有办法使构建失败?

Nat*_*son 2

我找不到有关命令退出代码的更多信息withRun(),因此我最终只是docker runsh步骤中执行命令:

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"
}
Run Code Online (Sandbox Code Playgroud)