メインコンテンツまでスキップ

CI/CDの使い方

GenerativeXのCI/CDシステムでは、GitHub Actionsを使ってアプリケーションを自動的にデプロイできます。コードをプッシュするだけで、Dockerイメージのビルド、Azureへのデプロイ、環境変数の設定が自動的に行われます。

環境の種類について

このシステムでは **dev(開発環境)**と **prd(本番環境)**の 2 つの環境があります。詳細は 環境の種類(dev / prd) を参照してください。

CI/CDでできること

1. アプリケーションのデプロイ

コードを変更してGitHubにプッシュすると、自動的に以下が実行されます:

  • Dockerイメージのビルド - アプリケーションをDockerイメージにパッケージ化
  • Azure Container Registryへのプッシュ - ビルドしたイメージを保存
  • 環境変数の適用 - 設定した環境変数をAzureに反映
  • Azure Container Appsへのデプロイ - 新しいイメージでアプリケーションを起動

2. 環境変数の更新

アプリケーションの設定を変更したい場合、環境変数ファイルを更新してGitHubにプッシュするだけで、自動的にAzureに反映されます。

3. 差分確認(Dry-run)

実際にデプロイする前に、変更内容を確認できます。本番環境へのデプロイ前に確認することを推奨します。

ワークフローの種類

GitHub Actionsでは、以下の3種類のワークフローが利用できます:

1. Deploy - 完全なデプロイ

用途: Dockerイメージのビルド、プッシュ、デプロイ、環境変数の適用を一度に実行

実行内容:

  1. Dockerイメージをビルド
  2. Azure Container Registry (ACR) にプッシュ
  3. 環境変数を復号化して適用
  4. 新しいイメージでContainer Appsをデプロイ

所要時間: 5-15分(初回は10-20分)

2. Environment Apply - 環境変数のみ更新

用途: 環境変数のみを更新(Dockerイメージは変更しない)

実行内容:

  1. 環境変数を復号化
  2. 環境変数の差分を計算
  3. Container Appsの環境変数のみを更新

所要時間: 1-3分

3. Plan - 差分確認(Dry-run)

用途: 実際の変更を行わず、変更内容のみを確認

実行内容:

  1. デプロイ計画を生成
  2. 環境変数の差分を表示
  3. 実際の適用は行わない

所要時間: 1-2分

使い方の流れ

初回セットアップ(インフラチームが実施)

  1. 環境の構築 - Azureリソース(Container Apps、データベースなど)を作成
  2. CI/CDパイプラインのセットアップ - GitHub Actionsのワークフローを設定
  3. 設定ファイルの配置 - infra.config.ymlをアプリケーションリポジトリに配置
  4. 引き渡し - アプリ開発チームに使い方を説明

日常的な使い方(アプリ開発チーム)

アプリケーションをデプロイする場合

  1. コードを変更 - アプリケーションのコードを編集
  2. GitHubにプッシュ - 変更をコミットしてプッシュ
  3. GitHub Actionsでデプロイ - Actionsタブから「Infra: Deploy / デプロイ (DEV)」を実行
  4. 完了を確認 - デプロイが成功したことを確認

環境変数を更新する場合

  1. 環境変数ファイルを編集 - .env.devまたは.env.prodを編集
  2. 暗号化 - infra env encrypt .env.devで暗号化
  3. GitHubにプッシュ - 変更をコミットしてプッシュ
  4. GitHub Actionsで適用 - Actionsタブから「Infra: Environment Apply / 環境変数更新 (DEV)」を実行

設定ファイル

infra.config.yml

アプリケーションのデプロイ設定を管理する設定ファイルです。このファイル1つで、以下の設定を管理します:

  • デプロイ先: どのAzureリソースにデプロイするか
  • Dockerイメージ: どのイメージをビルド・デプロイするか
  • 環境変数: どの環境変数ファイルを使用するか
  • スケーリング設定: CPU/メモリ、レプリカ数など

詳細は infra.config.ymlの基本設定 を参照してください。

環境変数ファイル

アプリケーションの設定値(APIキー、シークレットなど)を管理するファイルです:

  • .env.dev - 開発環境用の環境変数
  • .env.prod - 本番環境用の環境変数

これらのファイルは暗号化してGitに保存します。詳細は 環境変数の管理 を参照してください。

GitHub Actionsでの実行方法

基本的な手順

  1. GitHubリポジトリのActionsタブを開く
  2. 実行したいワークフローを選択
    • 「Infra: Deploy / デプロイ (DEV)」- 開発環境へのデプロイ
    • 「Infra: Deploy / デプロイ (PRD)」- 本番環境へのデプロイ
    • 「Infra: Environment Apply / 環境変数更新 (DEV)」- 環境変数の更新
  3. Run workflowをクリック
  4. パラメータを設定(必要に応じて)
  5. Run workflowをクリック
  6. 実行状況を確認 - 🟡 実行中、✅ 成功、❌ 失敗

利点

アプリ開発チームにとって

  • 簡単な操作 - GitHub Actionsのボタンをクリックするだけでデプロイ
  • 自動化 - 手動での作業が不要(イメージビルド、プッシュ、デプロイが自動)
  • 安全 - 環境変数は暗号化して管理
  • 一貫性 - すべてのアプリで同じCI/CDパターンを使用

インフラチームにとって

  • 一元管理 - 共通のCI/CDパイプラインを一元管理
  • 標準化 - すべてのアプリで同じデプロイプロセス
  • 保守性 - 共通ワークフローの改善が自動的に全アプリに反映

よくある質問

Q1: デプロイにどのくらい時間がかかりますか?

A:

  • Deploy(初回): 10-20分(イメージキャッシュなし)
  • Deploy(2回目以降): 5-10分(イメージキャッシュあり)
  • Environment Apply: 1-3分
  • Plan(Dry-run): 1-2分

Q2: デプロイが失敗した場合はどうすればいいですか?

A: GitHub Actionsのログを確認してください。よくある原因:

  • イメージビルドの失敗 → Dockerfileやビルド設定を確認
  • 環境変数の復号化失敗 → GitHub Secretsを確認
  • リソースが見つからないinfra.config.ymlの設定を確認
  • 権限エラー → インフラチームに連絡

Q3: 本番環境へのデプロイ前に確認できますか?

A: はい、dry_runパラメータを有効にすると、実際の変更を行わずに変更内容を確認できます。本番環境へのデプロイ前の確認に推奨します。

Q4: 特定のサービスだけをデプロイできますか?

A: はい、servicesパラメータで特定のサービスのみを対象にできます。例:frontend または frontend,backend

Q5: 環境変数はどこで管理しますか?

A: アプリケーションリポジトリの.env.dev.env.prodファイルで管理します。これらのファイルは暗号化してGitに保存します。詳細は 環境変数の管理 を参照してください。

関連ドキュメント