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

如何在GitLab中为许多类似项目创建公共管道,gitlab,teamcity,gitlab-ci,Gitlab,Teamcity,Gitlab Ci,我们在GitLab中有数百个类似的项目,它们内部具有相同的结构 为了构建这些项目,我们使用一个通用的TeamCity构建。我们触发并通过API将项目GitLab URL以及其他参数传递给构建,这样TeamCity构建就知道需要获取/克隆哪个确切的项目。TeamCity VCS根用户通过参数接受目标URL 问题是如何用GitLab管道替换现有的TeamCity构建 我认为一般的方法是在项目中直接使用CI/CD配置文件(.gitlab CI.yml)。由于项目的结构相同,因此不能在所有项目中复制相同

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

为了构建这些项目,我们使用一个通用的TeamCity构建。我们触发并通过API将项目GitLab URL以及其他参数传递给构建,这样TeamCity构建就知道需要获取/克隆哪个确切的项目。TeamCity VCS根用户通过参数接受目标URL

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

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


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

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

这样一来,工作就并没有多余的定义了

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

比照


在最新的GitLab(13.9)中,有更多的引用方法是可能的:

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


您可以使用它包含整个CI文件,也可以只包含某些步骤。在中-您可以找到这两种用法的详细解释示例

我不确定,这是否足以作为对@mrTux示例的评论,但我认为这是至关重要的信息,因此我现在将其作为自己的答案-如果这是一种不好的做法,请让我知道,然后我将其作为评论添加到另一个答案中