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

infra.config.yml の仕様

infra.config.yml を使用してAzureにアプリケーションをデプロイするための設定ファイル仕様について説明します。

概要

インフラ設定駆動型 CI/CD システムを使用すると、単一の YAML ファイル(infra.config.yml)でインフラストラクチャのデプロイ設定を定義し、再利用可能な GitHub Actions ワークフローを使用して Azure App Service または Container Apps にアプリケーションを自動的にデプロイできます。

infra.config.yml は、環境、サービス、デプロイ設定を定義する設定ファイルです。

主な機能

  • 単一の設定ファイル: すべての環境とサービスを infra.config.yml で定義
  • 安全なシークレット管理: dotenvx を使用した暗号化された環境変数
  • プランとデプロイモード: 適用前に変更をプレビュー
  • マルチ環境サポート: dev、staging、production などへのデプロイ
  • サービスフィルタリング: 特定のサービスまたはすべてのサービスをデプロイ
  • テンプレート変数: git SHA や実行番号などの動的な値
  • OIDC 認証: 認証情報を保存せずに安全な Azure 認証

クイックスタート

方法 1: 自動セットアップ(推奨)

rollout-ci コマンドを使用して、リポジトリに自動的に設定ファイルとワークフローを追加できます。

前提条件: GitHub CLI (gh) がインストールされ、認証済みであること

実行内容: リポジトリをクローン → infra.config.yml を追加 → .github/workflows/infra-deploy-dev.ymlinfra-deploy-prd.yml を追加 → .github/workflows/infra-env-apply-dev.ymlinfra-env-apply-prd.yml を追加 → ブランチを作成してコミット → プルリクエストを作成または更新

次のステップ: プルリクエストを確認し、infra.config.yml を実際の値に更新 → GitHub シークレットを設定 → 環境変数を暗号化 → プルリクエストをマージ → GitHub Actions UI からワークフローをテスト

詳細は CLI コマンドリファレンス - rollout-ci を参照。

方法 2: 手動セットアップ

手動で設定ファイルとワークフローを追加する場合:

1. 設定ファイルの追加

リポジトリのルートに infra.config.yml を作成します:

dev:
frontend:
target: container_apps
# Azure Subscription ID
# デフォルト: gx-prod-subscription (本番環境)
azure_subscription: "e3143cb2-4707-4614-bbba-3ddeb66669c2"
# 開発環境を使用する場合は以下のコメントアウトを解除:
# azure_subscription: "8bebe608-cec5-41c4-9ee0-4377b03cb235"
resource_group: rg-myapp-dev
container_app_name: app-myapp-frontend-dev
dotenv_path: .env.dev

registry:
acr_name: gxsharedacr
login_server: gxsharedacr.azurecr.io
repository: myapp/frontend
tag_name: "{{ git.sha_short }}"

image:
context: ./frontend
dockerfile: ./frontend/Dockerfile
tags:
- "{{ git.sha_short }}"
- "latest"

deploy:
replicas: 1
cpu: "0.5"
memory: "1.0Gi"

2. ワークフローの追加

環境ごとにワークフローファイルを作成します。

開発環境用デプロイワークフロー

.github/workflows/infra-deploy-dev.yml を作成します:

name: Infra: Deploy / デプロイ (DEV)

on:
workflow_dispatch:
inputs:
dry_run:
description: "Dry-runモード(変更の内容確認のみ、実行しない)"
required: false
type: boolean
default: false
services:
description: "デプロイするサービス(カンマ区切り、空の場合は全サービス)"
required: false
type: string
default: ""

permissions:
id-token: write
contents: read
pull-requests: write
actions: read

jobs:
plan:
if: github.event.inputs.dry_run == 'true'
uses: GenerativeX/infra/.github/workflows/org-plan.yml@main
with:
environment: dev
services: ${{ github.event.inputs.services }}
secrets: inherit

deploy:
if: github.event.inputs.dry_run == 'false'
uses: GenerativeX/infra/.github/workflows/org-deploy.yml@main
with:
environment: dev
services: ${{ github.event.inputs.services }}
plan_only: false
secrets: inherit

