GitLab Job执行出现oc: command not found错误的解决求助
解决GitLab Job中
oc: command not found的问题 问题原因
你使用的devops/bob:${BOB_VERSION}镜像里没有预装OpenShift客户端(oc)工具,导致执行脚本时找不到该命令。
修复方案
方案1:给基础镜像预装oc工具
联系维护devops/bob镜像的团队,在镜像构建阶段添加oc的安装步骤。比如在Dockerfile中加入:
# 以Linux amd64架构为例,下载并安装oc客户端 RUN curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xvz -C /usr/local/bin/ oc kubectl
方案2:在Job脚本中临时安装oc
如果无法修改基础镜像,可在GitLab Job的脚本开头添加oc的安装命令:
deploy_dev: image: devops/bob:${BOB_VERSION} only: - main dependencies: - build_publish script: - > # 临时安装oc客户端 curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xvz -C /usr/local/bin/ oc kubectl oc login --token=$OCP4_DEPLOYER_TOKEN oc project $CI_PROJECT_NAME-$env oc set env dc/openshift-traefik ENVIRONMENT=dev oc logout
方案3:改用预装oc的官方镜像
把Job使用的镜像替换为OpenShift官方提供的包含oc的镜像,示例如下:
deploy_dev: image: quay.io/openshift/origin-cli:latest only: - main dependencies: - build_publish script: - > oc login --token=$OCP4_DEPLOYER_TOKEN oc project $CI_PROJECT_NAME-$env oc set env dc/openshift-traefik ENVIRONMENT=dev oc logout
注意:如果原devops/bob镜像包含其他必须的依赖工具,此方案需要额外安装这些工具。
内容的提问来源于stack exchange,提问作者elizabeth lo
相关产品推荐
相关产品推荐

