Gitlab hero border pattern left svg Gitlab hero border pattern right svg
Gitlab logo svg

GitLabの継続的インテグレーション(CI)と継続的デリバリー(CD)

GitLab CI/CDパイプラインは、統合された単一のワークフローの一部としてコードのビルド、テスト、デプロイ、監視を行います。

継続的インテグレーションはGitLabに組み込まれています

継続的インテグレーション (CI) は、チームメンバーが書いたコードを共有リポジトリに統合するために動作します。 開発者はマージ (プル) リクエストで新しいコードをチームメンバーと共有します。 このリクエストは、コードの変更を統合ブランチにマージする前に、新しいコードをビルド・テスト・検証するためのパイプラインを作成します。

継続的デリバリー (CD) は、構造化されたデプロイメントパイプラインを使用して、CIで検証済みのコードをアプリケーションに確実にデリバリーします。

CIとCD を併用することで、チームが顧客や利害関係者に結果を迅速に提供できるようになります。 CIは開発サイクルの初期段階でバグをキャッチして削減するのに役立ち、CDは検証済みのコードをアプリケーションに反映し、より早く顧客に届けるのに役立ちます。

チームが迅速かつ効果的にアプリケーションを開発するためには、CIとCDがシームレスに連携する必要があります。


Forrester CI Wave™のリーダーに選出されました

「GitLabは、インストールと設定のための包括的なドキュメント、わかりやすいUI、オンプレミスでの利用をサポートする柔軟なユーザー単位の価格モデルで開発チームをサポートします。 GitLabのビジョンは、コードを書く時間を増やし、ツールチェーンを維持する時間を減らしたいと考えているエンタープライズ規模の統合型ソフトウェア開発チームにサービスを提供することです。」 - Forrester CI Wave™

レポートを取得

CIとは?

継続的インテグレーション とは、開発者が書いたすべてのコードをマージするためのプラクティスです。 マージは通常、共有リポジトリで一日に数回行われます。 リポジトリ内や本番環境から、ビルドと自動テストが行われ、統合の問題がないことを確認し、問題を早期に発見することができます。

CDとは?

継続的デリバリー はステージングシステムに変更を自動的に適用することで、ソフトウェアをいつでも本番環境にリリースできるようにします。

継続的デプロイ はさらに進んで、本番環境に変更を自動的に適用します。

チームにCI/CDワークフローが必要な理由

継続的インテグレーション

  • エラーを可能な限り迅速に検出: 開発者の記憶が新鮮なうちに問題を修正できます
  • 統合の問題を軽減: 小さな問題ほど解消しやすいです
  • 複合的な問題の回避: チームはより速く、より自信を持って開発することができます

継続的デリバリー

  • すべての変更がリリース可能であることを保証: リリース前にすべてのテストが実行済みです
  • 各リリースのリスクを低減: リリースを「簡単」にする
  • 価値をより迅速に提供: 信頼性の高いデプロイにより、頻繁にリリースできます
  • 素早いフィードバックループ: 顧客から変更に対する迅速かつ頻繁なフィードバックが得られます
CI/CD Overview

GitLab CI/CDのメリットは?

  • 統合されていること: GitLab CI/CDはGitLabの一部であり、計画からデプロイまで(そしてそれ以降も)一元管理が可能です
  • オープンソース: CI/CD は、オープンソースの GitLab Community Edition とプロプライエタリな GitLab Enterprise Edition の両方に含まれています
  • 簡単に学べること: クイックスタート ガイドをご覧ください
  • シームレス: オールインワンの GitLab アプリケーションの一部であり、優れたユーザースペリエンスを提供します
  • スケーラブル: テストは別々のマシンに分散して実行され、必要な数だけマシンを追加することができます
  • 高速に実行: 各ビルドを複数のジョブに分割して、複数のマシンで並列に実行できます
  • デリバリーの最適化: 複数ステージ、UI上で手動デプロイ、 環境変数
