GitLabCI/CDを用いてDefault branchに設定されているブランチに変更がマージされた時のみジョブを実行する処理を実装します。
やりたいこと
「Default branchに変更がマージされたら変更内容を自動で検証環境にデプロイする」みたいなことをするパイプラインを構築することが目的です。
(デプロイ先のサーバを用意するのが面倒なので、今回は文字列を標準出力に出力するだけにします。)
環境
- GitLab.com (オンプレミス版での動作確認はできていません)
実装例
.gitlab-ci.yml
# stageを定義(今回は無くてもよいです)
stages:
- deploy
deploy_job:
stage: deploy
# 処理内容
script:
- echo "Hello, Wolrd"
- echo "$CI_DEFAULT_BRANCH"
# ジョブを実行する条件を記述
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
コード解説
- CI_COMMIT_BRANCH: コミットされたブランチ名を参照する環境変数です。GitLabであらかじめ定義されています。
- CI_DEFAULT_BRANCH: デフォルトブランチ名を参照する環境変数です。こちらもGitLabで定義されています。
「リモートリポジトリ上で変更をマージする」というアクションがコミットとして扱われることを理解するのに時間がかかり、マージをジョブの実行条件とする方法に悩みました。
「コミット = 変更内容を登録すること」と解釈するとマージもコミットとして扱われることは腑に落ちます。