如何在 GitLab 中为许多类似项目创建通用管道

How to create a common pipeline in GitLab for many similar projects

我们在 GitLab 中有数百个内部结构相同的类似项目。

为了构建这些项目,我们使用一个通用的 TeamCity 构建。我们通过 API 触发并将项目 GitLab URL 与其他参数一起传递给构建,因此 TeamCity 构建知道需要 fetched/cloned 的确切项目。 TeamCity VCS root 通过参数接受目标 URL。

问题是如何用 GitLab 管道替换现有的 TeamCity 构建。

我看到一般的做法是直接在项目中有CI/CD配置文件(.gitlab-ci.yml)。由于项目的结构相同,因此无法在所有项目中复制相同的 CI/CD 配置文件。

我想知道是否可以为几个可以通过参数接受目标项目 URL 的项目创建一个公共管道?

您可以将完整的 CICD 配置存储在存储库中,并将所有项目放入一个包含共享文件的简单 .gitlab-ci.yml。

采用这种方法,就没有多余的作业定义。

不过,您可以将特定的其他作业添加到特定项目(在相关的 .gitlab-ci.yml 文件中或在问题中定义变量并使用 some jobs conditionally)——您还可以包括多个其他作业定义文件,例如如果你有多个类似的项目。

比照。 https://docs.gitlab.com/ee/ci/yaml/#include

使用最新的 GitLab (13.9) 可以使用更多的引用方法:https://docs.gitlab.com/ee/ci/yaml/README.html#reference-tags

正如@MrTux 已经指出的那样,您可以使用 includes

您可以使用它来包含整个 CI 文件,或者只包含某些步骤。在 中 - 你可以找到详细的解释和两种用法的例子