在仓库中使用 pull_request vs pull_request_target 请求分支的区别

10
我想在我们的代码库中使用 这个 GitHub Action 来检查 PR,我们会创建一个分支(从同一代码库的主分支)的 PR,并在该 PR 中处理反馈 / 合并反馈,最后合并到主分支。我使用 pull_request 事件触发器来触发此操作。

当我在虚拟 PR 上测试此操作时,我遇到了以下错误:

错误:需要参数 token 或 opts.auth

类似于 此类评论 给我留下了这样的感觉,即此行:此操作中的这一行 没有获取到 GITHUB_TOKEN

根据 GitHub 安全实验室发布的文章,我发现:

通过pull_request_target触发的工作流具有对目标存储库的写入权限,并且可以访问目标存储库的机密信息。如果在同一存储库中的分支上触发了 pull_request 的工作流,则情况也是如此,但不包括外部分叉。后者背后的原因是,如果创建 PR 的用户已经对目标存储库具有写入权限,则共享存储库机密信息是安全的。 基于此,我猜测 pull_request 应该能够访问该令牌。在我们的设置中是否有遗漏的地方?
1个回答

3

事实证明,在工作流中,我需要将GITHUB_TOKEN作为环境变量提供给该操作。

...
    jobs:
      check-pr-title-or-commit-message:
        runs-on: [self-hosted, dev]
        steps:
          - name: Check PR Title or Commit Message
            uses: amannn/action-semantic-pull-request@v3.4.0
            with:
              validateSingleCommit: true
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接