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

如何在GitLab CI单个Job中配置多个镜像?

解决方案:合并不同镜像的GitLab CI Job

GitLab CI单个Job仅支持指定一个Docker镜像,你之前尝试的多镜像写法(空格分隔/数组形式)都是不被支持的,所以得换思路实现合并,以下是三种可行方案:


方案1:使用预装Go环境的Ubuntu镜像

直接选用基于Ubuntu 20.04构建的Go官方镜像,这类镜像同时具备Go编译环境和Ubuntu系统环境,能一次性完成两个阶段的任务。

示例配置:

build_binary_and_deb:
  stage: build
  # 选用基于ubuntu20.04的Go镜像,版本可根据需求调整
  image: golang:1.21-ubuntu20.04
  rules:
    - if: '$CI_COMMIT_TAG'
  artifacts:
    untracked: true
  script:
    # 执行原build_binary的编译脚本
    - echo "Some script"
    # 安装deb打包所需依赖(根据你的实际需求调整)
    - apt-get update && apt-get install -y debhelper fakeroot
    # 执行原build deb的打包脚本
    - echo "Some script 2"

方案2:在Ubuntu镜像中手动安装Go环境

如果不想用预装镜像,可以直接在ubuntu:20.04里自行安装Go环境,再依次执行编译和打包步骤。

示例配置:

build_binary_and_deb:
  stage: build
  image: ubuntu:20.04
  rules:
    - if: '$CI_COMMIT_TAG'
  artifacts:
    untracked: true
  script:
    # 安装Go环境(版本可自行替换)
    - apt-get update && apt-get install -y wget
    - wget https://dl.google.com/go/go1.21.0.linux-amd64.tar.gz
    - tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
    - export PATH=$PATH:/usr/local/go/bin
    - go version # 验证安装成功
    # 执行原build_binary的编译脚本
    - echo "Some script"
    # 安装deb打包依赖
    - apt-get install -y debhelper fakeroot
    # 执行原build deb的打包脚本
    - echo "Some script 2"

方案3:使用Docker-in-Docker(DinD)切换镜像

通过Docker-in-Docker模式,在Job中调用Docker命令分别拉取两个镜像执行任务,此方案需要GitLab Runner开启特权模式。

示例配置:

build_binary_and_deb:
  stage: build
  image: docker:latest
  rules:
    - if: '$CI_COMMIT_TAG'
  # 启用DinD服务
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  script:
    # 用golang镜像编译二进制,挂载当前目录同步产物
    - docker run --rm -v "$(pwd)":/app -w /app golang:latest bash -c "echo 'Some script'"
    # 用ubuntu镜像打包deb,同样挂载目录获取产物
    - docker run --rm -v "$(pwd)":/app -w /app ubuntu:20.04 bash -c "echo 'Some script 2'"
  artifacts:
    untracked: true

注意:需确保你的GitLab Runner配置中开启了privileged: true,同时要注意容器生成文件的权限问题(可能需要手动调整权限避免CI用户无法读取)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:10:22