Jenkins pipeline触发下游流水线

1、选择关注的上游项目

2、Pipeline脚本参考如下

pipeline {

agent {

label {

label 'slave_nodepoint_22'

retries 3

}

}

stages {

stage('Clean Workspace') {

steps {

cleanWs()

}

}

stage("Test") {

steps {

script {

// 获取上游构建信息

def upstreamBuilds = currentBuild.getBuildCauses('hudson.model.Cause$UpstreamCause')

if (upstreamBuilds) {

// 获取第一个上游构建信息

def upstreamCause = upstreamBuilds[0]

// 获取上游项目名称和构建号

def upstreamProject = upstreamCause.upstreamProject

def upstreamBuildNumber = upstreamCause.upstreamBuild

// 获取上游构建对象

def upstreamRun = Jenkins.instance.getItemByFullName(upstreamProject)

.getBuildByNumber(upstreamBuildNumber as int)

// 获取上游构建开始时间

def upstreamStartTime = upstreamRun.getTime()

// 获取上游构建持续时间(毫秒)

def upstreamDuration = upstreamRun.getDuration()

// 计算上游构建结束时间

def upstreamEndTime = new Date(upstreamStartTime.time + upstreamDuration)

echo "上游项目: ${upstreamProject}"

echo "上游构建号: ${upstreamBuildNumber}"

echo "上游构建开始时间: ${upstreamStartTime}"

echo "上游构建持续时间: ${upstreamDuration}ms"

echo "上游构建结束时间: ${upstreamEndTime}"

} else {

echo "当前构建不是由上游项目触发的"

}

}

}

}

}

}

3、管理员批准脚本签名,对应位置添加如下内容

method hudson.model.Job getBuildByNumber int

method hudson.model.Run getDuration

method hudson.model.Run getTime

method jenkins.model.Jenkins getItemByFullName java.lang.String

staticMethod jenkins.model.Jenkins getInstance

staticMethod jenkins.model.Jenkins getInstance

4、观察效果