GitLabでCI/CDを行う方法はGitLab 8.4くらいがリリースされた頃、確か今から2年前くらいに試したことがあります。 GitLabもそれからずいぶんバージョンアップされたし、そろそろ再調査してみるかと思いました。
参考にした情報源のリンクをまとめます。
Gitlab CIについてのまとめ
- http://qiita.com/kalium/items/2e389a86e14176ad5822
- http://qiita.com/yurano/items/a7804d987ccff37b1a9d
- https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/
GitLab 8以降のバージョンではCI/CDを回すためのサーバー機能はデフォルトで利用できます。コードテストを実行したり、本番環境としてアプリケーションをデプロイする先として利用する環境として「GitLab CI Runner」を用意するというわけです。実際はCI Runnerと何らかのプロセス(例えばDocker)を実行したサーバーをGitLabのプロジェクトと結びつけて利用する形です。CI Runnerを複数用意して、プロジェクトごとに別のものを使うことができます。
Gitlab CI Ruunerのインストール
どこでCI Ruunerを動かすかによって、インストール方法が変わってきます。
利用できるexecutor: docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, docker, kubernetes
Kubernetes サポート!?
インストール方法など
- https://docs.gitlab.com/runner/
- https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md
gitlab-ci-multi-runnerからgitlab-runnerに名前が変わりました。 また、最近のバージョンはKubernetesをデプロイ先として利用できるようです。割と簡単なのはDockerを使う方法です。
.gitlab-ci.ymlの書き方
ここが重要です。このファイルをGitリポジトリーにおいて、コミット時にCIを回すことができます。全てのブランチを対象とすることも、特定のブランチでのみCIを回すこともできます。
- https://docs.gitlab.com/ce/ci/quick_start/
- https://docs.gitlab.com/ce/ci/yaml/README.html
- http://qiita.com/kalium/items/2e389a86e14176ad5822
Jenkinsを動かすのと比べるとこちらも動かすのは簡単なのですが、.gitlab-ci.yml
の書き方がなかなか難しい印象を受けました。また、CIを回す時のテスト方法も自分で考える必要があり今後の課題です。
(後日内容更新予定)