如何让同一Commit在不同分支触发GitHub Actions工作流重复运行?
解决同一Commit推送到不同分支时GitHub Actions工作流不触发的问题
GitHub Actions默认会跳过已在仓库其他分支执行过的相同Commit SHA的工作流运行——它通过Commit SHA和工作流配置判断是否已有完成的运行。要实现同一Commit推送到不同分支时重新触发工作流,可通过以下两种方法解决:
方法1:为工作流添加分支相关的唯一标识
修改工作流文件的名称,将分支名纳入名称的一部分,让GitHub将不同分支的工作流视为独立实例:
name: CI - ${{ github.ref_name }} on: push: branches: ['**'] # 匹配所有分支 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 这里添加你的构建、测试等步骤
每个分支的工作流名称(如CI - main、CI - feature-branch)会不同,GitHub会分别触发运行,不会因为Commit SHA相同而跳过。
方法2:配置并发组区分分支与Commit的组合
通过concurrency字段定义基于分支和Commit SHA的唯一并发组,确保不同分支的同一Commit被视为独立的运行任务:
name: CI on: push: branches: ['**'] concurrency: # 用分支引用和Commit SHA组合作为并发组ID group: ${{ github.ref }}-${{ github.sha }} # 禁止取消正在进行的运行(可选,根据需求调整) cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 你的工作流步骤
这个配置会让GitHub认为不同分支下的同一Commit属于不同的并发组,从而允许重新触发工作流。
注意事项
- 确保工作流文件在目标分支上的内容一致,否则分支间的配置差异也可能导致触发行为变化。
- 私有仓库使用这些配置不会额外产生费用,仅会增加工作流运行次数。
内容的提问来源于stack exchange,提问作者Faizan Khalid
相关产品推荐
相关产品推荐

