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

如何配置GitHub Actions使tests作业仅在直接推送而非合并时运行?

解决方案

可以通过结合事件类型与GitHub上下文字段,精准控制tests作业的运行时机,满足直接推送任何分支时运行,合并操作时不运行的需求,作业级条件配置如下:

jobs:
  tests:
    runs-on: ubuntu-latest
    if: |
      (github.event_name == 'push' && !exists(github.event.push.merge_commit_sha)) ||
      (github.event_name == 'pull_request' && github.event.pull_request.merged == false)
    steps:
      - uses: actions/checkout@v4
      # 你的其他测试步骤

  build:
    runs-on: ubuntu-latest
    needs: tests
    steps:
      # 你的构建步骤

条件逻辑说明

  • push事件场景:通过!exists(github.event.push.merge_commit_sha)判断是否为普通直接推送——只有当推送不是合并操作产生的(无合并commit SHA)时,才运行tests。这既覆盖了所有分支的直接代码推送(包括develop分支),又排除了PR合并或手动分支合并后推送的情况。
  • pull_request事件场景:通过github.event.pull_request.merged == false确保tests仅在PR打开、更新时运行,PR合并完成时不触发,避免重复执行测试。

配置后效果:

  • 直接推送任意分支(含develop):tests正常运行
  • PR合并到任意分支(含develop):tests不运行
  • PR打开或更新代码:tests正常运行(若工作流监听pull_request事件)
  • 本地合并分支后推送:tests不运行(符合分支间合并操作不执行测试的需求)

内容的提问来源于stack exchange,提问作者k''

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:55:23