GitLab CI如何多次引入同一份.gitlab-ci.yml并传入不同配置
GitLab CI多操作系统版本构建解决方案
以下是三种可直接落地的实现方案:
方案1:使用parallel matrix(最简方案,无需修改公共模板)
直接在项目配置中给引用的构建job添加矩阵参数,GitLab会自动为每个版本生成独立的构建job,自动覆盖OS_RELEASE变量:
include: - project: 'common/gitlab-templates' file: '.gitlab-ci.yml' build-package: parallel: matrix: - OS_RELEASE: ["8.0", "9.0", "10.0"]
方案2:公共模板改造为隐藏模板(规范复用方案)
先修改公共配置文件,将构建逻辑改为以.开头的隐藏模板(不会自动触发执行,仅作为逻辑基类):
# common/gitlab-templates/.gitlab-ci.yaml .build-package-template: script: echo "building for $OS_RELEASE"
项目中仅需引入一次模板,通过extends关键字生成多个对应版本的构建job:
include: - project: 'common/gitlab-templates' file: '.gitlab-ci.yml' build-package-8.0: extends: .build-package-template variables: OS_RELEASE: "8.0" build-package-9.0: extends: .build-package-template variables: OS_RELEASE: "9.0" build-package-10.0: extends: .build-package-template variables: OS_RELEASE: "10.0"
方案3:无需修改公共模板的继承方案
如果不能改动公共模板,可以直接继承引入的原始build-package job,覆盖变量和执行规则即可:
include: - project: 'common/gitlab-templates' file: '.gitlab-ci.yml' # 禁用公共模板默认生成的原版构建job(可选) build-package: rules: - when: never # 生成不同版本的构建job build-package-8.0: extends: build-package variables: OS_RELEASE: "8.0" rules: - when: on_success build-package-9.0: extends: build-package variables: OS_RELEASE: "9.0" rules: - when: on_success build-package-10.0: extends: build-package variables: OS_RELEASE: "10.0" rules: - when: on_success
内容的提问来源于stack exchange,提问作者rlandster
相关产品推荐
相关产品推荐

