You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitea:如何通过控制台或API获取Pull Request审批状态适配Jenkins测试流水线

Jenkins PR审批状态的获取方法

一、控制台手动查看

  • 如果你用的是GitHub/GitLab这类代码托管平台的PR集成插件(比如GitHub Pull Request Builder),直接在Jenkins对应流水线的PR详情页就能看到审批状态——比如已批准、待审批、拒绝等,不少插件会把审批信息直接展示在构建历史或者PR卡片上。
  • 要是用Jenkins自带的拉取请求构建功能,也可以通过页面里的PR跳转链接,直接去代码托管平台的PR页面看审批状态,Jenkins控制台里一般都有这个入口。

二、API调用获取

1. 调用代码托管平台API(更靠谱)

PR的审批状态其实存在于代码托管平台,不是Jenkins本地,所以直接调用对应平台的API是最准确的:

  • GitHub:调用GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews接口,返回的评审记录里,找state为APPROVED的条目,只要有一条有效审批,就说明PR已通过审批。
  • GitLab:调用GET /projects/{id}/merge_requests/{merge_request_iid}/approvals接口,返回的approved_by会列出所有审批人,approval_status字段直接显示当前审批状态。

2. 调用Jenkins自身API

如果你的Jenkins插件已经把PR审批状态同步到构建数据里,也可以通过Jenkins API获取:

  • 先请求构建详情:GET /job/{job_name}/{build_number}/api/json,在返回的actions字段里找和PR相关的插件数据(比如GitHubPR对应的action),里面可能包含审批状态的字段。
  • 部分插件会提供专门的API端点,比如GitHub Pull Request Builder插件可能会在PR对应的构建数据里嵌入评审状态信息。

三、流水线代码里直接获取(最适合自动化场景)

在Jenkinsfile里直接写逻辑获取审批状态,不用手动去调用API,刚好适配你要根据状态切换测试套件的需求:

  • GitHub场景:用githubPullRequest步骤或者Groovy代码调用GitHub API,示例:
def prNumber = env.CHANGE_ID
def repoOwner = env.CHANGE_TARGET_OWNER // 也可以手动指定
def repoName = env.CHANGE_TARGET_REPO // 也可以手动指定

def reviews = githubApiRequest(apiUrl: "https://api.github.com/repos/${repoOwner}/${repoName}/pulls/${prNumber}/reviews")
def isApproved = reviews.any { it.state == 'APPROVED' }

if (isApproved) {
    runFullTestSuite()
} else {
    runSmokeTestSuite()
}
  • GitLab场景:用GitLab插件的步骤或者调用GitLab API,示例:
def mrIid = env.CHANGE_ID
def projectId = env.GITLAB_PROJECT_ID

def approvals = gitlabApiRequest(apiUrl: "https://gitlab.com/api/v4/projects/${projectId}/merge_requests/${mrIid}/approvals")
def isApproved = approvals.approval_status == 'approved'

if (isApproved) {
    runFullTestSuite()
} else {
    runSmokeTestSuite()
}

注意:调用第三方API时,要在Jenkins里配置好对应的凭证(比如GitHub个人访问令牌、GitLab访问令牌),确保有读取PR评审信息的权限。

内容的提问来源于stack exchange,提问作者nm1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:01:06