GitLab 用合并请求 ci 防止干扰多项目 ci

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

我在 GitLab 上有两个存储库(A 和 B)。项目 A 可以触发项目 B 作为多项目管道。

假设我已经为项目 B 创建了一个合并请求,并且项目 B 的 CI 构建正在为合并请求运行。同时,项目 A 触发项目 B。在这种情况下,我在合并请求中看到了多项目管道 CI。

有没有办法避免将合并请求CI替换为多项目CI?

gitlab gitlab-ci
1个回答
0
投票

是的,您可以通过在 GitLab CI/CD 配置文件中使用“needs”关键字来避免将合并请求 CI 替换为多项目 CI。

您可以使用“needs”关键字在 GitLab CI/CD 配置文件中定义作业之间的依赖关系。通过定义依赖关系,您可以确保某些作业先于其他作业执行,并且管道以正确的顺序运行。

为避免合并请求 CI 被多项目 CI 替换,您可以定义由项目 A 触发的项目 B 中的作业与项目 B 中的合并请求作业之间的依赖关系。这样,合并请求作业不会被多项目 CI 取代

这是一个示例,说明如何在 GitLab CI/CD 配置文件中定义作业之间的依赖关系:

# .gitlab-ci.yml in Project B
merge-request:
script:
- # Your build script here
only:
- merge_requests

multi-project-ci:
script:
- # Your build script here
needs:
- job: triggered-by-project-a
  pipeline: project-a/master

在此示例中,“合并请求”作业被定义为仅针对合并请求运行。 “multi-project-ci”作业定义为对项目 B 中的“triggered-by-project-a”作业具有“needs”依赖性,该作业由项目 A 触发。“needs”依赖性指定“multi” -project-ci”作业只有在“project-a/master”分支的管道中成功完成“triggered-by-project-a”作业时才应运行。

使用此配置,当项目 A 触发项目 B 时,只有在 "triggered-by-project-a" 作业成功完成时才会运行 "multi-project-ci" 作业,而 "merge-request" 作业不会被多项目 CI 取代

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