GitLab Runner Shell执行器报错:/usr/bin/bash未找到求助
解决GitLab Runner Shell执行器提示“shell /usr/bin/bash not found”问题
问题描述
在Oracle Cloud的Ubuntu虚拟机上配置GitLab Runner 15.11.0,使用Shell执行器时作业反复报错:
Running with gitlab-runner 15.11.0 (xxx) on bob_the_builder_aarch64_shell xxx, system ID: xxx Preparing the "shell" executor 00:09 ERROR: Preparation failed: shell /usr/bin/bash not found Will be retried in 3s ... ERROR: Preparation failed: shell /usr/bin/bash not found Will be retried in 3s ... ERROR: Preparation failed: shell /usr/bin/bash not found Will be retried in 3s ... ERROR: Job failed (system failure): shell /usr/bin/bash not found
WARNING: Preparation failed: shell /usr/bin/bash not found
已验证系统中/usr/bin/bash路径存在,尝试过改用/bin/bash、/usr/bin/sh,也尝试过用sudo运行GitLab Runner并使用/etc/gitlab-runner/config.toml配置相同设置,问题依旧。当前config.toml配置如下:
concurrent = 1 check_interval = 0 shutdown_timeout = 0 [session_server] session_timeout = 1800 [[runners]] name = "bob_the_builder_aarch64_shell" url = "https://gitlab.com/" id = xxx token = "xxx" token_obtained_at = 2023-05-08T01:17:42Z token_expires_at = 0001-01-01T00:00:00Z executor = "shell" shell = "/usr/bin/bash" [runners.cache] MaxUploadedArchiveSize = 0
排查与解决方案
检查GitLab Runner用户的环境权限
GitLab Runner默认使用gitlab-runner用户运行,需确认该用户能访问/usr/bin/bash。执行以下命令验证:sudo -u gitlab-runner ls -l /usr/bin/bash sudo -u gitlab-runner /usr/bin/bash --version如果报错,说明该用户无执行权限,可通过修改权限或调整用户组解决:
sudo chmod +x /usr/bin/bash sudo usermod -aG sudo gitlab-runner # 仅在必要时添加sudo权限简化shell配置
无需指定完整路径,GitLab Runner会自动查找系统默认shell。修改config.toml中的shell字段为bash即可:[[runners]] # 其他配置保持不变 shell = "bash"修改后重启GitLab Runner服务:
sudo gitlab-runner restart验证GitLab Runner安装架构匹配
虚拟机为aarch64架构,需确认安装的GitLab Runner是对应架构版本。执行以下命令检查:gitlab-runner --version arch如果版本架构不匹配(比如安装了amd64版本),需卸载现有版本,重新下载安装aarch64版本:
sudo gitlab-runner uninstall sudo rm -rf /usr/local/bin/gitlab-runner curl -L https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64 -o /usr/local/bin/gitlab-runner sudo chmod +x /usr/local/bin/gitlab-runner sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start检查系统PATH环境变量
确认gitlab-runner用户的PATH包含/usr/bin。执行以下命令查看:sudo -u gitlab-runner echo $PATH如果缺少,可修改
gitlab-runner用户的.bashrc或.profile文件添加:sudo -u gitlab-runner echo 'export PATH=$PATH:/usr/bin' >> ~gitlab-runner/.bashrc
内容的提问来源于stack exchange,提问作者marcell-janovszki
相关产品推荐
相关产品推荐

