【问题标题】:Declarative Jenkinsfile doens't exit even if shell-script return non-zero value即使 shell 脚本返回非零值,声明性 Jenkinsfile 也不会退出
【发布时间】:2019-03-24 09:01:26
【问题描述】:

考虑一下我的声明性语法 Jenkinsfile 中的这段摘录

stage("Test") {
      steps {
        sh "sh run-tests.sh"
      }
}

即使run-tests.sh 脚本以代码 1 退出,Jenkins 作业仍会继续执行下一步。有谁知道可能是什么原因造成的?

编辑:感谢到目前为止的回复。我相信问题出在其他地方 - 正在执行的测试是由 Python 的 nose2 库启动的,如果我没有弄错,不管测试的状态如何,这个命令都会以 0 退出。我现在将遵循该线索,看看是否可以解决问题。

【问题讨论】:

  • 你嵌套sh有什么原因吗?你应该可以只做sh "run-tests.sh"。第一个 sh 是一个 Jenkins 管道函数,如果您的返回状态为非零,它应该总是失败,第二个 sh 将取决于您的操作系统和配置。
  • 步骤应该是:: sh './run-tests.sh' 并且shell脚本应该是可执行的

标签: jenkins jenkins-pipeline


【解决方案1】:

我找到了解决方案。我正在使用 docker-compose 运行测试,结果无论我的测试脚本返回什么,docker-compose 返回 0。请参阅this SO post 了解更多信息。

我在docker-compose up 命令中添加了--exit-code-from 选项,现在我的CI 作业中止,退出代码与我的Jenkinsfile(以及我的测试脚本)相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2016-05-06
    • 2019-07-26
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多