如何在GitHub Actions的PR中添加UI可见的自定义检查状态?
问题根源与解决方法
1. 接口用错了
你调用的Commit Status API,只会在仓库主页的提交记录旁显示小状态图标,不会出现在PR的「检查」标签页里。而super-linter那种可展开的详细检查状态,用的是GitHub Checks API——这是两个完全不同的接口,这就是UI没显示的核心原因。
2. 正确实现步骤
(1)配置权限
在GitHub Actions的workflow文件里,给任务分配必要权限:
permissions: checks: write contents: read
创建检查状态必须要有checks: write权限。
(2)调用Checks API生成检查项
用脚本调用Checks API,核心参数不能错:
name:检查项的名称(对应super-linter里的Linted: ...)head_sha:PR的头提交SHA,用${{ github.event.pull_request.head.sha }}获取;如果是push事件,用${{ github.sha }}status:可选queued/in_progress/completed- 若状态为
completed,还要指定conclusion(比如success/failure)和output来展示详细内容
示例curl命令(在Actions中执行):
curl -X POST \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Accept: application/vnd.github.v3+json" \ ${{ github.api_url }}/repos/${{ github.repository }}/check-runs \ -d '{ "name": "自定义检查: 代码规范扫描", "head_sha": "${{ github.event.pull_request.head.sha }}", "status": "completed", "conclusion": "success", "output": { "title": "代码规范扫描通过", "summary": "所有文件符合规范要求", "text": "- 扫描文件数: 12\n- 发现问题数: 0" } }'
(3)关键注意点
- 别再混用Commit Status和Checks API:前者是轻量状态标记,后者才是生成带详情的检查项
- 默认的
GITHUB_TOKEN配置权限后就能用,不需要手动创建个人令牌
3. 验证
调用成功后,去PR页面的「检查」标签页,就能看到自定义的检查项,点击可展开查看详细内容,和super-linter的效果一致。
内容的提问来源于stack exchange,提问作者rzlvmp
相关产品推荐
相关产品推荐

