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

GitLab CI作业报错bash: line 147: mkdir: command not found求助

解决GitLab CI Shell执行器报mkdir: command not found的问题

可能的原因及排查步骤

1. 环境变量PATH被修改

Shell执行器依赖系统默认的PATH定位系统命令(如mkdir),若PATH被意外覆盖或修改,会导致命令找不到:

  • 在CI脚本中添加打印PATH的命令,确认路径是否正常:
    unitTests:
      stage: unittests
      script:
        - echo $PATH  # 新增此行,查看当前环境变量
        - chmod +x gradlew
        - ./gradlew test
    
    运行作业后,检查输出是否包含/bin、/usr/bin这类系统命令所在路径。若没有,说明PATH被错误修改。

2. mkdir命令本身缺失

服务器上的mkdir可能被意外删除或损坏:

  • 登录GitLab Runner所在服务器,执行以下命令检查mkdir是否存在:
    which mkdir
    
    正常应返回/bin/mkdir或/usr/bin/mkdir。若无输出,说明命令缺失,需重新安装coreutils包:
    • Debian/Ubuntu系统:apt install --reinstall coreutils
    • CentOS/RHEL系统:yum reinstall coreutils

3. Runner执行用户或权限变化

若GitLab Runner的执行用户被修改,或用户的环境配置(如.bashrc、.profile)被更改,会导致PATH异常:

  • 找到Runner的执行用户(通常在/etc/gitlab-runner/config.toml的user字段),切换到该用户:
    su - <runner-user>
    
    然后执行echo $PATH和mkdir test-dir,查看是否能正常运行。若用户环境的PATH异常,需修复用户的环境配置文件。

4. 前置脚本修改了环境变量

检查GitLab Runner的全局配置(/etc/gitlab-runner/config.toml)是否有pre_clone_script、pre_build_script这类全局脚本,或CI配置里的before_script,这些脚本可能修改了PATH:

  • 临时注释掉这类前置脚本,重新运行作业,查看是否恢复正常。

5. Gradle脚本内部的环境问题

手动在服务器上拉取代码,切换到Runner执行用户,直接运行./gradlew test,查看是否能正常执行。若手动执行也报错,说明是Gradle脚本或项目依赖的问题,需排查Gradle构建过程中是否有修改环境变量的操作。

内容的提问来源于stack exchange,提问作者Sakeb Akhtar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:32:35