GitLab CIとは?.gitlab-ci.ymlの基本・GitHub Actionsとの違いを解説

GitLab CIとは?

GitLab CI(GitLab Continuous Integration)とは、GitLabに組み込まれたCI/CDパイプラインの機能です。コードの変更がリポジトリにプッシュされるたびに、自動でビルド・テスト・デプロイを実行できます。

最大の特徴は、GitLab自体にCI/CD機能が統合されている点です。ソースコード管理、イシュー管理、コードレビュー、CI/CDが1つのプラットフォームで完結するため、別途JenkinsやCircleCIなどの外部ツールを導入する必要がありません。

GitLab CIの仕組み ― .gitlab-ci.ymlが全ての起点

GitLab CIのパイプラインは、リポジトリのルートに配置する.gitlab-ci.ymlというYAMLファイルで定義します。このファイルに「どんな順番で何を実行するか」を記述すると、コードのプッシュやマージリクエストの作成をトリガーにパイプラインが自動実行されます。

パイプラインは複数のステージ(Stage)で構成され、各ステージの中にジョブ(Job)が含まれます。たとえば「ビルド→テスト→デプロイ」という3ステージのパイプラインでは、ビルドが成功した場合のみテストが実行され、テストが成功した場合のみデプロイが実行されます。

GitLab RunnerとShared Runner

パイプラインの各ジョブを実際に実行するのはGitLab Runnerというエージェントプログラムです。

Shared Runner:GitLab.comが提供する共有ランナーで、設定不要で使い始められます。小規模なプロジェクトや検証用途に最適です。無料枠では月400分のCI/CD実行時間が利用できます。

Self-hosted Runner:自社サーバーやクラウド上に自前で設置するランナーです。実行時間の制限がなく、社内ネットワークへのアクセスや特殊なハードウェア(GPUなど)の利用が可能になります。

GitHub Actionsとの比較

観点 GitLab CI GitHub Actions
CI/CDの統合度 GitLabに完全統合。単一プラットフォームで完結 GitHubに統合。Marketplaceで拡張
設定ファイル .gitlab-ci.yml(1ファイル) .github/workflows/*.yml(複数ファイル可)
Self-hosted Runner GitLab Runnerとして提供。Docker・Kubernetes対応 Self-hosted Runnerとして提供
無料枠 月400分(Shared Runner) 月2,000分(public repoは無制限)
セルフホスト版 GitLab CE/EEとしてオンプレミス運用可能 GitHub Enterprise Serverで可能
得意な場面 オンプレミス運用、セキュリティ重視の組織 OSSプロジェクト、GitHub中心の開発

GitLab CIの実用的な機能

Auto DevOps:設定ファイルを書かなくても、GitLabがプロジェクトの言語を自動検出し、ビルド・テスト・セキュリティスキャン・デプロイのパイプラインを自動生成する機能です。CI/CDの導入コストを大幅に下げられます。

マージリクエスト連携:マージリクエスト画面にパイプラインの結果が表示され、テストが通らないコードのマージをブロックできます。コードレビューとCI/CDが一体化した体験を提供します。

環境(Environments)管理:ステージング環境や本番環境へのデプロイを管理し、ワンクリックでロールバックできます。手動承認ゲートを設けて、本番デプロイ前に承認を求めることも可能です。

セキュリティスキャン:SAST(静的解析)、DAST(動的解析)、依存関係スキャン、コンテナスキャンなどのセキュリティテストをパイプラインに組み込めます(一部Premium/Ultimate限定)。

導入時の注意点

Runner のリソース設計:Shared Runnerは手軽ですが、月400分の制限を超えるプロジェクトでは追加課金が発生します。Self-hosted Runnerの導入を早めに検討しましょう。

YAMLファイルの肥大化:パイプラインが複雑になると.gitlab-ci.ymlが数百行に膨らみます。includeキーワードで複数ファイルに分割したり、テンプレートを活用して管理しやすくしましょう。

よくある質問(FAQ)

Q. JenkinsからGitLab CIに移行すべきですか?

A. GitLabをソースコード管理に使っているなら検討の価値はあります。Jenkinsのプラグインエコシステムやパイプラインのカスタマイズ性は強力ですが、GitLab CIの方が設定がシンプルで運用負荷が低くなります。

Q. GitLab CIは無料で使えますか?

A. GitLab.comのFreeプランでCI/CD機能が利用でき、月400分のShared Runner実行時間が含まれます。Self-hosted Runnerを使えば実行時間の制限はありません。

まとめ

GitLab CIは、GitLabに統合されたCI/CD機能で、ソースコード管理からデプロイまでを1つのプラットフォームで完結できます。.gitlab-ci.ymlで宣言的にパイプラインを定義でき、Auto DevOpsやセキュリティスキャンなどの高度な機能も備えています。GitLabを中心に開発ワークフローを統一したい組織に特に適しています。

コメント