Jenkins pipeline触发下游流水线

发布于:2025-07-22 ⋅ 阅读:(17) ⋅ 点赞:(0)

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、观察效果


网站公告

今日签到

点亮在社区的每一天
去签到