Problem
在发布 hexo-theme-alog 新版本时,由于在 feature 分支进行新功能开发,合并回 master 是需要提个 PR, 我使用 Github Action 进行 Issue 和 PR 的自动回复,结果报错了, 如下:
HttpError: Resource not accessible by integration
Reason
我猜测是权限问题导致的,但是又有些疑惑,疑问 workflow 的配置是从另一个仓库复制过来的,那个仓库运行是正常的。
经过查阅 Github 文档,找到了答案, Github_Token 的默认权限如下:
| Scope | Default access(permissive) | Default access(restricted) | Maximum access for pull requests from public forked repositories | 
|---|---|---|---|
| actions | read/write | none | read | 
| checks | read/write | none | read | 
| contents | read/write | read | read | 
| deployments | read/write | none | read | 
| id-token | none | none | read | 
| issues | read/write | none | read | 
| metadata | read | read | read | 
| packages | read/write | read | read | 
| pages | read/write | none | read | 
| pull-requests | read/write | none | read | 
| repository-projects | read/write | none | read | 
| security-events | read/write | none | read | 
| statuses | read/write | none | read | 
可以看到, GITHUB_TOKEN 的 Issue 和 PR 的默认权限是 read, 所以当 Github Action 使用这个 Token 调用评论接口时会报上面的错误。
Solutions
- 单文件设置权限
 
在 workflow 配置文件单独设置权限:
jobs:
  auto-reply:
    # 权限设置
    permissions:
      contents: write
      id-token: write
      issues: write
      pull-requests: write
- 仓库整体权限设置:
 
设置路径: Respository setting => Action => General => Workflow permissions