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

时间:2021-02-22 21:52:08

标签: gitlab teamcity gitlab-ci

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

为了构建这些项目,我们使用一个通用的 TeamCity 构建。我们通过 API 触发并传递项目 GitLab URL 和其他参数到构建,因此 TeamCity 构建知道需要获取/克隆哪个确切的项目。 TeamCity VCS root 通过参数接受目标 URL。

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以将完整的 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

答案 1 :(得分:0)

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

您可以使用它来包含整个 CI 文件,也可以仅包含某些步骤。在 Having Gitlab Projects calling the same gitlab-ci.yml stored in a central location 中 - 您可以找到两种用法示例的详细说明