0

对于一个项目,AI 想要在 B 构建成功时触发它的构建。我可以通过 Jenkins 控制台通过从构建触发器中选择选项来实现这一点。

现在我想通过在项目 A 的 Jenkins 文件中编写相应的步骤来实现这一点。

可以使用哪些步骤我试过 triggers{ upstream('B',hudson.model.Result.SUCCESS) }

4

2 回答 2

0

只是一个建议,您也可以只在项目B中对此进行更改。在项目B的发布操作中添加一个步骤以在B成功时构建项目A:

项目 B:

pipeline{
    agent{
        label "node"
    }
    stages{
        stage("A"){
            steps{
                echo "========executing A========"
            }
        }
    }
    post{
        success{
            build propagate: false, job: 'A'
        }
    }
}

post {}将在项目B构建时执行,其中的代码success {}只有在项目B成功时才会执行。 build propagate: false, job: 'A'将调用项目 A。propogate: false确保项目 B 不等待项目 A 完成,而是简单地调用它。

于 2021-07-20T12:16:19.440 回答
0

来自https://www.jenkins.io/doc/book/pipeline/syntax/#triggers

上游触发器“接受逗号分隔的作业字符串和阈值。当字符串中的任何作业以最小阈值完成时,管道将被重新触发。例如:triggers { upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) }

要在项目 B 成功构建后触发项目 A 的构建,项目 A 的 JenkinsFile 可能如下所示:

properties(
  [pipelineTriggers(
    [upstream(
        upstreamProjects: 'project_b_job_path',
        threshold: hudson.model.Result.SUCCESS         
    )]
  )]
)

其中project_b_job_path等于作业的绝对相对路径,例如:

  • projects/project_b/master
  • ../project_b/master
  • test_branch
于 2021-07-20T11:58:09.730 回答