我有许多项目位于 different GitLab 存储库(
repo1
,repo2
,...)。这些项目可以使用位于另一个存储库 (build_scripts
) 中的构建脚本来构建。
build_scripts
包含 YML、shell 脚本和其他内容,需要为每个项目创建包含构建和测试作业的 GitLab 管道。
每个项目的 GitLab CI/CD 配置如下,文件
.gitlab-ci.yml
:
include:
- project: 'build_scripts'
ref: master
file: '/general-pipeline.yml'
文件
general-pipeline.yml
描述了包含build
和test
阶段的管道。 build
阶段包含为不同操作系统/架构构建的多个作业。 test
阶段依赖于 build
并为当前管道中的每个构建运行测试套件。
因此,当为
repo1
、repo2
等项目之一创建 MR 时,GitLab 会从 build_scripts/general-pipeline.yml
创建一条管道来验证此 MR。
但是,
build_scripts
本身有时需要修改,我会为build_scrips
创建MR以集成新的更改。
在 MR 集成到
build_scripts
主分支之前,是否可以通过使用新更改构建我的项目来验证 build_scripts
的 MR?
换句话说,我想在每个
repo1
存储库的 MR 上为项目 repo2
、build_scripts
等运行 CI,指定要从中获取 build_scripts
的特定分支。
没有这方面的功能,但这里是指南:
每次更改后,应在master上标记
build_scripts
,在其他分支上应使用标记版本。因为它避免了不必要地使用合并到 master 中的代码。因此,build_scripts
中的代码将被Semver(即v0.0.1)标记,然后在repo1
、repo2
等中:
include:
- project: 'build_scripts'
ref: `v0.0.1`
file: '/general-pipeline.yml'
当在
build_scripts
中创建新的MR时,它有一个分支名称(即feat-X1
)。可以在 repo1
、repo2
等中创建新的 MR,以验证 build_scripts
中更改的内容:
include:
- project: 'build_scripts'
ref: `feat-X1`
file: '/general-pipeline.yml'
通过验证后,将合并到
build_scripts
并标记为v0.0.2
。在 repo1
、repo2
存储库中,更改将逐渐应用:
include:
- project: 'build_scripts'
ref: `v0.0.2`
file: '/general-pipeline.yml'