是否有任何方法可以从另一个管道中获取jenkins管道的当前阶段(运行、成功、失败、中止)

nzkunb0c  于 2022-11-01  发布在  Jenkins
关注(0)|答案(1)|浏览(115)

我有两条管道。管道A(应用程序构建)和管道B(应用程序检查)。管道A触发管道B,并且两者同时运行。在管道B中的特定阶段之前(运行检查)我需要验证管道A是否成功。如果不成功,请等待并检查一段时间,直到管道A完成。因此,如果“A”成功,则管道B可以继续检查,否则将以失败退出。我需要知道的是,是否有任何方法可以使用管道“A“的内部版本号从管道B检查管道A的内部版本状态。我将管道A的内部版本号传递给管道B。
我查找是否有任何env变量可用于状态检查,但没有找到。我将管道A的内部版本号传递给管道B。

4xrmg8kj

4xrmg8kj1#

您可以创建管道B,如下所示。在这里,您可以使用waitUntil进行等待。

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                        echo "Waiting"
                        def jobName = "JobA"
                        def buildNum = "92"
                        waitUntil { !isPending(jobName, buildNum) }

                        if(getStatus(jobName, buildNum).equals('SUCCESS')) {
                            echo "Job A is Successful"
                        } else {
                            echo "Job A Failed"
                        }
                    }

               }
            }

        }
}

def isPending(def JobName, def buildNumber) {
    def buildA = Jenkins.instance.getItemByFullName(JobName).getBuild(buildNumber)
    return buildA.isInProgress()
}

def getStatus(def JobName, def buildNumber) {
    def status = Jenkins.instance.getItemByFullName(JobName).getBuild(buildNumber).getResult().toString()
    return status
}

相关问题