本番環境用デプロイワークフロー

.github/workflows/infra-deploy-prd.yml を作成します(内容は上記と同じですが、environment: prd と名前を変更):

name: Infra: Deploy / デプロイ (PRD)

on:
workflow_dispatch:
inputs:
dry_run:
description: "Dry-runモード(変更の内容確認のみ、実行しない)"
required: false
type: boolean
default: false
services:
description: "デプロイするサービス(カンマ区切り、空の場合は全サービス)"
required: false
type: string
default: ""

permissions:
id-token: write
contents: read
pull-requests: write
actions: read

jobs:
plan:
if: github.event.inputs.dry_run == 'true'
uses: GenerativeX/infra/.github/workflows/org-plan.yml@main
with:
environment: prd
services: ${{ github.event.inputs.services }}
secrets: inherit

deploy:
if: github.event.inputs.dry_run == 'false'
uses: GenerativeX/infra/.github/workflows/org-deploy.yml@main
with:
environment: prd
services: ${{ github.event.inputs.services }}
plan_only: false
secrets: inherit

環境変数更新ワークフロー

.github/workflows/infra-env-apply-dev.yml.github/workflows/infra-env-apply-prd.yml も同様に作成します:

name: Infra: EnvVar Apply / 環境変数更新 (DEV)

on:
workflow_dispatch:
inputs:
dry_run:
description: "Dry-runモード(変更の内容確認のみ、実行しない)"
required: false
type: boolean
default: false
services:
description: "更新するサービス(カンマ区切り、空の場合は全サービス)"
required: false
type: string
default: ""

permissions:
id-token: write
contents: read
actions: read

jobs:
apply:
uses: GenerativeX/infra/.github/workflows/org-env-apply.yml@main
with:
environment: dev
services: ${{ github.event.inputs.services }}
plan_only: ${{ github.event.inputs.dry_run }}
secrets: inherit

本番環境用は environment: prd と名前を変更してください。

3. 環境変数の暗号化

📍 実行場所: このセクションのコマンドは アプリケーションリポジトリ内infra.config.yml がある場所)で実行します。

環境変数は dotenvx を使用して暗号化され、.env.vault ファイルに保存されます。暗号化には GX_SHARED_PRIVATE_KEY を使用します。

基本的な使用方法

環境変数ファイルを作成し、暗号化します。infra env encryptコマンドを使用する方法(推奨)と、dotenvx コマンドを直接使用する方法があります。

方法 1: infra env encryptコマンドを使用(推奨)
# アプリケーションリポジトリのルートで実行(infra.config.ymlがある場所)
cd /path/to/your-app-repo

# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# 環境変数ファイルを作成
echo "DATABASE_URL=..." > .env.dev
echo "API_KEY=..." >> .env.dev

# infra env encryptで暗号化(元のファイルに上書き)
infra env encrypt .env.dev

# 暗号化された .env.dev をコミット
git add .env.dev
git commit -m "Add encrypted environment variables"
方法 2: dotenvx コマンドを直接使用
# 環境変数ファイルを作成
echo "DATABASE_URL=..." > .env.frontend.dev
echo "API_KEY=..." >> .env.frontend.dev

# dotenvx で暗号化(.env.vault に出力)
DOTENV_PRIVATE_KEY_FRONTEND_DEV=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.frontend.dev

# 暗号化された .env.vault をコミット
git add .env.frontend.dev
git commit -m "Add encrypted environment variables"

環境ごとの暗号化・復号化コマンド

infra env encrypt/decryptコマンドを使用(推奨)

infra env encrypt/decryptコマンドを使用すると、環境変数キー名を指定する必要がなく、GX_SHARED_PRIVATE_KEYを常に使用します:

# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# 暗号化
infra env encrypt .env.dev
infra env encrypt .env.prod

# 復号化
infra env decrypt .env.dev
infra env decrypt .env.prod

特徴:

  • 既に暗号化済みのファイルの場合は自動的にスキップ
  • 環境変数キー名の指定が不要(GX_SHARED_PRIVATE_KEYを常に使用)
  • 元のファイルに上書き(--outputで別ファイルに出力可能)
