GitLab CIのquick startを読んでもしっくり来なかった人向けにGitLab CIの仕組みをまとめました。
特に「Runnerって何?」ってなった人向けです。
(※GitLab CIの導入方法や使い方については触れていません)
GitLab CIの仕組み
GitLab Continuous Integration | GitLab
上のページのArchitectureの図がとてもわかり易いです。
GitLab CI is a part of GitLab, a web application with an API that stores its state in a database. It manages projects/builds and provides a nice user interface, besides all the features of GitLab.
GitLab CIはGitLabの中の一つの機能でありWebアプリケーションとして動いていてprojectsとbuildsを管理するための良い感じのインターフェースを提供しています。
GitLab Runner is an application which processes builds. It can be deployed separately and works with GitLab CI through an API.
GitLab Runnerはビルドのための一つのアプリケーションで、別々の場所で動かすことができ、APIを通してGitLab CIと連携できます。
図を見て分かるように、GitLab RunnerはGitLab本体とは分離して別マシンや別コンテナに配置して、GitLabとGitLab Runner間はAPIで通信する仕組みになっています。
とてもシンプル。
GitLab Runnerの詳細
GitLab RunnerについてはリポジトリのREADMEがわかりやすいです。
GitLab.org / gitlab-ci-multi-runner · GitLab
簡単にまとめると
- 並列実行や分散実行ができる
- ビルドはshellやDocker(over sshとコンテナ分散も可能)、sshが使える
- Goで書かれたシングルバイナリ
- Ubuntu, Debian, OS X, Windows対応
Windowsにも対応してるのにびっくりしました。心配になりがちな、Windowsへのインストール方法も配置はGoのシングルバイナリをダウンロードして配置するだけで良いので簡単です。Goで書かれてる強みを感じました。
OSXに関してもバイナリをcurlでダウンロードして配置、Linuxに関してはリポジトリと追加してパッケージマネージャでインストールできます。
Dockerの場合はgitlab/gitlab-runnerというイメージが配布されているのでそちらをインストールして利用できます、基本的にUbuntu14.04のようですが、Aplineも使えるようです(gitlab/gitlab-runner:alpine)
GitLab Runnerという名前についてですが、プロジェクトの名前はGitLab CI Multi Runnerで、GitLab CI Runnerと呼ばれていることが多いですが、今は"GitLab Runner"と呼んで欲しいみたいです。
まとめ
ArchitectureもシンプルでGitLab CI良いなぁとなりました。
Runnerについてのさらに詳しいことやわからないことは、GitLab Runnerの公式リポジトリを見てみると良いと思います。
個人的にはWindowsでのCIに悩んでいたので、Jenkinsに手を出さないでGitLab CIだけで全て収まりそうなのでテンション上がっています。
Show comments