公開:2025年4月25日

1分で読めます

GitLab入門:CI/CDについて理解する

この初心者向けガイドでは、継続的インテグレーション(CI)/継続的デリバリー(CD)の基本(CI/CDコンポーネントの概要や作成方法など)を解説します。

すべてのコード変更が自動的にビルドおよびテストされ、そのうえでユーザーにデプロイされる。そんなワークフローを想像してみてください。それを可能にするのが、継続的インテグレーション/継続的デリバリー(CI/CD)です。CI/CDは、バグの早期発見、コード品質の確保、および迅速かつ頻繁なソフトウェアデリバリーの実現に役立ちます。

CI/CDとは

  • **継続的インテグレーション(CI)**は、デベロッパーがコード変更を頻繁に(1日に数回が理想とされる)共有リポジトリに統合する開発手法です。各統合は自動化されたビルドとテストのプロセスによって検証されるため、早い段階で問題を検出できます。
  • **継続的デリバリー(CD)**はCIを拡張した開発手法で、リリースパイプラインを自動化することで、コードを常にデプロイ可能な状態に保ちます。アプリケーションをさまざまな環境(stagingステージ、本番環境など)に自動的に、またはワンクリックでデプロイできます。
  • 継続的デプロイはさらにもう一歩踏み込み、本番環境に成功したビルドをすべてデプロイする手法です。継続的デプロイは、自動化されたテストとデプロイのプロセスに十分な信頼性がある場合にのみ、有効です。

GitLab CI/CDが選ばれる理由

GitLab CI/CDは、GitLabに組み込まれた強力な統合システムです。これを利用することで、ソフトウェア開発ライフサイクル全体をシームレスに自動化できます。GitLab CI/CDによって、以下のことを実現できます。

  • あらゆるプロセスの自動化:アプリケーションのビルド、テスト、デプロイを簡単に行えます。
  • バグの早期発見:問題が本番環境に到達する前に検出し、修正できます。
  • フィードバックループの高速化:コード変更に関するフィードバックを即座に受け取れます。
  • コラボレーションの向上:自動化されたワークフローによって、より効果的に共同作業を行えます。
  • デリバリーの高速化:ソフトウェアをより迅速かつ頻繁にリリースできます。
  • リスクの低減:デプロイ時のエラーやロールバックを最小限に抑えられます。

GitLab CI/CDの構成要素

  • .gitlab-ci.yml:プロジェクトのルートディレクトリにあるYAMLファイルです。ステージやジョブ、Runnerなど、CI/CDパイプラインの構成を定義します。
  • GitLab Runner:任意のインフラストラクチャ(物理マシン、仮想マシン、Dockerコンテナ、Kubernetesクラスターなど)上でCI/CDジョブを実行するエージェントです。
  • ステージ:ジョブ(ビルド、テスト、デプロイなど)の実行順序を定義します。
  • ジョブ:ステージ内の個々の作業単位(コードのコンパイル、テストの実行、stagingステージへのデプロイなど)を指します。

GitLab CIの設定

GitLab CIは簡単に使い始められます。以下は.gitlab-ci.ymlファイルの基本的な設定例です。


stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "アプリケーションをビルド中..."

test_job:
  stage: test
  script:
    - echo "テストを実行中..."

deploy_job:
  stage: deploy
  script:
    - echo "本番環境へデプロイ中..."
  environment:
    name: production

この設定では、「build」「test」「deploy」の3つのステージを定義しています。それぞれのステージには、単純なスクリプトを実行するジョブが含まれています。

CI/CDの設定例

次に、より実践的な例をいくつか見てみましょう。

Node.jsアプリケーションのビルドとデプロイ

以下のパイプライン定義では、npmを使用してNode.jsアプリケーションのビルドおよびテストを行い、dplを用いてアプリケーションをHerokuにデプロイする方法を説明しています。パイプラインのdeployステージでは、GitLab CI/CD変数を使用しています。デベロッパーは機密情報(認証情報など)をこの変数に格納して、CI/CDプロセスで安全に使用できます。この例では、Herokuにデプロイする際にdplツールが使用するAPIキーが、$HEROKU_API_KEYという名前の変数キーに格納されます。


