GitLab CI/CD

GitLab CI/CDは、GitLabに組み込まれたツールで、継続的な開発手法によるソフトウェア開発を実現します。

  • 継続的インテグレーション(CI)
  • 継続的デリバリー(CD)
  • 継続的デプロイ(CD)
すぐに使える管理システムは、ツールチェーンのメンテナンスにかかる時間を10%以上短縮できます。「継続的なソフトウェア開発をマスターする」ウェブキャストでは、継続的な開発手法とGitLabの組み込みのCIがソフトウェア開発の簡素化と拡張にどのように役立つかをご紹介しています。

概要

小さなコード片をGitリポジトリのコードベースにプッシュすると、継続的インテグレーションが実行されます。これにより、コードの変更をメインブランチにマージする前にビルド、テスト、検証ができます。

継続的なデリバリーとデプロイは、さらに一歩進んだCIで構成されています。リポジトリのデフォルトブランチにプッシュするごとに、アプリケーションを本番環境にデプロイします。

これらの方法論により、バグやエラーの早期発見が可能になります。また、本番環境にデプロイされたすべてのコードが、アプリケーション標準に準拠することを保証します。

これらの方法論とGitLab CI/CDの完全な概要については、GitLabでCI/CDを導入をご覧ください。

GitLab CI/CDのデモビデオです。GitLabを使ったCI/CDを紹介します。

利用を開始

GitLab CI/CDはリポジトリのルートに.gitlab-ci.ymlというファイルを追加することで設定します。このファイルは、リポジトリ内のコードに変更があった場合にパイプラインを作成、実行します。パイプラインは順番に実行される1つ以上のステージで構成されており、それぞれのステージは、並行して実行される1つ以上のジョブを含むことができます。これらのジョブ(またはスクリプト)は、GitLab Runnerエージェントによって実行されます。

GitLab CI/CDを使い始めるには、以下のドキュメントを読むことをお勧めします。

他のCI/CDツールから移行する場合は、便利なリファレンスをチェックしてください。

また、UIから利用できる .gitlab-ci.yml テンプレート のいずれかを使って始めることもできます。新しいファイルを作成し、用途に合わせてテンプレートを選択して調整することで、それらを利用できます。

Use a `.gitlab-ci.yml` template

より広範な概要については、CI/CD入門ガイドを参照してください。

GitLab CI/CDの仕組みを理解したら、.gitlab-ci.yml の完全なリファレンスを参照してください。

GitLab CI/CDと共有RunnerはGitLab.comで有効になっており、すべてのユーザーが利用できます。ただし、ユーザーのパイプラインクォータの制限があります。

概念

GitLab CI/CDは、ビルドとデプロイを記述して実行するために多くの概念を使用しています。

概念 説明
パイプライン パイプラインを通してCI/CDプロセスを構成します。
環境変数 変数/値のキーペアに基づいて値を再利用します。
環境 アプリケーションをさまざまな環境(ステージング、本番環境など)にデプロイします。
ジョブのアーティファクト ジョブのアーティファクト(成果物)を出力、使用、再利用します。
依存関係のキャッシュ 依存関係をキャッシュすることで、より高速な実行が可能になります。
GitLab Runner 独自のGitLab Runnersを設定してスクリプトを実行します。

設定

GitLab CI/CDは多くの設定オプションをサポートしています。

設定 説明
パイプラインのスケジュール パイプラインを必要に応じて実行するようにスケジュールします。
.gitlab-ci.ymlのカスタムパス CI/CD設定ファイルのカスタムパスを定義します。
CI/CD用のGitサブモジュール Gitサブモジュールを使用するためのジョブを設定します。
CI/CD用のSSHキー CIパイプラインでSSHキーを使用します。
パイプラインのトリガー APIを使用してパイプラインを開始します。
マージリクエスト用のパイプライン マージリクエストでパイプラインを実行するように、パイプラインを設計します。
Kubernetesクラスターとのインテグレーション プロジェクトをGoogle Kubernetes Engine(GKE)または既存のKubernetesクラスターに接続します。
GitLabとRunnerを大規模リポジトリに最適化 大規模リポジトリを扱うための推奨戦略です。
.gitlab-ci.ymlの完全なリファレンス GitLab CI/CDで使えるすべての属性が記載されています。

