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イメージのビルド、プッシュ、デプロイ、環境変数の適用を一度に実行
実行内容:
- Dockerイメージをビルド
- Azure Container Registry (ACR) にプッシュ
- 環境変数を復号化して適用
- 新しいイメージでContainer Appsをデプロイ
所要時間: 5-15分(初回は10-20分)
2. Environment Apply - 環境変数のみ更新
用途: 環境変数のみを更新(Dockerイメージは変更しない)
実行内容:
- 環境変数を復号化
- 環境変数の差分を計算
- Container Appsの環境変数のみを更新
所要時間: 1-3分
3. Plan - 差分確認(Dry-run)
用途: 実際の変更を行わず、変更内容のみを確認
実行内容:
- デプロイ計画を生成
- 環境変数の差分を表示
- 実際の適用は行わない
所要時間: 1-2分
使い方の流れ
初回セットアップ(インフラチームが実施)
- 環境の構築 - Azureリソース(Container Apps、データベースなど)を作成
- CI/CDパイプラインのセットアップ - GitHub Actionsのワークフローを設定
- 設定ファイルの配置 -
infra.config.ymlをアプリケーションリポジトリに配置 - 引き渡し - アプリ開発チームに使い方を説明
日常的な使い方(アプリ開発チーム)
アプリケーションをデプロイする場合
- コードを変更 - アプリケーションのコードを編集
- GitHubにプッシュ - 変更をコミットしてプッシュ
- GitHub Actionsでデプロイ - Actionsタブから「Infra: Deploy / デプロイ (DEV)」を実行
- 完了を確認 - デプロイが成功したことを確認
環境変数を更新する場合
- 環境変数ファイルを編集 -
.env.devまたは.env.prodを編集 - 暗号化 -
infra env encrypt .env.devで暗号化 - GitHubにプッシュ - 変更をコミットしてプッシュ
- 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での実行方法
基本的な手順
- GitHubリポジトリのActionsタブを開く
- 実行したいワークフローを選択
- 「Infra: Deploy / デプロイ (DEV)」- 開発環境へのデプロイ
- 「Infra: Deploy / デプロイ (PRD)」- 本番環境へのデプロイ
- 「Infra: Environment Apply / 環境変数更新 (DEV)」- 環境変数の更新
- Run workflowをクリック
- パラメータを設定(必要に応じて)
- Run workflowをクリック
- 実行状況を確認 - 🟡 実行中、✅ 成功、❌ 失敗
利点
アプリ開発チームにとって
- 簡単な操作 - 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に保存します。詳細は 環境変数の管理 を参照してください。
関連ドキュメント
- infra.config.ymlの基本設定 - 設定ファイルの作成方法
- 環境変数の管理 - 環境変数の暗号化と管理
- デプロイ後の確認 - デプロイが成功したかどうかの確認方法