🤖 GitLab CI/CDの裏側を覗いてみよう!仕組みと料金プランを徹底解説
こんにちは!前回のブログでは、GitLab CI/CDがどれだけ便利かを学びました。今回は、その便利さがどのように実現されているのか、そして実際に利用するにはどれくらいの費用がかかるのかについて、さらに深く掘り下げていきます。
⚙️ CI/CDパイプラインはどのように動いているの?
私たちがGitLabリポジトリに新しい変更をコミットすると、パイプラインが自動的に実行されます。この裏側では、GitLabサーバーとGitLabランナーという2つの重要なコンポーネントが連携して動いています。
GitLabサーバー(司令塔):
パイプライン全体の実行を管理し、結果を保存します。
「〇〇というジョブを実行する必要がある」と判断すると、適切なランナーを探して指示を出します。
GitLabランナー(実行部隊):
GitLabサーバーから指示を受け取り、実際のジョブを実行するプログラムです。
現場でビルドやテストといった作業を行います。
1つのランナーで複数のジョブを処理することも、特定のタスクに特化した複数のランナーを用意することもできます。
ジョブ実行の流れ(build_carジョブの例)
ランナーがジョブを引き受ける:GitLabサーバーが「
build_carジョブを実行せよ」と指示を出すと、対応できるランナーがそれを受け取ります。実行環境の準備:ランナーは指定されたDockerイメージ(今回の場合はAlpine)をDockerレジストリから取得し、コンテナを起動してジョブの実行環境を準備します。
ソースコードの取得:ランナーはGitリポジトリから最新のソースコードをクローンし、アクセスできるようにします。
スクリプトの実行:
.gitlab-ci.ymlファイルに記述されたLinuxコマンドが順番に実行されます。アーティファクトの保存:ジョブの実行中に生成されたアーティファクト(
build/ディレクトリ内のファイルなど)は、GitLabサーバーにアップロードされ、保存されます。環境の破棄:ジョブが完了すると、起動したDockerコンテナは破棄されます。
💡ポイント💡
Dockerコンテナはジョブごとに独立しているため、前回のジョブで作成したファイルは自動的には引き継がれません。
次のジョブでファイルを使いたい場合は、アーティファクトとして保存することで、ランナーが自動でダウンロードしてくれます。
💰 GitLabの料金体系とプラン
GitLabを利用する方法は主に2つあります。
1. GitLab.com(マネージド版)
GitLabがインフラを管理してくれるサービス。
サーバーのメンテナンスなどを気にする必要がありません。
無料プランからエンタープライズ向けの有料プランまで、様々な選択肢があります。
💡注意点💡
無料プランの400分は、小規模なプロジェクトには十分ですが、継続的に開発を行うチームではすぐに使い切ってしまう可能性があります。
計算時間を追加したい場合は、**「アドオン」**として追加購入できます。
2. セルフマネージド版
自分たちでGitLabサーバーを構築・運用する方法。
インフラ管理の知識が必要ですが、CI/CDの計算時間に制限はありません。
データの所在地を完全にコントロールしたい組織や、インフラ管理も学習したい人に向いています。
3. ハイブリッドモデル(無料プラン+自前ランナー)
GitLab.comの無料プランを使いつつ、ジョブの実行には自分たちのインフラ上のランナーを使うという方法。
GitLab.comのUIや管理機能はそのまま利用できますが、計算時間(400分)の制限を気にする必要がなくなります。
設定には少し技術的な知識が必要ですが、費用を抑えつつ柔軟な運用が可能です。
結論:最適なプランは?
GitLab CI/CDをこれから学ぶ人や、個人で小規模なプロジェクトを行う人には、まず無料プランで試してみるのがおすすめです。
チームで開発を進める場合は、有料プランへのアップグレードや、自前のランナーを併用するハイブリッドモデルを検討すると良いでしょう。
