是否可以使用Gitlabci并行矩阵来构建每个图像具有一定时间延迟的docker图像?

问题描述 投票:0回答:1

我在构建多个 docker 镜像时遇到问题,每个镜像的时间延迟为 15 分钟,因此在构建阶段每个镜像都会连接到服务器并进行一些处理,并且应该一个接一个地发生。

`build-docker-images:   
 extends: .docker-build-job   
 stage: build   parallel:
    matrix:'
     '- DOCKER_BUILD_CONTEXT: "."
        DOCKER_BUILD_NAME: "$DOCKER_IMAGE1"
        DOCKER_BUILD_DOCKERFILE: "/Dockerfile1"
      - DOCKER_BUILD_CONTEXT: "."
        DOCKER_BUILD_NAME: "$DOCKER_IMAGE2"
        DOCKER_BUILD_DOCKERFILE: "/Dockerfile2"
      - DOCKER_BUILD_CONTEXT: "."`

等等。

我尝试在每个构建之间添加 15 分钟的睡眠时间,如下所示

  `- DOCKER_BUILD_CONTEXT: "."
    DOCKER_BUILD_NAME: "$DOCKER_IMAGE2"
    DOCKER_BUILD_DOCKERFILE: "/Dockerfile2"
   - sleep: 900`

我还有一些不需要睡眠的图像,并且所有图像都是单个并行作业的一部分。我尝试浏览文档和门户,但无法实现它..

kubernetes gitlab gitlab-ci
1个回答
0
投票

我认为你想要实现的目标是不可能的,截至今天

matrix
键还没有提供增加作业延迟的方法。同样从开发人员的角度来看,
matrix
作业运行无延迟是有道理的,因为这正是您所期望的,所有内容都并行运行以获得更快的执行速度。

回到您的场景,考虑到您有一些映像可以并行运行,但其他映像则不能,最好重新组织您的 CI 并将构建拆分为不同的作业。您可以创建类似有向无环图 (DAG) 的架构来匹配您的场景。

这是您可以构建的非常粗略的架构:

enter image description here

这允许您并行运行

build1
build-n
,而您的依赖作业则等待另一个作业,而不会浪费太多执行时间。

© www.soinside.com 2019 - 2024. All rights reserved.