dotenvx コマンドを直接使用

環境ごとに異なる環境変数名を使用して暗号化・復号化できます。以下は package.jsonscripts セクションに追加する例です:

{
"scripts": {
"encrypt:local": "DOTENV_PRIVATE_KEY_LOCAL=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -o -f .env.local",
"decrypt:local": "DOTENV_PRIVATE_KEY_LOCAL=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.local",
"encrypt:dev": "DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.dev",
"decrypt:dev": "DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.dev",
"encrypt:test": "DOTENV_PRIVATE_KEY_TEST=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.test",
"decrypt:test": "DOTENV_PRIVATE_KEY_TEST=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.test",
"encrypt:prod": "DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.prod",
"decrypt:prod": "DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.prod",
"encrypt:docker": "DOTENV_PRIVATE_KEY_DOCKER=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.docker",
"decrypt:docker": "DOTENV_PRIVATE_KEY_DOCKER=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.docker"
}
}

使用方法:

# 環境変数を設定(通常はシェルの環境変数として設定)
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# 暗号化
npm run encrypt:dev
# または
yarn encrypt:dev

# 復号化
npm run decrypt:dev
# または
yarn decrypt:dev

注意事項:

  • GX_SHARED_PRIVATE_KEY は 16 進数形式の秘密鍵です
  • -o オプションは標準出力に暗号化された内容を出力します(.env.vault への自動書き込みをスキップ)
  • -f オプションで対象ファイルを指定します
  • 環境変数の暗号化形式は encrypted: プレフィックス付きの Base64 エンコードされた値です
  • 復号化には GX_SHARED_PRIVATE_KEY が必要です

設定リファレンス

トップレベル構造