stages:
  - build
  - test
  - deploy

build:
  stage: build
  image: node:latest
  script:
    - npm install
    - npm run build

test:
  stage: test
  image: node:latest
  script:
    - npm run test

deploy:
  stage: deploy
  image: ruby:latest
  script:
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY

異なる環境へのデプロイ(stagingステージや本番環境)

GitLabではさらに、CI/CDを使用した環境という機能もご用意しています。この機能を使用すると、CI/CDから対象のインフラストラクチャへのデプロイを追跡できます。以下の例では、パイプラインにおいてstagingステージと本番環境の環境プロパティを持つステージが追加されます。deploy_stagingステージでは必ず指定したスクリプトが実行される一方、deploy_productionステージでは手動による承認が必要となります。これは誤って本番環境へのデプロイが行われるのを防ぐためです。


stages:
  - build
  - test
  - deploy_staging
  - deploy_production

build:
  # ...

test:
  # ...

deploy_staging:
  stage: deploy_staging
  script:
    - echo "stagingステージへのデプロイ中..."
  environment:
    name: staging

deploy_production:
  stage: deploy_production
  script:
    - echo "本番環境へのデプロイ中..."
  environment:
    name: production
  when: manual  # 手動による承認が必要

GitLab Auto DevOps

GitLab Auto DevOpsは、アプリケーションを自動的にビルド、テスト、デプロイするためのあらかじめ定義された設定を提供することで、CI/CDを簡素化します。ベストプラクティスと業界標準に基づいてワークフローを効率化する仕組みです。

Auto DevOpsを有効にする方法:

  1. プロジェクトの設定 > CI/CD > 一般パイプラインの順にアクセスします。
  2. Auto DevOpsオプションを有効にします。

Auto DevOpsを有効にすると、プロジェクトの言語とフレームワークが自動的に検出され、必要なビルド、テスト、デプロイのステージが設定されます。そのため、.gitlab-ci.ymlファイルを作成する必要すらありません。

CI/CDカタログ

CI/CDカタログには、CI/CDワークフローを拡張するために使用可能な、公開済みのCI/CDコンポーネントをまとめたプロジェクトが一覧で記載されています。誰でもコンポーネント用のプロジェクトを作成してCI/CDカタログに追加したり、既存プロジェクトへのコントリビュートを通じて公開コンポーネントを改善したりできます。これらのコンポーネントは、GitLab.comのCI/CDカタログに掲載されています。

チュートリアル:初めてのGitLab CI/CDコンポーネントの設定方法

CIテンプレート

さらに、独自のCIテンプレートを作成して、複数のプロジェクトに対するCI/CDの設定を標準化し、再利用することもできます。これにより、一貫性が高まり、重複が生じにくくなります。

CIテンプレートの作成方法:

  1. 専用のプロジェクトまたはリポジトリに.gitlab-ci.ymlファイルを作成します。
  2. テンプレートでCI/CD設定を定義します。
  3. プロジェクトの.gitlab-ci.ymlファイルで、includeキーワードを使用してテンプレートをインクルードします。

開発ワークフローをレベルアップ

GitLab CI/CDは、開発ワークフローに変革をもたらせる強力なツールです。CI/CDの概念を理解して、パイプラインを設定し、Auto DevOpsやCI/CDカタログ、CIテンプレートなどの機能を活用すれば、ソフトウェア開発ライフサイクル全体を自動化し、高品質なソフトウェアをより迅速かつ効率的に提供できます。

さらに詳しく知りたい場合は、GitLab Universityのコースに登録するか、GitLab Ultimateの60日間無料トライアルを今すぐお試しください。

「GitLab入門」シリーズ

「GitLab入門」シリーズのその他の記事もぜひご覧ください。

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成して、ご意見をお聞かせください。

フォーチュン100企業の50%以上がGitLabを信頼

より優れたソフトウェアをより速く提供

インテリジェントなDevSecOpsプラットフォームで

チームの可能性を広げましょう。