脚本Jenkins管道:继续失败

时间:2016-11-03 12:19:04

标签: jenkins groovy jenkins-pipeline

即使前一阶段失败,有没有办法继续执行脚本化管道?在整个作业失败之前,我需要在构建失败时运行特定的命令(清理)。

3 个答案:

答案 0 :(得分:14)

通常的做法是将您的步骤包裹在try块中。

try {
  sh "..."
} catch (err) {
  echo "something failed"
}
// cleanup
sh "rm -rf *"

为了减轻痛苦并使管道代码更具可读性,我已将其封装在另一种方法here in my global library code中。

另一种方法,尤其是由于这个问题而创建的是声明性管道blogpresentation)。

答案 1 :(得分:0)

  post {
    always {
      cleanWs()
    }
  }
}

即使其余的工作失败,也会一直清理工作

答案 2 :(得分:0)

可接受的答案不会使阶段失败,甚至不会将其标记为不稳定。现在可以使阶段失败,继续执行管道并选择构建结果:

import { Translate, translate } from 'react-jhipster';

...

<AvField id="type" type="select" className="form-control">
  <option className="form-control" value="01">
    { translate("type1") }
  </option>
  <option className="form-control" value="02">
    { translate("type2") }
  </option>
</AvField>

在上面的示例中,所有阶段都将执行,管道将成功,但是阶段2将显示为失败:

Pipeline Example

您可能已经猜到了,可以随意选择pipeline { agent any stages { stage('1') { steps { sh 'exit 0' } } stage('2') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "exit 1" } } } stage('3') { steps { sh 'exit 0' } } } } buildResult,以防不稳定或其他原因。您甚至可以使构建失败并继续执行管道。

只需确保您的Jenkins是最新的,因为这是一个相当新的功能。