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

GitHub Actions工作流触发指定分支却执行main分支代码求助

GitHub Actions工作流拉错分支代码排查方案

问题概述

配置了仅在feature/prod_ios_workflow分支推送时触发的GitHub Actions工作流,但实际运行时拉取的是main分支代码,导致依赖版本不匹配(如flutter_localizations残留、screenshot版本过低),引发构建报错。

排查步骤

1. 确认工作流文件所在分支

GitHub Actions会优先使用触发分支下的工作流文件,如果feature/prod_ios_workflow分支中不存在对应的.github/workflows/xxx.yml文件,系统会自动使用默认分支(main)的工作流配置。

  • 检查feature/prod_ios_workflow分支是否包含该工作流文件,且内容与本地编写的一致。

2. 检查checkout步骤的分支配置

工作流中拉取代码的actions/checkout步骤如果硬编码指定了分支,会强制拉取对应分支代码,忽略触发分支。

  • 错误示例(强制拉main):
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        ref: main
    
  • 正确配置(拉取触发分支):
    - name: Checkout code
      uses: actions/checkout@v4
    
    默认情况下,actions/checkout会拉取触发工作流的分支代码,无需额外指定ref参数。

3. 验证缓存是否区分分支

如果使用了缓存(如actions/cache)且未将分支名加入缓存key,可能导致不同分支共用缓存,残留main分支的旧依赖或构建文件。

  • 修改缓存key,加入分支名以区分:
    - name: Cache Flutter dependencies
      uses: actions/cache@v3
      with:
        path: |
          ~/.pub-cache
          ios/Pods
        key: ${{ runner.os }}-flutter-${{ hashFiles('pubspec.lock') }}-${{ github.ref_name }}
    

4. 添加分支验证步骤

在工作流中加入打印当前分支的步骤,确认实际拉取的分支是否正确:

- name: Print current branch
  run: echo "Current branch: ${{ github.ref_name }}"

运行后查看工作流日志,确认输出的分支是否为feature/prod_ios_workflow。

5. 检查仓库Actions权限与规则

  • 确认仓库的「Settings > Actions > General」中,工作流权限设置为「Read and write permissions」,避免拉取代码时权限不足。
  • 检查分支保护规则,确认feature/prod_ios_workflow分支未被限制运行工作流。

内容的提问来源于stack exchange,提问作者IKRAM UL HAQ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:02:05