我在create table x (id integer generated by default as identity);
insert into x (id) values (default);
中配置了以下作业:
.gitlab-ci.yml
job1:
stage: test
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
script:
- ...
job2:
stage: test
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
script:
- ...
job3:
stage: test
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
script:
- ...
部分对于所有3个工作都是相同的。
是否可以避免这种重复?
答案 0 :(得分:6)
您还可以使用Anchor YAML功能 - https://docs.gitlab.com/ee/ci/yaml/#anchors。
.job_template: &job_definition
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
job1:
<<: *job_definition
stage: test
当配置对所有作业都通用时,请使用全局服务。如果要避免仅在某些作业中重复,请使用YAML锚点。
答案 1 :(得分:1)
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
job1:
stage: test
script:
- ...
job2:
stage: test
script:
- ...
job3:
stage: test
script:
- ...
答案 2 :(得分:0)
您可以使用在 GitLab 11.3 中引入的extends
。它是使用YAML anchors的替代方法,并且更具灵活性和可读性。
.db_services:
services:
- name: mariadb
alias: mysql
entrypoint: [""]
command: [...]
job1:
extends: .db_services
stage: test
...