如何让GitHub Action提交后触发pull_request工作流重新运行?
解决bot提交PR后无法触发工作流的办法
1. 用个人访问令牌(PAT)替代默认GITHUB_TOKEN推送
GitHub自带的GITHUB_TOKEN有触发限制——用它推的提交不会触发后续工作流,这是防循环触发的安全机制。要绕开这个限制,就得换用有仓库读写权限的PAT来做推送:
- 去GitHub账号设置里生成个PAT,勾选
repo权限(保证能读写仓库代码)。 - 把这个PAT存到仓库的Secrets里,比如命名成
BOT_PAT。 - 修改你的手动Action工作流,推送代码时用这个PAT替换默认的
GITHUB_TOKEN:
这样推完代码,git remote set-url origin https://${{ secrets.BOT_PAT }}@github.com/${{ github.repository }}.git git push origin HEAD:${{ github.head_ref }}on: pull_request的工作流就会正常触发。
2. 提交后调用API手动触发目标工作流
要是不想换PAT,也可以在bot提交完成后,调用GitHub API触发PR工作流:
- 同样先准备好带
repo权限的PAT,存成仓库Secret(比如BOT_PAT)。 - 在手动Action里加个步骤,调用API触发工作流:
注意:目标PR工作流得加上curl -X POST \ -H "Authorization: token ${{ secrets.BOT_PAT }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/${{ github.repository }}/actions/workflows/<你的工作流文件名>/dispatches \ -d '{ "ref": "${{ github.head_ref }}", "inputs": { "pr_number": "${{ github.event.pull_request.number }}" } }'on: workflow_dispatch配置来支持手动触发,还可以通过pr_number输入参数关联对应的PR,确保工作流能正确处理内容。
3. 扩展PR工作流的触发条件
如果你的场景允许,可以给PR工作流加个push触发事件,针对PR的分支:
on: pull_request: push: branches: - 'refs/pull/*/head'
这样bot往PR分支推代码时,push事件会触发工作流。不过要注意,这会让所有推送到PR分支的操作都触发工作流,包括你自己的手动提交,按需选用。
内容的提问来源于stack exchange,提问作者Sh.F
相关产品推荐
相关产品推荐

