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

infra.config.yml とは

infra.config.ymlは、アプリケーションのデプロイ設定を一元管理する設定ファイルです。このファイル 1 つで、環境(dev/prd)、サービス(frontend/backend)、デプロイ先、イメージ設定などを管理します。

ファイルの配置場所

infra.config.ymlは、アプリケーションリポジトリのルートに配置します。

最小限の設定例

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_nameapp_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 など)を表します。

複数サービスの設定例

infra.config.yml
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 requiredtarget: container_appsを追加、'container_app_name' is requiredcontainer_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.*

関連ドキュメント