【问题标题】:How to get latest build number from another job in jenkins pipeline如何从詹金斯管道中的另一个工作中获取最新的内部版本号
【发布时间】:2018-05-26 01:36:42
【问题描述】:

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

要使用什么管道语法?

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    你可以这样得到它

    def buildNumber = Jenkins.instance.getItem('jobName').lastSuccessfulBuild.number
    

    如果您获得RejectedAccessException,则必须批准这些方法,请参阅In-process Script Approval

    【讨论】:

    • lastSuccessfulBuild 字段是否有一些文档?在 Jenkins 的官方 API 文档中找不到任何提及。
    • @Florian 给你Job#getLastSuccessfulBuild。它实际上是一种方法,但 groovy 允许以类似字段的方式调用它。
    • 考虑使用getItemByFullName() 而不是getItem()。如果您有文件夹并且 jobName 在另一个文件夹中,这可能很重要。
    【解决方案2】:

    为了补充 Vitalii 的答案,这是在您使用 Multibranch Pipeline Plugin 的情况下:

    def buildNumber = Jenkins.instance.getItem('jobName').getItem('branchName').lastSuccessfulBuild.number
    

    【讨论】:

      【解决方案3】:

      在企业环境中获得批准很烦人(大量的请求和批准) 所以我正在使用以下 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}"
      

      【讨论】:

        【解决方案4】:
        def build_job = build job: "Build"
        build_job_number = build_job.getNumber()
        

        【讨论】:

        • 这将构建指定为“Build”的作业名称,然后获取该构建号,这不是 OP 所要求的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 2018-09-18
        • 2019-12-25
        • 1970-01-01
        • 2021-11-11
        相关资源
        最近更新 更多