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@v4actions/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
相关产品推荐
相关产品推荐