GitLab CI/CD

特徴

  • マルチプラットフォーム: Unix、Windows、macOS、その他Goをサポートするあらゆるプラットフォームでビルドを実行できます。
  • 多言語: ビルドスクリプトはコマンドラインで実行され、Java、PHP、Ruby、C、その他あらゆる言語で動作します。
  • 安定性: ビルドは GitLab とは別のマシンで実行されます。
  • 並列ビルド: GitLab CI/CD はビルドを複数のマシンに分割して高速に実行します。
  • リアルタイムロギング: マージリクエストのリンクをクリックすると、現在のビルドログが動的に更新されます。
  • 柔軟なパイプライン: ステージごとに複数の並列ジョブを定義し、 他のビルドをトリガー することができます。
  • バージョン管理されたパイプライン: .gitlab-ci.yml ファイル にはテストなどのすべてのステップが含まれています。 ブランチで .gitlab-ci.yml ファイルを変更することで、誰でも安全にパイプラインの変更を試すことができます。
  • オートスケーリング: ビルドがすぐに処理されるように VMを自動的に起動・停止 させて、コストを最小限に抑えることができます。
  • ビルド成果物: バイナリやその他の ビルド成果物 を GitLab にアップロードして、表示したりダウンロードしたりすることができます。
  • ローカルでのテスト: 複数の Executor があり、 ローカルでテストを再現することができます
  • Dockerのサポート: カスタムDockerイメージを使用したり、テストの一環として サービス を起動したり、 新しいDockerイメージをビルド したり、Kubernetes上で実行したりすることができます。
  • コンテナレジストリ: コンテナイメージを保存、共有、使用するための 組み込みコンテナレジストリ を利用できます。
  • 保護変数: 環境ごとに 保護変数 を使用して、デプロイに必要な認証情報などを安全に保存し、使用することができます。
  • 環境: 一時的な レビューアプリ を含めて、複数の環境を定義することができ、すべての環境のデプロイ履歴を確認できます。

GitLabはDevOpsライフサイクル全体のためのオールインワンのアプリケーション

  • GitLab Runners を使ってアプリケーションを ビルド
  • 単体テストと統合テスト を実行して、コードに問題がないかチェック
  • 安定版にマージする前に レビューアプリ で開発ブランチのライブプレビューを表示
  • ステージングや本番環境など複数の環境に デプロイ 、さらにカナリアデプロイなどの高度な機能もサポート
  • アプリケーションのパフォーマンスとステータスを 監視

GitLabと完全に統合

  • 素早くプロジェクトをセットアップ: ワンクリックでプロジェクトを追加できます。すべてのフックは GitLab API を介して自動的に設定されます。
  • マージリクエストとの統合: GitLab のマージリクエスト内で各ビルドの状態を確認できます。

アーキテクチャ

GitLab CI/CD はGitLabの一部であり、その状態をデータベースに保存するAPIを持つWebアプリケーションです。 GitLabのすべての機能に加えて、プロジェクト/ビルドを管理するための使いやすいユーザーインターフェイスを提供します。

GitLab Runner はビルドを実行するアプリケーションです。別のマシンに個別にインストールすることができ、APIを介してGitLab CI/CDと連携します。

テストを実行するためには、少なくとも、 1つの GitLabサーバー と1つの GitLab Runner が必要です。


GitLab Runner

実際のビルドを行うには、Goで書かれたGitLab Runnerをインストールする必要があります。

Linux、macOS、Windows、FreeBSD、Dockerなど、Goバイナリをビルドできるあらゆるプラットフォームで動作します。

.Net、Java、Python、C、PHPなど、あらゆるプログラミング言語をテストすることができます。

GitLab Runnerには、 オートスケーリング優れたDockerサポート 、複数のジョブを同時に実行できる機能など、 多くの機能 があります。

GitLab Runnerをインストール