GitHub工作流从指定Commit创建分支报错:无workflows权限
问题:从指定Commit SHA创建分支时触发GitHub工作流权限报错
工作流触发与checkout配置
on: workflow_dispatch: branches: - main - release/* ... steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.ref }} fetch-depth: 0 ... - name: Create the release branch shell: pwsh env: ref: ${{ github.ref }} commit_sha: ${{ github.event.inputs.commit_sha }} GH_TOKEN: ${{ github.token }} run: | .\scripts\MyPowershellScript.ps1
PowerShell脚本内容
$releaseBranch = ... # 此处为分支名称生成逻辑 git branch $releaseBranch $env:commit_sha git checkout $releaseBranch git push origin $releaseBranch
报错信息
! [remote rejected] release/v0.7 -> release/v0.7 (refusing to allow a GitHub App to create or update workflow `.github/workflows/Create_Release.yaml` without `workflows` permission)
注:若移除git branch命令中的$env:commit_sha参数(即基于当前checkout的分支创建新分支),整个流程运行正常。
原因解释
核心问题出在你指定的目标Commit SHA里,.github/workflows/Create_Release.yaml文件的版本,和触发工作流时所在分支的该文件版本不一致。
当你基于这个SHA创建新分支并push时,GitHub会判定这是对工作流文件的修改操作——哪怕你只是将旧版本的文件同步到新分支,而非主动编辑。而GitHub Actions默认的GITHUB_TOKEN没有workflows权限(该权限需单独配置,默认不开启),因此远程仓库直接拒绝了这次push请求。
如果不指定SHA,你是基于当前checkout的分支创建新分支,两个分支的工作流文件版本完全一致,自然不会触发这个权限校验。
内容的提问来源于stack exchange,提问作者Marco Merola
相关产品推荐
相关产品推荐