特定の操作は、ユーザージョブの権限に従ってのみ実行できることに注意してください。

機能セット

たくさんの機能があるGitLab CI/CDを利用して、目的に応じた設定を簡単に行うことができます。 その機能セットは、DevOpsのステージに応じて下の表のようになっています。

機能 説明
Configure  
Auto DevOps アプリのライフサイクル全体を設定します。
ChatOps チャットからCIのジョブを起動して、結果をチャンネルに返します。
Verify  
ブラウザパフォーマンステスト 保留中のコード変更がパフォーマンスへ与える影響を迅速に判断します。
CI services Dockerコンテナとベースイメージをリンクします。
コード品質 ソースコードの品質を分析します。
外部リポジトリ用のGitLab CI/CD GitHubやBitbucket Cloudのリポジトリと組み合わせて、GitLab CI/CDのメリットを享受します。
対話型Webターミナル 実行中のジョブをデバッグするために、対話型のWebターミナルを開きます。
JUnitテスト マージリクエスト上でスクリプトの失敗を直接識別します。
Dockerイメージの使用 Dockerと一緒にGitLabとGitLab Runnerを使って、アプリケーションのビルドとテストをします。
Release  
自動デプロイ アプリケーションをKubernetesクラスターの本番環境にデプロイします。
Dockerイメージのビルド GitLab CI/CDを使用してDockerベースのプロジェクトをメンテナンスします。
カナリアデプロイメント 一部のPodにのみ機能をリリースし、指定した割合のユーザーベースに対して、一時的にデプロイされた機能を有効にします。
デプロイボード Kubernetes上で稼働している各CI/CD環境の現在の健全性とステータスを表示します。
フィーチャーフラグ フィーチャーフラグで、デプロイした機能を制御します。
GitLab Pages 静的なウェブサイトをデプロイします。
GitLabのリリース Gitタグにリリースノートを追加します。
レビューアプリ GitLab CI/CDを設定してコードの変更をプレビューします。
クラウドにデプロイ アプリケーションを主要なクラウドプロバイダーにデプロイします。
Secure  
コンテナの脆弱性スキャン Dockerコンテナに既知の脆弱性がないかチェックします。
依存関係の脆弱性スキャン 既知の脆弱性がないか、依存関係を分析します。
ライセンスコンプライアンス プロジェクトの依存関係を検索して、そのライセンスを確認します。
セキュリティテストレポート アプリの脆弱性をチェックします。

使用例

CIの使用例 のページで、さまざまなアプリのフレームワーク、言語、プラットフォームでGitLab CI/CDを使用するためのプロジェクトコードのサンプルとチュートリアルをご覧ください。

また、GitLabでは、GitLab CI/CDを使用するようにあらかじめ設定されたサンプルプロジェクトも提供します。

管理

GitLab管理者として、GitLab CI/CDのデフォルトの動作を変更できます。

こちらも参照してください。

リファレンス

なぜGitLab CI/CDなのか

詳しくはこちらを参照してください。

なぜCI/CDが必要なのか」のプレゼンテーションも参照してください。

破壊的な変更

GitLab CI/CDが進化するために、一部に破壊的な変更が必要でした。

13.0

12.0

11.0

  • 破壊的な変更はありません。

10.0

  • 破壊的な変更はありません。

9.0

  • GitLab 9.0でCIの変数名を変更。非推奨のCIの変数とGitLab 9.0以降で使うべき変数については、こちらをご覧ください。
  • 新しいCIのジョブの権限モデル。 GitLab 8.12で何が変わったのか、そしてそれがあなたのジョブにどのように影響するのかをご確認ください。 ジョブ内でGitサブモジュールやLFSオブジェクトにアクセスするための新しい方法が登場しました。