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

GitLab CI release阶段未拉取指定镜像 报release-cli命令不存在

故障根因

你当前使用的是shell类型的GitLab Runner,这类执行器完全不识别.gitlab-ci.yml中的image配置规则:不管是全局定义的node:latest,还是release作业单独指定的release-cli镜像,shell执行器都不会拉取、启动对应容器运行脚本,所有命令都是直接在Runner部署的宿主机shell环境中执行。
你之前判断的“作业级镜像未覆盖全局镜像”是认知偏差——实际上全局配置的node:latest也从来没有被加载使用过,报错的核心原因是宿主机环境没有安装release-cli工具,和镜像覆盖逻辑无关。

修复方案

根据实际部署场景三选一即可:

  • 方案1:更换为容器类Runner(推荐)
    新注册一个使用docker或kubernetes作为执行器的Runner,将release作业调度到该Runner上运行。这类容器类执行器原生支持image配置规则,会自动拉取作业指定的registry.gitlab.com/gitlab-org/release-cli镜像启动容器,容器内已经预装了release-cli命令,不需要额外修改脚本即可正常运行。
    注意注册docker类型Runner前,需要提前在Runner所在服务器安装Docker服务,注册时开启对应容器运行权限即可。
  • 方案2:在现有shell Runner宿主机全局安装release-cli
    如果不想更换Runner类型,直接登录部署shell Runner的服务器,切换到gitlab-runner运行用户,将对应版本的release-cli二进制文件安装到系统PATH路径下,确保执行release-cli -v可以正常返回版本信息,之后重新触发流水线即可正常运行。
  • 方案3:作业执行时临时下载release-cli运行
    如果没有服务器全局安装权限,可以修改release作业的脚本,在执行创建release命令前先临时下载对应二进制文件调用,示例配置如下:
    release:
      stage: release
      script:
        # 下载匹配服务器架构的对应版本release-cli二进制到当前工作目录
        - curl -sL --output release-cli <release-cli官方对应架构二进制下载地址>
        - chmod +x release-cli
        - ./release-cli create --name release-branch-$CI_JOB_ID --description "desc" --tag-name job-$CI_JOB_ID --ref $CI_COMMIT_SHA
    

注意:无论使用哪种方案,都需要确保运行作业的Runner持有合法的CI访问令牌,拥有向项目写入Release的API权限,否则命令执行时会报权限拒绝错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:54:18