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

执行GitLab CI/CD配置文件时bash未找到错误的解决方法

解决GitLab CI中bash: not found的问题

这个错误的核心原因是你在执行bash docker_install.sh时,当前Job使用的镜像里没有预装bash命令,而且你的全局before_script只适配了Alpine镜像的包安装逻辑(用apk),但其他Job用的是不同基础的镜像,导致要么bash没装,要么apk命令直接失效。

下面给你几个可行的解决方案,按推荐程度排序:

方案1:改用sh执行脚本(最简单,优先尝试)

如果你的docker_install.sh脚本没有依赖bash特有的语法(比如数组、[[ ]]条件判断、进程替换这类POSIX sh不支持的特性),直接把执行命令改成用sh运行:

before_script:
  # 注意:这个apk命令仅在Alpine镜像生效,如果Build Job用的是其他镜像,需要调整包管理命令
  - apk update && apk add openssh
  - sh docker_install.sh > /dev/null

几乎所有Linux容器镜像都会预装sh,这样就能直接避开bash不存在的问题。

方案2:针对不同Job的镜像类型单独配置依赖安装

因为你的三个Job用了不同的镜像(Build用默认镜像、Deploy用php:7.4(Debian基础)、Loadtest用k6(Alpine基础)),全局before_script里的apk命令在Debian镜像里会报错,所以需要给每个Job单独配置before_script,适配对应的包管理工具:

修改后的完整.gitlab-ci.yml示例:

stages:
  - build
  - deploy
  - loadtest-local

build:
  stage: build
  # 假设默认镜像为Alpine,安装bash和openssh
  before_script:
    - apk update && apk add openssh bash
  script:
    - echo "building my application in container..."
    - bash docker_install.sh > /dev/null

deploy:
  stage: deploy
  image: php:7.4
  # php:7.4基于Debian,默认自带bash,只需安装openssh即可
  before_script:
    - apt-get update && apt-get install -y openssh
  script:
    - phpunit Unittest.php

loadtest-local:
  image:
    name: loadimpact/k6:latest
    entrypoint: [""]
  stage: loadtest-local
  # k6镜像基于Alpine,安装bash和openssh
  before_script:
    - apk update && apk add openssh bash
  script:
    - k6 run ./loadtests/performance-test.js
    - k6 run ./loadtests/inttest.js

方案3:统一使用带bash的基础镜像

如果你的Build阶段没有指定镜像,可以直接指定一个预装bash的镜像,比如Ubuntu:

build:
  stage: build
  image: ubuntu:latest
  before_script:
    - apt-get update && apt-get install -y openssh
  script:
    - echo "building my application in ubuntu container..."
    - bash docker_install.sh > /dev/null

Ubuntu默认自带bash,这样就不需要额外安装了。

另外,建议检查一下docker_install.sh的脚本开头,如果是#!/bin/bash,可以改成#!/bin/sh(如果脚本兼容的话),这样即使环境里没有bash,也能通过sh正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:22:45