<environment>:
<service>:
# サービス設定
  • <environment>: 環境名(例:devprdstaging
  • <service>: サービス名(例:frontendbackendapi

サービス設定

必須フィールド

  • target: ターゲット Azure サービスタイプ
    • app_service: Azure App Service
    • container_apps: Azure Container Apps
  • azure_subscription: Azure サブスクリプション ID(UUID 形式)
  • resource_group: Azure リソースグループ名
  • dotenv_path: dotenvx 暗号化ファイルへのパス(例:.env.vault
  • registry: コンテナレジストリ設定
    • login_server: ACR ログインサーバー(例:gxsharedacr.azurecr.io
    • repository: コンテナイメージリポジトリパス
    • tag_name: デプロイ時に使用するメインのタグ名(テンプレート変数対応、例:{{ git.sha_short }}

ターゲット固有の必須フィールド

重要: container_app_nameapp_service_nameどちらか一方は必須です。

target: container_apps の場合:

  • container_app_name: Container App 名(必須)

target: app_service の場合:

  • app_service_name: App Service 名(必須)

オプションフィールド

イメージビルド設定
image:
context: ./path/to/build/context
dockerfile: ./path/to/Dockerfile
build_args:
NODE_ENV: production
VERSION: "1.0.0"
tags:
- "{{ git.sha_short }}"
- "{{ github.run_number }}"
- "latest"
cache_from:
- "gxsharedacr.azurecr.io/myapp/frontend:cache"
cache_to: "type=inline"
デプロイ設定
deploy:
replicas: 1 # レプリカ数(Container Apps)
cpu: "0.5" # CPU 割り当て
memory: "1.0Gi" # メモリ割り当て
health_check: true # デプロイ後のヘルスチェックを有効化
restart: false # デプロイ後にサービスを再起動

テンプレート変数

設定値で以下のテンプレート変数が使用できます:

  • {{ git.sha_short }}: 短い git SHA(最初の 7 文字)
  • {{ git.tag_or_sha }}: 利用可能な場合は git タグ、それ以外は短い SHA
  • {{ github.run_number }}: GitHub Actions 実行番号

例:

tags:
- "{{ git.sha_short }}" # 展開後: abc1234
- "run-{{ github.run_number }}" # 展開後: run-42
- "v{{ git.tag_or_sha }}" # 展開後: v1.2.3 または vabc1234

ワークフロー

org-plan.yml(プランモード)

ドライランモードで実行し、変更を加えずにデプロイされる内容を表示します。プラン結果は plan.json アーティファクトとして保存されます。

入力:

  • environment(必須): ターゲット環境
  • services(オプション): カンマ区切りのサービスリスト

必要なシークレット:

  • AZURE_CLIENT_ID: Azure AD アプリケーションのクライアント ID
  • AZURE_TENANT_ID: Azure AD テナント ID
  • AZURE_SUBSCRIPTION_ID: Azure サブスクリプション ID
  • GX_SHARED_PRIVATE_KEY: 環境変数復号化用の共有秘密鍵

使用方法:

jobs:
plan:
uses: GenerativeX/infra/.github/workflows/org-plan.yml@v1
with:
environment: ${{ github.event.inputs.environment }}
services: ${{ github.event.inputs.services }}
secrets: inherit

注意: org-plan.yml は内部で plan_only: 'true' を設定して実行されます。

org-deploy.yml(デプロイモード)

アプリケーションを Azure にデプロイします。デプロイログは plan.jsondeploy.log アーティファクトとして保存されます。

入力:

  • environment(必須): ターゲット環境
  • services(オプション): カンマ区切りのサービスリスト
  • plan_only(オプション): プランのみモードで実行(true の場合、実際のデプロイは行わずプレビューのみ)

必要なシークレット:

  • AZURE_CLIENT_ID: Azure AD アプリケーションのクライアント ID
  • AZURE_TENANT_ID: Azure AD テナント ID
  • AZURE_SUBSCRIPTION_ID: Azure サブスクリプション ID
  • GX_SHARED_PRIVATE_KEY: 環境変数復号化用の共有秘密鍵

使用方法:

jobs:
deploy:
uses: GenerativeX/infra/.github/workflows/org-deploy.yml@v1
with:
environment: ${{ github.event.inputs.environment }}
services: ${{ github.event.inputs.services }}
plan_only: ${{ github.event.inputs.plan_only }}
secrets: inherit

注意: org-deploy.ymlenvironment 入力に基づいて GitHub Environments を使用します。これにより、環境ごとの承認ゲートや保護ブランチルールを設定できます。

アクション

システムは 4 つの GitHub Actions で構成されています:

infra-runner

デプロイプロセスを調整するメインオーケストレーター。

azure-env-apply

Azure サービスに環境変数を適用します。

docker-build-push

Docker イメージをビルドして ACR にプッシュします。

azure-deploy

コンテナイメージを Azure サービスにデプロイします。

シークレット管理

環境変数の暗号化

環境変数は dotenvx を使用して暗号化されます。暗号化された値は encrypted: プレフィックス付きの Base64 エンコード形式で .env.vault ファイルに保存されます。

暗号化・復号化コマンドの使用方法

infra env encrypt/decryptコマンドを使用(推奨)

infra env encrypt/decryptコマンドを使用すると、環境変数キー名を指定する必要がなく、GX_SHARED_PRIVATE_KEYを常に使用します:

# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# 暗号化(元のファイルに上書き)
infra env encrypt .env.dev
infra env encrypt .env.prod

# 復号化(元のファイルに上書き)
infra env decrypt .env.dev
infra env decrypt .env.prod

# 別ファイルに出力
infra env encrypt .env.dev --output .env.vault
infra env decrypt .env.vault --output .env.dev

特徴:

  • 既に暗号化済みのファイルの場合は自動的にスキップ
  • 環境変数キー名の指定が不要(GX_SHARED_PRIVATE_KEYを常に使用)
  • dotenvx 互換フォーマットで暗号化・復号化
dotenvx コマンドを直接使用

環境ごとに異なる環境変数名を使用して暗号化・復号化できます:

# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# 暗号化(環境ごとに異なる環境変数名を使用)
DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.dev
DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.prod

復号化コマンド:

# 復号化
DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.dev
DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.prod

package.json にスクリプトを追加する例:

{
"scripts": {
"encrypt:dev": "DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.dev",
"decrypt:dev": "DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.dev",
"encrypt:prod": "DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx encrypt -f .env.prod",
"decrypt:prod": "DOTENV_PRIVATE_KEY_PROD=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.prod"
}
}

または、infra envコマンドを使用する場合:

{
"scripts": {
"encrypt:dev": "infra env encrypt .env.dev",
"decrypt:dev": "infra env decrypt .env.dev",
"encrypt:prod": "infra env encrypt .env.prod",
"decrypt:prod": "infra env decrypt .env.prod"
}
}

暗号化形式:

  • 暗号化された値は encrypted: プレフィックスが付きます
  • Base64 エンコードされた暗号化データが続きます
  • 復号化には GX_SHARED_PRIVATE_KEY(16 進数形式の秘密鍵)が必要です

注意:

  • 暗号化された環境変数ファイルは、GX_SHARED_PRIVATE_KEY が GitHub シークレットに正しく設定されている必要があります
  • 環境ごとに異なる DOTENV_PRIVATE_KEY_* 環境変数名を使用できますが、値はすべて同じ GX_SHARED_PRIVATE_KEY を使用します

GitHub シークレット

環境ごとに必要なシークレット:

  1. AZURE_CLIENT_ID: Azure AD アプリケーションのクライアント ID

    • OIDC 認証に使用
    • 適切な Azure RBAC ロールが必要
  2. AZURE_TENANT_ID: Azure AD テナント ID

  3. AZURE_SUBSCRIPTION_ID: Azure サブスクリプション ID

  4. GX_SHARED_PRIVATE_KEY: 環境変数復号化用の共有秘密鍵

    • 16 進数形式の秘密鍵
    • 環境変数の復号化に使用
    • 環境ごとに同じキーを使用するか、異なるキーを使用できます

Terraform 統合

CI/CD システムは Terraform と並行して動作するように設計されています:

  • Terraform が管理: インフラストラクチャ(リソースグループ、ネットワーク、ベースリソース)
  • CI/CD が管理: アプリケーションデプロイ(イメージ、環境変数)

競合の防止

Terraform リソースに ignore_changes を追加:

# App Service
resource "azurerm_linux_web_app" "app" {
# ...

lifecycle {
ignore_changes = [
app_settings,
site_config[0].application_stack[0].docker_image_tag,
]
}
}

# Container App
resource "azurerm_container_app" "app" {
# ...

lifecycle {
ignore_changes = [
template[0].container[0].env,
template[0].container[0].image,
secret,
]
}
}

ワークフローの実行

手動実行(推奨)

GitHub Actions UI から手動でワークフローを実行します:

デプロイワークフロー

  1. リポジトリの Actions タブに移動
  2. Infra: Deploy / デプロイ (DEV) または Infra: Deploy / デプロイ (PRD) ワークフローを選択
  3. Run workflow をクリック
  4. パラメータを選択:
    • Dry-run モード: チェックを入れると変更内容の確認のみ(実行しない)、チェックを外すと実際にデプロイ
    • サービス: 空欄(全サービス)または frontend,backend など

環境変数更新ワークフロー

  1. リポジトリの Actions タブに移動
  2. Infra: EnvVar Apply / 環境変数更新 (DEV) または Infra: EnvVar Apply / 環境変数更新 (PRD) ワークフローを選択
  3. Run workflow をクリック
  4. パラメータを選択:
    • Dry-run モード: チェックを入れると変更内容の確認のみ(実行しない)、チェックを外すと実際に環境変数を適用
    • サービス: 空欄(全サービス)または frontend,backend など

act でのテスト

act を使用してワークフローをローカルでテストできます:

# Dry-runモードでテスト(開発環境)
act workflow_dispatch \
-W .github/workflows/infra-deploy-dev.yml \
--input dry_run=true

# デプロイモードでテスト(開発環境)
act workflow_dispatch \
-W .github/workflows/infra-deploy-dev.yml \
--input dry_run=false \
--input services=frontend

# 環境変数更新のDry-runモードでテスト(開発環境)
act workflow_dispatch \
-W .github/workflows/infra-env-apply-dev.yml \
--input dry_run=true

注意: OIDC 認証はローカルでは動作しません。

トラブルシューティング

設定ファイルの検証

📍 実行場所: このコマンドは アプリケーションリポジトリ内infra.config.yml がある場所)で実行します。

infra.config.yml を変更した後は、必ず検証を実行してください:

# アプリケーションリポジトリのルートで実行(infra.config.ymlがある場所)
cd /path/to/your-app-repo

# 設定ファイルを検証
infra config validate

# 特定のファイルを検証
infra config validate -f infra.config.yml

# JSON形式で出力(CI/CDスクリプトでの利用)
infra config validate --json

検証内容:

  • スキーマバリデーション: JSON スキーマ(schemas/infra.config.schema.json)に準拠しているか
  • 無効なフィールドの検出: スキーマで定義されていないフィールドが存在するか
  • 必須フィールドの確認: 必須フィールドがすべて指定されているか
  • dotenv_pathファイルの存在確認: 各サービス設定のdotenv_pathに指定されたファイルが存在するか

検証エラーの例:

# 無効なフィールドが検出された場合
❌ 設定ファイルに 2 個のエラーが見つかりました

エラー:
• /dev/frontend: 無効なフィールド "invalid_field" が指定されています。このフィールドはスキーマで定義されていません。
• /dev/frontend/registry: 無効なフィールド "invalid_registry_field" が指定されています。このフィールドはスキーマで定義されていません。

# dotenv_pathのファイルが見つからない場合
❌ 設定ファイルに 1 個のエラーが見つかりました

エラー:
• dev.frontend.dotenv_path: dotenv_pathに指定されたファイルが見つかりません: .env.vault (解決後: /path/to/.env.vault)

詳細は CLI コマンドリファレンス - infra config validate を参照してください。

よくある問題

1. スキーマ検証失敗

infra.config.yml がスキーマに一致していることを確認:

  • 必須フィールドが存在する
  • UUID が有効
  • ターゲット固有のフィールドがターゲットタイプと一致
  • 無効なフィールドが存在しない(infra config validate で確認)

2. 環境変数復号化失敗

  • GX_SHARED_PRIVATE_KEY シークレットが正しく設定されていることを確認
  • 暗号化された .env.{環境名} ファイルがコミットされていることを確認
  • 秘密鍵の形式が 16 進数であることを確認
  • 暗号化に使用した公開鍵と復号化に使用する秘密鍵がペアであることを確認

復号化テスト:

ローカルで復号化をテストして、鍵が正しく設定されているか確認できます:

# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"

# infra env decryptコマンドを使用(推奨)
infra env decrypt .env.dev

# または dotenvxコマンドを直接使用
DOTENV_PRIVATE_KEY_DEV=$GX_SHARED_PRIVATE_KEY dotenvx decrypt -f .env.dev

# または package.json のスクリプトを使用
npm run decrypt:dev

復号化が成功すれば、鍵の設定は正しいです。

3. Azure 認証失敗

  • OIDC シークレットが正しいことを確認
  • Azure AD アプリケーションに適切な権限があることを確認
  • サブスクリプション ID が一致していることを確認

4. イメージビルド失敗

  • Dockerfile パスが正しいことを確認
  • ビルドコンテキストに必要なファイルが含まれていることを確認
  • ビルド引数が有効であることを確認

デバッグモード

GitHub Actions でデバッグログを有効化:

  1. リポジトリの Settings → Secrets and variables → Actions に移動
  2. シークレットを追加:ACTIONS_STEP_DEBUG = true

完全な例についてはリポジトリの examples/product-repo/ ディレクトリを参照してください。

移行ガイド

既存のアプリケーションを移行するには:

  1. 現在のインフラストラクチャに基づいて infra.config.yml を作成
  2. dotenvx で環境変数を暗号化
  3. GitHub シークレットを設定
  4. CI/CD ワークフローを追加
  5. プルリクエストでテスト(プランモード)
  6. dev 環境にデプロイ
  7. 他の環境に段階的にロールアウト

サポート

問題や質問がある場合:

  • GitHub Issues を確認
  • インフラストラクチャチームに連絡