我们在 GitLab 中有数百个内部结构相同的类似项目。
为了构建这些项目,我们使用一个通用的 TeamCity 构建。我们通过 API 触发并传递项目 GitLab URL 和其他参数到构建,因此 TeamCity 构建知道需要获取/克隆哪个确切的项目。 TeamCity VCS root 通过参数接受目标 URL。
问题是如何用 GitLab 管道替换现有的 TeamCity 构建。
我看到一般的方法是直接在项目中使用 CI/CD 配置文件(.gitlab-ci.yml)。由于项目的结构相同,因此无法在所有项目中复制相同的 CI/CD 配置文件。
我想知道是否可以为多个可以通过参数接受目标项目 URL 的项目创建一个通用管道?
答案 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 中 - 您可以找到两种用法示例的详细说明