如何在.gitlab-ci.yml中extends多个前置配置片段?
解决GitLab CI中extends继承多个配置片段的问题
你的需求完全可以实现,GitLab CI的extends字段支持接收数组形式的多个配置片段,只需修正YAML的语法格式即可。
你原来的写法中,extends下直接罗列配置片段的语法不符合YAML规范,正确的写法是将多个片段放在数组里,有两种常用格式:
- 行内数组:
extends: [.prereq1, .prereq2] - 换行列表:
extends: - .prereq1 - .prereq2
修正后的完整配置示例如下:
.prereq1: before_script: - apt-get update ... # many other steps .prereq2: before_script: - apt-get install package2 ... # many other steps .prereq3: before_script: - apt-get install package3 ... # many other steps usable_stage_A: stage: usable_stage_A only: variables: - "$JOB_A" extends: - .prereq1 - .prereq2 usable_stage_B: stage: usable_stage_B only: variables: - "$JOB_B" extends: - .prereq1 - .prereq3
补充说明合并规则:
- 对于
before_script这类数组型字段,多个配置片段的内容会合并成一个数组,执行顺序遵循extends中配置片段的先后顺序(比如usable_stage_A会先执行.prereq1的步骤,再执行.prereq2的步骤)。 - 如果多个配置片段存在相同的非数组字段(如
image、tags),后面的配置片段会覆盖前面的对应字段。
内容的提问来源于stack exchange,提问作者LetMeSOThat4U
相关产品推荐
相关产品推荐

