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

合并PR时GitHub Actions重复运行两次的问题如何解决?

GitHub Action合并PR重复触发解决方案

重复触发原因

你遇到的合并PR时两次运行的问题,根源是使用变基合并(Rebase Merge)或压缩合并(Squash Merge)时的GitHub机制:

  1. 合并操作执行前,GitHub会更新PR对应的提交HEAD,触发pull_request的synchronize事件,运行第一次workflow
  2. 合并完成后新提交推送到master/preview分支,触发push事件,运行第二次workflow

调整方案

你可以直接在原有配置基础上新增Workflow级别的执行条件,跳过PR合并时触发的pull_request事件运行,仅保留push事件的构建:

name: Continuous Integration

# 新增全局执行条件
if: github.event_name != 'pull_request' || github.event.pull_request.merged == false

on:
  schedule:
    - cron: "0 */3 * * *"
  push:
    branches:
      - master
      - preview
  pull_request:
    types: [ opened, synchronize, reopened ]
    branches:
      - master
      - preview

# 后续保留你原有的jobs配置即可

规则说明

  • 非PR事件(定时任务、push事件)不受条件限制,正常运行
  • PR事件仅在PR未合并状态下(新建、提交新代码、重新打开PR)运行,PR合并时触发的synchronize事件会因为merged字段为true被直接跳过

可选替代方案

如果你开启了分支保护规则,要求PR合并前必须通过workflow检查,上述全局条件可能导致合并不通过,可以改为给pull_request对应的job单独加条件,或者改用普通合并(Create a merge commit)模式,该模式不会触发合并前的synchronize事件,也不会出现重复运行问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:15:10