如何获取触发我的多分支 Jenkins 构建的 Github PR 的标签列表

How to get the list of labels of the Github PR that triggered my multibranch Jenkins build

更准确地说,我需要获取触发我的多分支构建的 PR 的标签列表。可能吗?

我知道 https://github.com/jenkinsci/pipeline-github-plugin 但使用了不兼容版本的 Jenkins 和多分支管道。

经过一番调查,我发现了两种获取 PR 标签列表的方法。

  1. 需要在 Jenkins 凭据中为 github 用户配置,并且需要分配节点以通过 curl 发送 http 请求。
def getLabels() {

    def labels

    def scmHead = jenkins.scm.api.SCMHead.HeadByItem.findHead(currentBuild.rawBuild.getParent())
    def owner = scmHead.getSourceOwner()
    def repo = scmHead.getSourceRepo()
    def prId = scmHead.getId()

    withCredentials([usernamePassword(credentialsId: 'GITHUB_CREDENTIALS_ID', usernameVariable: 'UUU', passwordVariable: 'PPP')]) {
        def json = sh(
                script: "curl -u ${env.UUU}:${env.PPP} https://api.github.com/repos/${owner}/${repo}/issues/${prId}",
                returnStdout: true
        )

        // requires https://plugins.jenkins.io/pipeline-utility-steps plugin
        def prInfo = readJSON(text: json)

        labels = prInfo.labels
    }
    return labels
} 
  1. 通过 https://github.com/jenkinsci/pipeline-github-plugin,需要升级 Jenkins 最高 v2.128 或更新版本。
     if (env.BRANCH_NAME ==~ /PR-\d+/) {
         pullRequest.labels.each{
            echo "label: $it"
         }
     }