我应该使用哪种GitLab Runner解决apt-get命令不被识别的报错?
问题原因
你遇到的报错核心是当前使用的Windows Shell执行器的GitLab Runner和你的CI配置逻辑不匹配:
Shell执行器会直接在Runner所在的宿主系统(也就是你的Windows 10)上执行脚本,不会加载你yml中定义的image字段指定的Linux镜像。你写的apt-get是Debian/Ubuntu系Linux专属的包管理命令,Windows系统本身没有这个工具,因此PowerShell执行时会直接报错。
解决方案
你可以根据自己的使用场景二选一:
方案1:改用Docker执行器的Runner(推荐,无需修改现有yml配置)
- 先在你的Windows 10设备上安装Docker Desktop,开启WSL2后端并启动Docker服务
- 重新注册GitLab Runner,executor选择
docker类型,默认基础镜像可填写alpine:latest - 配置完成后重新运行流水线即可:Docker执行器会自动拉取你每个job中指定的镜像(比如deploy阶段的
ruby:latest),在Linux容器内执行apt-get相关命令,完全适配你现有yml的配置逻辑。
方案2:继续使用Shell执行器,修改yml适配Windows环境
如果不想安装Docker,需要调整配置和本地环境:
- 先在Windows 10本地提前安装好Ruby运行环境,配置好Ruby和gem的系统环境变量
- 修改deploy阶段的script内容,删掉Linux专属的
apt-get相关命令,调整后如下:
deploy: stage: deploy script: - gem install dpl - dpl --provider=heroku --app=heroku-coalition --api-key=$HEROKU_API_KEY - echo "This job deploys something from the $CI_COMMIT_BRANCH branch." only: - master
- 如果你后续要取消build、test等阶段的注释,还要注意把
./gradlew调用改成.\gradlew.bat适配Windows脚本调用规则。
额外提示
你当前的stages配置中只保留了deploy阶段,build、sonarqube-check、test都被注释了,如果需要运行这些任务记得先取消stages下对应行的注释。
内容的提问来源于stack exchange,提问作者LardinoisJosse
相关产品推荐
相关产品推荐

