Jenkins声明性管道中的中止,而不是错误,

时间:2017-08-07 12:14:21

标签: jenkins jenkins-pipeline

问题

我们的源是一个包含多个项目的大型存储库。如果在特定区域内发生提交,我们需要能够避免在存储库中构建所有项目。我们正在使用管道来管理构建过程。

研究

git插件提供了忽略某些用户,路径和消息内容的提交的功能。但是,正如我们使用管道一样,我们认为我们遇到了JENKINS-36195所描述的问题。在最近的一篇评论中,Jesse建议检查变更集,如果变化看起来很无聊则提前返回。他提到退货声明在图书馆,封闭等内部不起作用,但他没有提到如何裁员。

潜在方法

  1. 我们已考虑使用错误步骤,但这会导致作业被标记为失败,需要进行调查。
  2. 虽然作业结果可以标记为 NOT_BUILT ,但作业不会中止,但会继续处理所有阶段。
  3. 问题

    如果不将其标记为失败并处理管道的所有阶段(以及可能的其他管道),您将如何在早期步骤中止作业?

1 个答案:

答案 0 :(得分:1)

你能尝试在管道中使用try catch finally块吗?

try{

}
catch {

}
finally{

}

我想你也可以在管道中使用post build动作。

pipeline {
agent any
stages {
    stage('Test') {
        steps {
            sh 'make check'
        }
    }
}
post {
    always {
        junit '**/target/*.xml'
    }
    failure {
        mail to: team@example.com, subject: 'The Pipeline failed :('
    }
}

}

文档位于https://jenkins.io/doc/book/pipeline/syntax/#post

下方

您也可以尝试在构建步骤之外使用下面的条件,条件是Slawomir Demichowicz在票证中指定的条件。

if (stash.isJenkinsLastAuthor() && !params.SKIP_CHANGELOG_CHECK) {
    echo "No more new changes, stopping pipeline"
    currentBuild.result = "SUCCESS"
    return
}

我不确定这可以帮到你。