如何在GitHub Actions的PR检查旁添加自定义详情链接(类Jenkins插件)
实现GitHub Actions检查详情链接自定义跳转的方法
你可以通过GitHub的检查运行API来实现类似Jenkins的效果,具体步骤如下:
核心思路
GitHub的检查运行(Check Run)支持自定义「详情」链接,这正是Jenkins PR Builder插件实现的底层逻辑。你只需在工作流中调用GitHub API,更新当前检查运行的详情URL为你的自定义地址即可。
具体实现步骤
获取当前检查运行ID
工作流执行时,GitHub会注入GITHUB_RUN_ID环境变量,通过这个ID调用GitHub API查询对应的检查运行列表,从中提取目标检查运行的ID:curl -H "Authorization: token ${GITHUB_TOKEN}" \ "https://api.github.com/repos/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/check-runs"解析返回的JSON数据,找到你要修改的检查项对应的
id字段。更新检查运行的详情链接
使用获取到的检查运行ID,调用API更新详情URL:curl -X PATCH -H "Authorization: token ${GITHUB_TOKEN}" \ -H "Content-Type: application/json" \ "https://api.github.com/repos/${GITHUB_REPOSITORY}/check-runs/{CHECK_RUN_ID}" \ -d '{"details_url": "你的自定义链接地址"}'把
{CHECK_RUN_ID}替换为实际获取到的ID,你的自定义链接地址换成你想跳转的目标页面。用现成Action简化操作
无需手动写curl命令,可使用actions/github-scriptAction来完成API调用,配置示例如下:- name: 更新检查运行详情链接 uses: actions/github-script@v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const checkRuns = await github.rest.actions.listWorkflowRunCheckRuns({ owner: context.repo.owner, repo: context.repo.repo, run_id: context.runId }); // 根据检查任务名称筛选目标项 const targetCheckRun = checkRuns.data.check_runs.find(run => run.name === "你的工作流任务名称"); if (targetCheckRun) { await github.rest.checks.update({ owner: context.repo.owner, repo: context.repo.repo, check_run_id: targetCheckRun.id, details_url: "你的自定义链接地址" }); }
注意事项
- 默认的
GITHUB_TOKEN已拥有checks:write权限,无需额外配置权限。 - 自定义链接需确保公开可访问,否则用户无法正常打开。
- 该方法会替换检查运行的默认详情链接,PR底部检查项的「详情」按钮会直接跳转到你设置的地址,对应的提交详情页中也能看到更新后的链接。
内容的提问来源于stack exchange,提问作者Roy Tinker
相关产品推荐
相关产品推荐

