我有一个针对4个不同软件项目的仓库处理集成测试。由于这些项目共享公共资源,因此我想创建一个通用文件,其中所有这些通用功能都已正确设置以准备CI / CD作业。
项目组织如下所示:

project_root:
  > folder_1
  > folder_2
  > folder_3
  > folder_4


从GitLab关于include关键字的文档中,我知道可以包含一个文件来处理所有这些项目的共同特征,因此我不必编写那些命令4种不同的线。所以我想我可以做以下事情:

project_root:
 common-features-handler.yml
  > folder_1
   gitlab-ci.yml
  > folder_2
   gitlab-ci.yml
  > folder_3
   gitlab-ci.yml
  > folder_4
   gitlab-ci.yml


问题是,文档尚不清楚在同一仓库中是否可能有多个gitlab-ci.yml文件,无论他们在单独的文件夹中。它只是说应该将该文件“放置在存储库的根目录中”,因此我想这本身就排除了在同一存储库中包含多个gitlab-ci.yml文件的可能性。我尝试将gitlab-ci.yml文件包含在folder_1的common-features-handler.yml中,但该作业甚至没有启动。我的猜测是,由于它不是项目的根本,因此CI管道根本看不到它。这使我认为一个仓库不可能处理多个gitlab-ci文件,但是我在文档或在线中找不到任何有关此假设的信息来确认或证实这一假设。

是否有可能以一种或另一种方式在单个存储库中包含多个gitlab-ci文件?如果不是,是否有办法避免四次编写相同的安装命令行?

评论

在您的项目设置中,您可以定义.gitlab-ci.yml的位置,主要思想是每个项目有一个文件,您可能有一个包含多个文件的存储库来维护它们,并在每个项目中包含它们。 (答案很简短,如果有人想对此进行扩展,请随意)

#1 楼

不,每个存储库不能有多个gitlab-ci文件。
您可以在以下链接中查看更多信息:


https://gitlab.com/gitlab -org / gitlab-foss / issues / 18157
https://gitlab.com/gitlab-org/gitlab-foss/issues/28592

现在,有些工作正在进行中例如,您可以在此处(https://gitlab.com/gitlab-org/gitlab-foss/issues/56214)看到他们正在处理可以包含其他内容的管道(完整的)管道。

include关键字更多地是关于减少主gitlab-ci文件的大小。