本サイトは広告により収益を得ています

CI/CDの基本概念とGitHub Actions/GitLab CIの利用

CI/CDの基本概念とGitHub Actions/GitLab CIの利用

2025年11月10日
フリー検定
広告

目次

現在: 8 / 12

バックエンドエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する

アプリケーション開発において、コードの変更を迅速かつ安全にユーザーに届けるための仕組みが不可欠です。CI/CD (Continuous Integration/Continuous Delivery or Deployment) は、このプロセスを自動化するための開発手法であり、アドバンストエンジニアにとって必須の知識です。この章では、CI/CDの基本概念と、主要なツールである GitHub Actions および GitLab CI の利用について解説します。


1. CI/CDの基本概念

CI/CDは、開発パイプライン全体を自動化し、品質とスピードを両立させることを目指します。

A. CI(Continuous Integration: 継続的インテグレーション)

  • 目的: 開発チームが頻繁にコード変更をメインブランチに統合(マージ)し、そのたびに自動でビルドとテストを実行することで、早期に問題を発見します。

  • プロセス:

    1. 開発者がコードをコミットし、プッシュします。

    2. CIツールが変更を検知し、自動でビルド(コンパイルや依存関係の解決)を実行します。

    3. 自動でユニットテスト統合テストを実行し、問題がないか検証します。

    4. ビルドとテストが成功した場合、**成果物(アーティファクト)**を作成します(例: Dockerイメージ)。

B. CD(Continuous Delivery/Deployment: 継続的デリバリー/デプロイメント)

  • 目的: CIによって検証されたコードを、迅速かつ自動で環境にリリースできるようにします。

  • 継続的デリバリー (Continuous Delivery: CD):

    • テストが完了したアプリケーションを、いつでもリリースできる状態にしておきます。

    • 本番環境へのデプロイは、手動の承認やボタン操作によって行われます。

  • 継続的デプロイメント (Continuous Deployment: CD):

    • 継続的デリバリーに加え、テストに成功したコードを自動で本番環境にデプロイします。

    • 人間の介入なしに、コードが即座にユーザーに届きます。


2. CI/CDパイプラインの構成要素

CI/CDは、通常、以下のような一連の**ステージ(段階)**で構成されます。

  1. ソースステージ (Source): Gitリポジトリへのプッシュなど、変更の発生をトリガーとします。

  2. ビルドステージ (Build): ソースコードから実行可能な成果物(Dockerイメージ、jarファイルなど)を作成します。

  3. テストステージ (Test): ユニットテスト、結合テスト、セキュリティスキャンなどを実行し、品質を検証します。

  4. デリバリー/デプロイステージ (Deploy): 検証済みの成果物を、開発環境、ステージング環境、そして最終的に本番環境へとデプロイします。


3. 主要なCI/CDツールの利用

現代では、GitHubやGitLabといったソースコード管理サービスに統合されたCI/CDツールが主流です。

A. GitHub Actions

  • 特徴: GitHubに完全に統合されたワークフロー自動化プラットフォームです。リポジトリ内に/.github/workflowsディレクトリを作成し、YAMLファイルでパイプラインを定義します。

  • 主要な構成要素:

    • Workflow(ワークフロー): CI/CDパイプライン全体を定義します。

    • Event(イベント): ワークフローの実行トリガー(例: pushpull_request)。

    • Job(ジョブ): 実行環境(Runner)上で実行される一連のステップのまとまりです。並行実行も可能です。

    • Step(ステップ): ジョブ内で実行される個別のタスク(例: コードのチェックアウト、依存関係のインストール、テスト実行)です。

    • Action(アクション): GitHubコミュニティや公式が提供する再利用可能なタスクの単位です(例: 特定の言語環境のセットアップ)。

  • GitHub Actionsのワークフロー定義の例(イメージ):

    YAML

    name: CI Pipeline
    
    on: [push] # pushイベントで実行
    
    jobs:
      build-and-test:
        runs-on: ubuntu-latest # 実行環境
    
        steps:
          - uses: actions/checkout@v4 # コードをチェックアウト
          - name: Set up Python
            uses: actions/setup-python@v5
            with:
              python-version: '3.11'
          - name: Install dependencies
            run: pip install -r requirements.txt
          - name: Run tests
            run: python -m pytest
    

B. GitLab CI/CD

  • 特徴: GitLabに組み込まれたCI/CD機能です。リポジトリのルートに作成する .gitlab-ci.yml ファイルでパイプラインを定義します。

  • 主要な構成要素:

    • Pipeline(パイプライン): CI/CDの実行全体を指します。

    • Stage(ステージ): ジョブを論理的にグループ化する段階です(例: build, test, deploy)。

    • Job(ジョブ): 特定のステージで実行されるタスクです。script: セクションに実行したいコマンドを記述します。

    • Runner(ランナー): ジョブを実行するエージェント(実行環境)です。

  • GitLab CIのパイプライン定義の例(イメージ):

    YAML

    stages:
      - build
      - test
    
    build-job:
      stage: build
      script:
        - echo "Building the application..."
        - ./build-script.sh
    
    test-job:
      stage: test
      script:
        - echo "Running tests..."
        - ./run-tests.sh
    

CI/CDを導入することで、バックエンドエンジニアは品質管理の手間を減らし、より頻繁に、より自信を持ってコードをリリースできるようになります。

バックエンドエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する
広告

検定一覧はこちらから

様々なジャンルの検定から選んで、あなたの知識を試してみましょう。

検定一覧を見る

関連記事

広告