Jenkins 声明式管道:找出触发工作

Har*_*own 5 jenkins jenkins-pipeline jenkins-2 jenkins-declarative-pipeline

我们有一个使用声明性管道的 Jenkins 工作。

此作业可以由不同的其他构建触发。

在声明性管道中,如何找出哪个构建触发了管道?

Lar*_*Cai 6

下面的代码示例

管道{
    代理任何
    阶段{
        阶段('找到上游工作'){
            脚步 {
                脚本 {
                    def 原因 = currentBuild.rawBuild.getCauses()
                    for(原因中的原因){
                        if (cause.class.toString().contains("UpstreamCause")) {
                            println "这个工作是由工作造成的 " + cause.upstreamProject
                        } 别的 {
                            println "根本原因:" + cause.toString()
                        }
                    }
                }      
            }
        }
    }
}

您可以检查作业的 REST API 以获取如下额外信息

{
  "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
  “行动”:[
    {
      "_class": "hudson.model.ParametersAction",
      “参数” : [

      ]
    },
    {
      "_class": "hudson.model.CauseAction",
      “原因”:[
        {
          "_class": "hudson.model.Cause$UpstreamCause",
          "shortDescription" : "由上游项目启动 \"larrycai-sto-46908390\" 版本号 7",
          “上游构建”:7,
          "upstreamProject" : "larrycai-sto-46908390",
          "upstreamUrl" : "job/larrycai-sto-46908390/"
        }
      ]
    },

参考: