概要
.gitlab-ci.yml
が複雑になると YAML ファイルの内容が冗長化することがあります
そんな場合は include や anchor 機能を使えば YAML ファイルの管理が楽になったりします
環境
- Gitlab 13.9.5-ee
include を使う
include を使うとジョブの定義を別の YAML に定義しそれを使用することができるようになります
mkdir .gitlab-ci
vim .gitlab-ci.yml
stages:
- stage1
- stage2
include:
- local: /.gitlab-ci/echo1.yml
- local: /.gitlab-ci/echo2.yml
vim .gitlab-ci/echo1.yml
echo1:
image:
name: alpine:latest
stage: stage1
script:
- "export MSG=hello"
- "echo ${MSG}"
- echo "MSG=HELLO" >> build.env
artifacts:
reports:
dotenv: build.env
vim .gitlab-ci/echo2.yml
echo2:
image:
name: alpine:latest
stage: stage2
script:
- "echo ${MSG}"
dependencies:
- echo1
dotenv を使ってジョブ間で値を渡すこともできます
テンプレート化する
テンプレート化した YAML の内容は継承っぽいことができるようになります
こちらはファイル (ジョブ) を分けるというより script を分ける場合などに使います
vim .gitlab-ci.yml
stages:
- stage1
- stage2
.echo1_script: &echo1_script
- "export MSG=hello"
- "echo ${MSG}"
- "export MSG=HELLO"
.echo2_script: &echo2_script
- "echo ${MSG}"
echo:
image:
name: alpine:latest
stage: stage1
script:
- *echo1_script
- *echo2_script
継承させたい script の内容はドットから始まるようにします
また anchor で名前を付与する必要があり名前はアンパサンドで参照名を付与します
参照する場合はアスタリスクでテンプレートを参照できます
0 件のコメント:
コメントを投稿