如何让GitHub Actions工作流仅在production分支的PR评审时运行?
解决GitHub Actions仅在production分支PR评审时触发的问题
你的问题出在pull_request_review事件的branches字段过滤逻辑存在隐性坑点,你尝试的三种写法虽都是合法YAML格式,但实际场景中可能因分支匹配规则、跨仓库PR等因素导致过滤失效。
正确配置方式:用Job级条件精准控制
最可靠的方案是在Job中添加判断条件,直接校验PR的目标分支(base分支)是否为production,确保只有符合条件的场景才执行Job:
on: pull_request_review: types: [submitted, edited] jobs: production-review-check: runs-on: ubuntu-latest # 仅当PR的目标分支是production时执行Job if: ${{ github.event.pull_request.base.ref == 'production' }} steps: - name: 示例执行步骤 run: echo "仅针对production分支的PR评审才会运行此步骤"
原配置失效的原因
GitHub Actions中pull_request_review的branches字段理论上是过滤PR的目标分支,但实际使用中有不少易踩的坑:
- 仓库分支名大小写敏感(比如
Production和production会被视为不同分支),可能导致匹配失败 - 来自fork仓库的PR,分支过滤逻辑可能无法严格生效
- 部分场景下,GitHub事件触发机制会忽略分支过滤规则,直接触发工作流
而通过if条件直接读取事件中的pull_request.base.ref字段,能精准控制Job的执行时机,避开上述问题。
内容的提问来源于stack exchange,提问作者Pablo Fernandez
相关产品推荐
相关产品推荐

