如何在声明性Jenkisfile中使用上游触发器

时间:2018-03-01 15:57:17

标签: jenkins jenkins-pipeline

声明性Jenkins文件中上游触发器的正确​​用法是什么?

我尝试添加依赖项触发器,以便在另一个项目成功构建后触发管道。

github上的jenkisci doku将上游事件列为可能的管道触发器here

我的Jenkisfile目前看起来像这样:

pipeline {
agent { 
    docker {
        ...
    }
}
options {
    timeout(time: 1, unit: 'HOURS')
    buildDiscarder(logRotator(numToKeepStr:'10'))
}

triggers {
    upstream 'project-name,other-project-name', hudson.model.Result.SUCCESS
}

导致以下错误:

WorkflowScript: 16: Arguments to "upstream" must be explicitly named. @ line 16, column 9.
       upstream 'project-name,other-project-name', hudson.model.Result.SUCCESS
       ^

更新

我根据代码段here更改了上游触发器的语法。所以,现在至少没有语法错误了。但是触发器仍未按预期工作。

 triggers {
    upstream(
        upstreamProjects: 'project-name,other-project-name', 
        threshold: hudson.model.Result.SUCCESS)
}

如果我正确理解文档,如果两个声明的作业之一成功完成,则应触发此管道?

1 个答案:

答案 0 :(得分:0)

如果两个项目都在同一个文件夹中,并且jenkins知道下游项目的jenkinsfile(下面提到的代码)(即下游项目已经运行了一次),这应该适合你:

   triggers {  
        upstream(upstreamProjects: "../projectA/master", threshold: hudson.model.Result.SUCCESS)
    }