获取管道中涉及的每个scm的LastBuiltRevision

时间:2017-05-12 16:59:38

标签: git jenkins jenkins-pipeline

我的管道构建克隆3个git存储库。当我通过这个片段查询构建时,我可以得到第一个git克隆的lastBuiltRevision,但不能获得其他任何一个。

Web UI显示所有三个,因此我知道它们存在于数据中

def getLastBuiltRevisionForBuild(def jobName, def buildNo) {
    def instance = Hudson.instance
    def job = instance.getItemByFullName(jobName)
    def data = job.getBuild("${buildNo}").getAction(hudson.plugins.git.util.BuildData.class)
    return data.getLastBuiltRevision()
}

如果我的管道中有多个签出,我怎样才能获得最后构建的修订版?

1 个答案:

答案 0 :(得分:0)

不是getAction而是getActions来获取每个结帐的数据对象。然后我们可以使用getRemoteUrls()来识别使用哪个 - 显然这里的错误检查会很好

def dumpLastBuiltRevisionsForMultipleRepositories(def jobName, def buildNo) {
    def instance = Hudson.instance
    def job = instance.getItemByFullName(jobName)
    def build = job.getBuild("${buildNo}")
    for (def data in build.getActions(hudson.plugins.git.util.BuildData.class) ) {
        println data.getRemoteUrls()[0]
        println data.getLastBuiltRevision()
    }    
}