setup-secret コマンドリファレンス
infra setup-secret コマンドは、GitHub Actions ワークフローから secrets のリストを CLI で自動抽出し、config.toml や.env ファイル、Terraform output から取得した環境変数とマッチングして、GitHub repository の secrets として登録するコマンドです。
使い方
infra setup-secret <tenant-name> <environment> [options]
引数
<tenant-name>: テナント名(例:pj-japan)<environment>: 環境名(devまたはprd)
オプション
--component <component>: コンポーネントを指定(frontendまたはbackend)- 指定しない場合は対話式で選択
-y, --yes: 確認プロンプトをスキップ--skip-existing: 既に設定されている secrets をスキップ(上書きしない)--exclude-generated: config.toml から自動生成される環境変数(APP_URL_*,AZURE_RESOURCE_GROUP_*,CONTAINER_APP_NAME_*)を除外-h, --help: ヘルプを表示
動作フロー
Step 1: GitHub Actions ワークフローを解析
指定された repository の .github/workflows/ ディレクトリ内の YAML ファイルをすべて取得し、secrets.XXXX の形式で参照されている secrets を抽出します。
Step 2: 環境変数を収集(ホワイトリストベース)
ホワイトリスト方式を採用しています。core/src/services/security/variable_rules.ts に定義された環境変数のみが収集・設定されます。
以下のソースから環境変数を収集します(優先順位はルールごとに定義): Shared Terraform output(Azure 認証情報、ACR 情報)、config.toml(ACR subscription、ACR name、Image name、Repository、自動生成される環境変数)、.env ファイル(アプリケーション固有の環境変数、API keys)、Tenant Terraform output(デプロイ後に生成される情報)
ホワイトリストに登録されていない環境変数は、収集・設定されません。
Step 3: マッピング
GitHub Actions で必要な secrets と、収集した環境変数を名前でマッチングします。
マッチ条件: 環境変数名と secret 名が完全一致、ホワイトリストに登録されている環境変数のみマッチング対象
マッチ結果: Matched(GitHub repository に自動登録可能)、Unmatched(ホワイトリストにあるが値が見つからない → 手動で設定が必要)、Not in Whitelist(ホワイトリストに登録されていない → variable_rules.ts にルール追加が必要)
上書きルール: 各環境変数のルールで allowOverwrite が定義されており、既存の secrets を上書きするかどうかを制御します(allowOverwrite: true は既存の値を上書き可能、allowOverwrite: false は既存の値は保護され、上書きされません)
Step 4: 確認
マッチした secrets の一覧を表示し、GitHub repository に登録するか確認します(センシティブな値はマスキングして表示、各変数のソースを表示)
Step 5: Secrets を設定
GitHub CLI を使用して、マッチした secrets を repository に登録します(gh secret set <SECRET_NAME> --repo <repository>)
前提条件
- GitHub CLI のインストール:
brew install gh(macOS)、その他のOSは公式サイトを参照 - GitHub CLI の認証:
gh auth login --scopes "repo,workflow,admin:org"(必要な権限:repo、workflow、admin:org) - config.toml の設定: テナントの config.toml に
repository、acr_subscription、acr_name、image_nameが設定されている必要があります
使用例
基本的な使い方
infra setup-secret pj-japan dev # frontendのsecretsをセットアップ(対話式で選択)
infra setup-secret pj-japan dev --component frontend # componentを指定
infra setup-secret pj-japan dev --component backend -y # 確認をスキップ
実行例
GitHub Actionsワークフローを解析 → 環境変数を収集 → マッピング → 確認 → Secrets を設定
対応する GitHub Actions ワークフローの例
examples/github_actions/ に配置されているワークフローで定義されている環境変数は、このコマンドで自動的に設定できるように設計されています。
標準的なワークフローで必要な secrets
| Secret 名 | 説明 | ソース |
|---|---|---|
AZURE_CLIENT_ID | Service Principal ID | Shared Terraform output |
AZURE_CLIENT_SECRET | Service Principal Secret | Shared Terraform output |
AZURE_TENANT_ID | Azure Tenant ID | Shared Terraform output |
AZURE_SUBSCRIPTION_ID | Azure Subscription ID | Shared Terraform output / config.toml |
ACR_NAME | Azure Container Registry 名 | Shared Terraform output / config.toml |
ACR_LOGIN_SERVER | ACR ログインサーバー URL | Shared Terraform output |
ACR_USERNAME | ACR 管理者ユーザー名 | Shared Terraform output |
ACR_PASSWORD | ACR 管理者パスワード | Shared Terraform output |
アプリケーション固有の secrets
.env ファイルに定義されている環境変数も、GitHub Actions で参照されている場合は自動的に設定されます(例: AUTH0_CLIENT_SECRET, ANTHROPIC_API_KEY, OPENAI_API_KEY)
ホワイトリストへの環境変数の追加
新しい環境変数をホワイトリストに追加するには、core/src/services/security/variable_rules.ts の VARIABLE_RULES 配列にルールを追加します。
ルールの定義: name(環境変数名または正規表現)、sources(優先順位順)、allowOverwrite(既存の値を上書き可能か)、sensitive(センシティブな値か)
ソースの優先順位: sources 配列の最初の要素が最優先されます(例: ["config_toml", "env_file", "shared_terraform"])
上書きルール: allowOverwrite: true(既存の secrets を上書き可能)、allowOverwrite: false(既存の secrets を保護)
マッチしない secrets の手動設定
マッチしない secrets は、以下の URL から手動で設定してください:
https://github.com/<organization>/<repository>/settings/secrets/actions
コマンド実行時に該当する URL が表示されます。
トラブルシューティング
- GitHub CLI の認証エラー:
gh auth login --scopes "repo,workflow,admin:org"を実行 - Repository not found: config.toml に
repositoryを追加 - ワークフローファイルが見つからない:
.github/workflows/ディレクトリが存在しない、またはワークフローファイルでsecrets.XXXXを使用していない(GitHub Actions を使用していない場合は無視して OK) - 権限エラー: リポジトリへの書き込み権限を確認、Organization secrets の場合は Organization admin の権限が必要
- ホワイトリストに登録されていない:
core/src/services/security/variable_rules.tsにルールを追加し、yarn buildを実行してから再度コマンドを実行
関連コマンド
infra env-get: Container App の環境変数を取得infra env-set: Container App の環境変数を設定
参考資料
- GitHub CLI Documentation
- GitHub Actions Secrets
- GitHub Actions ワークフロー設計 - GitHub Actions の設定方法