使用workflow_run触发器时,branches-ignore为何阻止所有PR触发工作流?
问题分析与解决方案
你的配置问题在于:branches-ignore 只能过滤**分支推送(push)**触发的源工作流,无法识别PR触发的场景。PR触发的源工作流运行的是特殊的PR合并/头部分支(如 refs/pull/<PR号>/merge),这类ref并不属于常规分支名的范畴,所以你的过滤规则不仅没精准控制PR场景,反而导致了预期外的拦截。
正确配置方式
要让特权工作流仅在PR触发的源工作流完成后运行,应该通过判断源工作流的触发事件类型来实现,而非分支过滤。修改后的配置如下:
on: workflow_run: workflows: [ "Gatsby Publish" ] types: - completed jobs: privileged-task: runs-on: ubuntu-latest # 仅当源工作流由PR触发时才执行 if: github.event.workflow_run.event == 'pull_request' steps: # 在这里添加你的特权操作步骤 - name: Execute privileged action run: echo "Running privileged operation for PR"
逻辑说明
github.event.workflow_run.event会返回源工作流的触发事件类型,PR触发的工作流对应的事件值为pull_request,分支推送触发的则为push。- 移除
branches-ignore后,只要源工作流(Gatsby Publish)完成,就会触发当前工作流,但通过if条件可以精准过滤出PR场景的请求,完全符合你“仅在PR中运行特权操作”的需求。
内容的提问来源于stack exchange,提问作者Holly Cummins
相关产品推荐
相关产品推荐

