如何获取触发我的多分支 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 标签列表的方法。
- 需要在 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
}
- 通过 https://github.com/jenkinsci/pipeline-github-plugin,需要升级
Jenkins 最高 v2.128 或更新版本。
if (env.BRANCH_NAME ==~ /PR-\d+/) {
pullRequest.labels.each{
echo "label: $it"
}
}
更准确地说,我需要获取触发我的多分支构建的 PR 的标签列表。可能吗?
我知道 https://github.com/jenkinsci/pipeline-github-plugin 但使用了不兼容版本的 Jenkins 和多分支管道。
经过一番调查,我发现了两种获取 PR 标签列表的方法。
- 需要在 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
}
- 通过 https://github.com/jenkinsci/pipeline-github-plugin,需要升级 Jenkins 最高 v2.128 或更新版本。
if (env.BRANCH_NAME ==~ /PR-\d+/) {
pullRequest.labels.each{
echo "label: $it"
}
}