You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:08:10