我遇到的情况是master中有.gitlab-ci.yml,这与分支“开发”不同。问题是我们有很多带有很多分支的仓库。
我想对.gitlab-ci.yml进行更改,但我想确保所有分支都使用相同的.gitlab-ci.yml。我知道gitlab的设计使您可以为分支机构使用不同的CI CD,因为管道可能会有所不同。
一种方法是获取所有分支的所有存储库,然后将相同的.gitlab-ci.yml复制到所有存储库和分支。
您知道更好的方法吗?
答案 0 :(得分:0)
也许可以使用git submodules和change .gitlab-ci.yml的默认文件夹。
答案 1 :(得分:0)
如果使用企业版,则可以使用include关键字。
如果您使用的是社区版,那么我能想到的最好选择是支票兑现工作。它基本上运行git diff master -- .gitlab-ci.yml
[1]。如果分支和主节点上的.gitlab.yml
不同,则该作业将失败,从而迫使您更新分支。虽然这不会使您的管道自动保持同步,但转移不会被忽略。
[1]:您可能需要运行git fetch master
,具体取决于您的git strategy。
答案 2 :(得分:0)
我知道.gitlab-ci.yml在分支中可以有所不同,因为您的Prod CI可能与其他分支中的“ Dev / Test”不同,因此正常情况下,在不同的目录中具有不同的.gitlab-ci.yml文件分支,因此我们的开发团队将master与其分支合并,然后从那里开始更改。
这个想法是,当您想做出“全球”变化时,但这取决于您如何采取行动。
答案 3 :(得分:0)
您只能在外部存储库上为所有分支配置文件 .gitlab-ci.yml。
您转到存储库 --> 设置 --> 常规管道 --> CI/CD 配置文件。
当您在任何分支上进行更改时,此文件将从存储库下载并应用。在作业上,您必须配置“仅:-”才能在此分支上执行此作业。