GitLab CI Shell Runner切换目录失败(Exit Status 1)求助
解决GitLab CI Shell Runner启动作业时立即失败的问题
从你提供的gitlab-runner --debug run输出日志来看,作业在初始化Shell环境阶段就直接退出(exit status 1),根本没走到切换目录或执行自定义脚本的步骤。下面是针对性的排查和修复方案:
1. 定位Shell初始化失败的核心原因
日志里Runner会按顺序尝试启动不同路径的login shell,但最终返回了错误。你可以手动模拟这个过程来排查:
- 先检查Runner优先尝试的
/usr/local/bin/bash是否存在:
如果这个路径不存在,说明Homebrew安装的bash可能没装好,或者你的系统默认bash在ls -l /usr/local/bin/bash/bin/bash(macOS自带路径)。 - 手动执行login shell命令,看是否会报错:
如果执行后直接退出,大概率是你的登录shell配置文件(/usr/local/bin/bash --login # 如果上面的路径不存在,换成/bin/bash --login~/.bash_profile、~/.bash_login或~/.profile)里有语法错误、不存在的命令,导致shell初始化时直接崩溃。
2. 临时排查配置文件问题
为了验证是不是配置文件的锅,可以先临时重命名这些配置文件:
mv ~/.bash_profile ~/.bash_profile.bak mv ~/.bash_login ~/.bash_login.bak mv ~/.profile ~/.profile.bak
然后重启GitLab Runner:
gitlab-runner restart
如果此时作业能正常启动,就说明问题出在这些配置文件里,你可以逐个恢复并排查具体哪一行代码有问题。
3. 修改Runner的Shell配置
如果默认的Shell路径不对,你可以手动指定Runner使用的Shell:
- 打开Runner的配置文件,通常路径是
~/.gitlab-runner/config.toml - 找到对应你的Runner条目,修改
shell字段为系统可用的Shell路径,比如:[[runners]] name = "Nicks-Bink-iMac" url = "https://gitlab.com/" token = "你的Runner Token" executor = "shell" shell = "/bin/bash" # 换成你确认可用的Shell路径 - 保存后重启Runner生效。
4. 升级GitLab Runner版本
你当前使用的是9.0.2版本,这个版本已经非常老旧了,和最新的macOS、GitLab CI特性兼容性很差。建议升级到最新稳定版:
brew upgrade gitlab-runner # 如果是用其他方式安装的,对应更新即可
新版本会修复很多旧版本的Shell执行器bug,也能更好适配iOS项目的构建环境。
额外提示(后续iOS构建准备)
等Shell问题解决后,记得确保Runner运行的用户环境里:
- 正确安装了对应版本的Xcode,并且用
xcode-select指定了正确路径 - Fastlane已经全局安装或者在项目目录里用bundle管理
- 有足够的权限访问钥匙串(用于签名打包)
内容的提问来源于stack exchange,提问作者nickjf89
相关产品推荐
相关产品推荐

