拒绝允许 GitHub 应用程序创建或更新工作流程。

9
我有一个使用GitHub action的动作。
github_token: ${{ secrets.GITHUB_TOKEN }}

当我运行它时,我得到:
  ! [remote rejected]     tmp_upstream/master -> master (refusing to allow a GitHub App to create or update workflow `.github/workflows/build-images-workflow-run.yml` without `workflows` permission)
error: failed to push some refs to '***github.com/myname/repo'

https://docs.github.com/en/actions/reference/authentication-in-a-workflow 解释了

GitHub会自动创建一个GITHUB_TOKEN密钥,用于在工作流程中进行身份验证。您可以使用GITHUB_TOKEN来进行工作流程运行的认证。

但是我使用了工作流程,似乎并没有创建出该令牌。我尝试创建一个个人令牌,并尝试以GITHUB_TOKEN命名保存,但它提示名称无效。 我应该如何解决这个问题?

personal token


当您创建令牌时,是否勾选了更新工作流的框? - mnestorov
@mnestorov 是的.. - sony
3个回答

6
为了修改工作流程,例如用于为GitHub Actions发布令牌的应用程序,需要`workflow`范围。这是因为您添加到存储库中的GitHub应用程序在未经您许可的情况下无法访问存储库中的密码。发出给GitHub Actions的令牌默认不具备此权限。
如果您不需要修改工作流文件,则可以避免对其进行修改,问题就会消失。如果需要修改它们,您可以创建一个适当范围的PAT,并将其存储在不以`GITHUB`开头的名称下,例如`WORKFLOW_TOKEN`。然后,您可以调整操作以使用此内容:
github_token: ${{ secrets.WORKFLOW_TOKEN }}

说实话,根据第二种方法我并不完全理解。https://dev.to/dtinth/authenticating-as-a-github-app-in-a-github-actions-workflow-27co 我甚至不需要这样做,因为当工作流被激活时,令牌会自动生成。 - sony
是的,GitHub Actions会创建一个令牌,但您不能使用该令牌来修改工作流文件。如果您创建了一个具有“workflow”范围的不同命名的PAT或其他令牌,则可以修改这些文件。 - bk2204
我不想修改工作流程。这个工作流是因为我fork了这个项目而存在的。我只想执行这个工作流。这个工作流仅仅是将upstream同步到我的fork中。就这样。 - sony
如果您正在推送包含工作流文件的数据,则必须在令牌上具有“workflow”范围,即使该数据通常只存在于主项目中。 - bk2204

3

3
生成令牌时,需要为令牌授予正确的权限。您必须在 workflow 旁边勾选以下复选框,以获得 update 权限。

enter image description here


说实话,我并不完全理解这个,根据方法2 https://dev.to/dtinth/authenticating-as-a-github-app-in-a-github-actions-workflow-27co 我甚至不需要这样做,因为当工作流被激活时,令牌已经被创建好了。 - sony

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