Gitlab-CI:如何将需求与并行矩阵一起使用(或使用需求处理多步骤 CI 的另一种方法)

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

我有一个我无法正确理解的 Gitlab-CI 用例。背景是我有多个环境需要构建和部署自己的工件。假设一个简化的情况如下所示:

stages:
  - build
  - deploy

AppOne:Build:
  extends: .build
  environment:
    name: AppOne

AppOne:Deploy:
  extends: .deploy
  needs: ['AppOne:Build']
  environment:
    name: AppOne

AppTwo:Build:
  extends: .build
  environment:
    name: AppTwo

AppTwo:Deploy:
  extends: .deploy
  needs: ['AppTwo:Build']
  environment:
    name: AppTwo

.build:
  stage: build
  script:
    - build.sh

.deploy:
  stage: deploy
  when: manual
  script:
    - deploy.sh

上面的过程是有效的,但正如你所看到的,它有点漫长且重复,有两个应用程序和超级简单的过程。真实的过程分为三个阶段和多达 20 个应用程序。我想知道是否有更好的方式来表达这一点?除了变量(在环境中设置)之外,构建过程是相同的。

我想我主要想知道是否有更好的方式来表达“需求”,而不必为每个应用程序重复它,即需要先构建应用程序,然后才能手动部署。我可以做

needs: ['${NAME}:Build']
但这需要
$NAME:Build
步骤实际存在。

请帮忙,哦互联网的集体智慧。

gitlab yaml gitlab-ci gitlab-ci-runner
1个回答
0
投票

现在(2023 年第 3 季度)可能会得到 GitLab 16.3(2023 年 8 月)的支持:

对并行作业使用 need 关键字

needs
关键字用于定义作业之间的依赖关系。您可以使用关键字将作业配置为依赖于特定的早期作业,而不是遵循阶段顺序。当相关作业完成后,作业可以立即开始,从而加快管道速度。

以前,无法使用

needs
关键字将 并行矩阵 作业设置为从属作业,但在此版本中,我们也启用了将
needs
与并行矩阵作业一起使用的功能。

您现在可以定义与并行矩阵作业的灵活依赖关系,这可以帮助进一步加快管道速度!您的工作越早开始,您的管道就能越早完成!

请参阅文档问题

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