GitLab CI/CD Jobsの特徴
- 継続的インテグレーションを管理するWebインターフェイスを持つ。
- GitLabのプロジェクトで管理している特定ブランチの更新やマージをトリガーとしてビルドジョブやテストジョブを呼び出せる。
- Go言語のバイナリが実行できる環境であればOS(Windows、Linux、Docker)問わず実行できる。
- 「GitLab Runnerプロセス」により並列処理が可能。
- 実行中のログを表示します。
- ジョブのオートスケール機能があります。
- ビルドした成果物を管理できます。
GitLab Runnerプロセスについて
GitLab CI/CDから指示されたスクリプトを実行したり、一時的にDockerコンテナを生成してジョブを実行するプロセスです。(Jeckinsでいうところのスレーブノードという役割)GitLab CI/CDは各ランナーにビルド実行を要求してその結果を管理する役割を担っています。注意点としては、GitLab CI/CDとRunnerのバージョンには依存関係があるのでインストール時は意識するようにしましょう。
Executorの種類
GitLab Runnerには「Executor」というジョブの実行方式があります。一つのプロセスで複数のExecutorを登録することが可能です。
Shell Executor
Runnnerが提供されているサーバー上でビルドやテストを行います。Linux系ではBash、Windows系ではPowerShellやBash on Windowsが選ばれます。
Docker Executor
Docker APIを経由してDocker Engineと接続することによりコンテナから各ビルド作業を行います。事前にDocker環境さえ用意しておけば、同様のコンテナイメージを使うことによりどのプラットフォームからも再現性のあるビルドやテストが実行可能になります。
Runnnerの種類
各プロジェクトのジョブ特性によって下記2種類から選ぶことが可能です。
- Shared Runners
- Specific Runnners
Shared Runnners
複数プロジェクトのジョブ実行を共有のRunnerで処理する方式になります。「fairusage queue」という方式でジョブがキューイングされて現在実行されているジョブの数が最も少ないプロジェクトからジョブを割り当てられるように設計されています。よって、特定プロジェクトでたくさんジョブを作成したとしても他のプロジェクトでは待ち状態が発生して使えないということが起こることはありません。
なお、ジョブ設定自体はプロジェクトごとに行います。
Specific Runnners
特定プロジェクトのジョブのみを実行する方式です。FIFO方式でジョブを処理するため要求があった順番にジョブを処理していくことになります。
この記事へのコメントはありません。