はじめ
gitlabのCICDを勉強しています。
.gitlab-ci.ymlの書き方と注意点をメモしました。
例を参考しながら、job、script、stages、variables、before_script、after_scriptの書き方をまとめてみました。
例文
before_script:
- echo "before-script!!"
variables:
DOMAIN: example.com
stages:
- build
- test
- deploy
build:
before_script:
- echo "before-script in job"
stage: build
script:
- echo "mun clean"
- echo "mvn install"
- echo "$DOMAIN"
after_script:
- echo "after-script in job"
unittest1:
stage: test
script:
- echo "run test"
deploy:
stage: deploy
script:
- echo "hello deploy"
- sleep 2;
unittest2:
stage: test
script:
- echo "run test"
after_script:
- echo "after-script!!"
書き方と注意
- .gitlab-ci.ymlを書いた後は、「CI Lint」で構文の文法を確認する。
- 一つymlファイルに一つ以上のjobを設定できる。jobの名前は唯一で、予約語(scriptなど)を使えない。よく見られるjobの名前:build、unittest、deploy、codescanなど。
- 一つjobには、一つ以上scriptを設定する。
- scriptには1つ以上のshellコマンドを記入する。
- stageはjobのstage名を命名する。
- stagesはjobのstageの順番を設定することによって、jobの実行順番を決める。
- before_scriptは毎回jobを実行する前に実行する操作(コマンド)を設定する。リスト型で書く。before_scriptが失敗したら、scriptの実行に影響を与える。ymlファイルのbefore_scriptを代わりに実行する。
- after_scriptは毎回jobを実行した後で実行する操作(コマンド)を設定する。リスト型で書く。after_scriptが失敗したら、結果に影響を与えない。ymlファイルのafter_scriptを代わりに実行する。
- ymlファイルに対して、before_scriptとafter_scriptを設定することもできる。before_scriptとafter_scriptを設定しないjobが実行された時に、ymlファイルに設定されたbefore_scriptとafter_scriptが実行される。
- 同じstageの名前をもつふたつjobは並列実行する。
- 「.pre」をstageの名前に設定する場合は、該当のjobは一番最初実行する。
- 「.post」をstageの名前に設定する場合は、該当のjobは一番最後実行する。
- Piplineに「.pre」jobあるいは「.post」jobしか存在しない場合は、Piplineは生成されない。
- variablesにパラメーター(DOMAIN)を定義する。