我正在尝试编写一个工作流程,自动将拉取请求合并到 github 上的公共存储库。 工作流程如下:
name: X
on:
pull_request:
paths:
- '<path>'
jobs:
Y:
runs-on: ubuntu-latest
permissions:
contents: write
env:
Approve: true
ADDED_FILES_COUNT: ""
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- id: automerge
name: automerge
uses: "pascalgn/[email protected]"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
MERGE_LABELS: ""
注意我更改了写入内容的权限。 尽管如此,查看 github 上的运行操作,presmission 设置为:
因此,当调用自动合并时,会显示错误消息并且合并失败:
重要的是,我已经将项目设置更改为:
为什么会发生这种情况?在这种情况下 PAT 是必须的吗? 谢谢你。
如果您在存储库设置中设置工作流权限,则类似于设置
permissions: write-all
,但 Dependabot PR 除外,默认为只读。它也比设置显式权限安全性低。
但是,如果您确实设置了显式权限,则您未提及的所有范围都将设置为
read
权限。
您设置了
contents: write
,因此其他所有内容都是只读的。要合并 PR,您的代币需要 pull-requests: write
权限。
我会设置它,然后我建议在存储库设置中切换回只读默认值。