如何从jenkins管道中的另一个作业获取最新的构建号

王子1*_*986 3 jenkins jenkins-pipeline

我正在使用jenkins管道2.0,我想获得另一份工作的最新成功构建号.

什么是使用的管道语法?

Vit*_*nko 8

你可以这样得到它

def buildNumber = Jenkins.instance.getItem('jobName').lastSuccessfulBuild.number
Run Code Online (Sandbox Code Playgroud)

如果您获得了a RejectedAccessException,则必须批准这些方法,请参阅进程内脚本批准

  • 考虑使用“getItemByFullName()”而不是“getItem()”。如果您有文件夹并且“jobName”位于另一个文件夹中,这一点可能很重要。 (3认同)
  • @Florian 来了 [Job#getLastSuccessfulBuild](https://javadoc.jenkins-ci.org/hudson/model/Job.html#getLastSuccessfulBuild--)。它实际上是一种方法,但 groovy 允许以类似字段的方式调用它。 (2认同)

小智 6

要添加到 Vitalii 的答案中,这是在您使用 Multibranch Pipeline Plugin 的情况下:

def buildNumber = Jenkins.instance.getItem('jobName').getItem('branchName').lastSuccessfulBuild.number
Run Code Online (Sandbox Code Playgroud)


王子1*_*986 5

在企业环境中获得批准(很多请求和批准)太烦人了所以我使用以下 API 方式来获取最新的内部版本号。

import groovy.json.JsonSlurperClassic
httpRequest url: 'https://jenkinsurl.local/job/Build/api/json', outputFile: 'output.json'

def jsonFile = readFile(file: 'output.json')
def data = new JsonSlurperClassic().parseText(jsonFile)
latestBuildNumber = "${data.lastSuccessfulBuild.number}"
Run Code Online (Sandbox Code Playgroud)