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

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是否存在:
    ls -l /usr/local/bin/bash
    
    如果这个路径不存在,说明Homebrew安装的bash可能没装好,或者你的系统默认bash在/bin/bash(macOS自带路径)。
  • 手动执行login shell命令,看是否会报错:
    /usr/local/bin/bash --login
    # 如果上面的路径不存在,换成/bin/bash --login
    
    如果执行后直接退出,大概率是你的登录shell配置文件(~/.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:46:09