infra.config.yml とは
infra.config.ymlは、アプリケーションのデプロイ設定を一元管理する設定ファイルです。このファイル 1 つで、環境(dev/prd)、サービス(frontend/backend)、デプロイ先、イメージ設定などを管理します。
ファイルの配置場所
infra.config.ymlは、アプリケーションリポジトリのルートに配置します。
最小限の設定例
dev:
frontend:
# デプロイ先の種類(必須)
target: container_apps
# Azureリソースグループ(必須)
resource_group: rg-myapp-dev
# Container App名(必須 - Container Apps使用時)
container_app_name: ca-myapp-frontend-dev
# 環境変数ファイル(必須)
dotenv_path: .env.dev
# レジストリ設定(必須)
registry:
acr_name: gxsharedacr
login_server: gxsharedacr.azurecr.io
repository: myapp/frontend
tag_name: "{{ git.sha_short }}"
prd:
frontend:
target: container_apps
resource_group: rg-myapp-prd
container_app_name: ca-myapp-frontend-prd
dotenv_path: .env.prod
registry:
acr_name: gxsharedacr
login_server: gxsharedacr.azurecr.io
repository: myapp/frontend
tag_name: "{{ git.sha_short }}"
必須フィールド
1. target - デプロイ先の種類
デプロイ先の Azure サービスを指定します。
選択肢:
container_apps: Azure Container Apps(推奨)app_service: Azure App Service
target: container_apps
基本的に infra-cli で新規構築されたアプリケーションは Container Apps で作成されます。App Service が利用されるのは gx-dev-subscription で作成された旧来のアプリケーションに CI/CD を設定する場合のみです。
2. azure_subscription - Azure サブスクリプション ID(オプション)
デプロイ先の Azure サブスクリプション ID を指定します。省略した場合は、GitHub Secrets のAZURE_SUBSCRIPTION_IDが使用されます。
3. resource_group - リソースグループ名
Azure リソースグループ名を指定します(インフラチームから提供)。命名規則: rg-{tenant}-{env}
4. container_app_name / app_service_name - リソース名
デプロイ先のリソース名を指定します。container_app_nameとapp_service_nameは、どちらか一方を必ず指定してください。
- Container Apps:
ca-{tenant}-{component}-{env} - App Service:
web-{tenant}-{component}-{env}またはapi-{tenant}-{component}-{env}
5. dotenv_path - 環境変数ファイルのパス
環境変数ファイル(暗号化済み)のパスを指定します。例: .env.dev, .env.prod, frontend/.env.dev
詳細は 環境変数の管理 を参照。
6. registry - コンテナレジストリ設定
Docker イメージを保存する Azure Container Registry(ACR)の設定を指定します。
acr_name: ACR 名(インフラチームから提供)login_server: ACR ログインサーバー URL(形式:{acr_name}.azurecr.io)repository: リポジトリパス(命名規則:{app-name}/{service-name})tag_name: デプロイ時のタグ名
使用可能なテンプレート変数: {{ git.sha_short }}, {{ git.sha }}, {{ git.branch }}, {{ git.tag }}, {{ git.tag_or_sha }}, {{ github.run_number }}
推奨設定: 開発環境は {{ git.sha_short }}、本番環境は v{{ git.tag_or_sha }}
環境とサービスの構造
第 1 階層は環境(dev, prd / prod)、第 2 階層はサービス(frontend, backend, api, worker, admin など)を表します。
複数サービスの設定例
dev:
# フロントエンド
frontend:
target: container_apps
resource_group: rg-myapp-dev
container_app_name: ca-myapp-frontend-dev
dotenv_path: .env.dev
registry:
acr_name: gxsharedacr
login_server: gxsharedacr.azurecr.io
repository: myapp/frontend
tag_name: "{{ git.sha_short }}"
# バックエンド
backend:
target: container_apps
resource_group: rg-myapp-dev
container_app_name: ca-myapp-backend-dev
dotenv_path: .env.dev
registry:
acr_name: gxsharedacr
login_server: gxsharedacr.azurecr.io
repository: myapp/backend
tag_name: "{{ git.sha_short }}"
prd:
frontend:
target: app_service
resource_group: rg-myapp-prd
app_service_name: web-myapp-frontend-prd
dotenv_path: .env.prod
registry:
login_server: gxsharedacr.azurecr.io
repository: myapp/frontend
tag_name: "v{{ git.tag_or_sha }}"
backend:
target: app_service
resource_group: rg-myapp-prd
app_service_name: api-myapp-backend-prd
dotenv_path: .env.prod
registry:
login_server: gxsharedacr.azurecr.io
repository: myapp/backend
tag_name: "v{{ git.tag_or_sha }}"
設定の検証
infra config validate
よくあるエラー: 'target' is required → target: container_appsを追加、'container_app_name' is required → container_app_nameを追加、'dotenv_path' file not found → ファイルを作成するか、パスを修正
責任分担
- インフラチームが管理:
azure_subscription,resource_group,container_app_name/app_service_name,registry.acr_name,registry.login_server - アプリ開発チームが変更可能:
dotenv_path,registry.repository,registry.tag_name,image.*,deploy.*
関連ドキュメント
- infra.config.yml 仕様 - 設定ファイルの完全な仕様