要件
背景
env-sync の Vercel provider は環境変数の送信先環境として production / preview / development の 3 種のみ対応しており、Vercel の Custom Environment(例: staging)を environments に指定するとエラーになる。Custom Environment にも変数を同期できるようにする。
実装方針
- 対象ファイル: internal/provider/vercel/vercel.go(および必要に応じて config / i18n)
- entriesToVercelItems の validTargets バリデーションを見直し、production/preview/development 以外の値を「Custom Environment slug」として許容する。
- Vercel REST API では Custom Environment は target 配列ではなく customEnvironmentIds(env_* 形式の ID)で指定する必要がある。
- GET /v9/projects/{idOrName}/custom-environments で slug → ID の対応を解決する(teamId 対応込み)。
- item 構造体に customEnvironmentIds(json: "customEnvironmentIds", omitempty)を追加し、標準環境は従来どおり target に、Custom Environment は customEnvironmentIds に振り分けて送信本文へ含める。
- 指定された Custom Environment slug がプロジェクトに存在しない場合は分かりやすいエラーメッセージ(i18n 対応、en/ja 両カタログ)を返す。
- 標準環境(production/preview/development)と Custom Environment を同一エントリの environments に混在指定できること。
- 一覧表示(environments=... の表示)でも Custom Environment 名が確認できるようにする。
- README.md / README.ja.md および env-sync.yaml のコメントに Custom Environment 対応を追記する。
備考
- ターゲット解決は provider.Options / config.ResolveVercelTargets 経由(Token/ProjectID/TeamID)。既存の複数プロジェクト・vercel_project フィルタと整合させること。
- Custom Environment ID 解決は API 呼び出しを追加するため、既存の vercelFetchExistingKeys と同様に httptest でモックできる形にする。
完了条件
完了条件
- env-sync.yaml の environments に Custom Environment slug(例: [staging])を指定した変数が、エラーにならず Vercel の該当 Custom Environment に同期される。
- 標準環境(production/preview/development)のみ指定した既存挙動が変わらない(後方互換)。
- production/preview/development と Custom Environment を混在指定(例: [production, staging])した場合、標準環境は target、Custom Environment は customEnvironmentIds で正しく送信される。
- 存在しない Custom Environment slug を指定した場合、en/ja それぞれで分かりやすいエラーメッセージが出る。
- Custom Environment slug 解決の単体テスト、および混在指定の送信本文を検証するテストが追加され、go test ./... が通る。
- README.md / README.ja.md / env-sync.yaml のコメントに Custom Environment の指定方法が記載されている。
確認手順
- go build ./... && go test ./... が成功すること。
- internal/provider/vercel/vercel_test.go に httptest でモックした Custom Environment 解決・送信のテストが含まれ、パスすること。
- 手元検証(可能なら): Custom Environment (staging) を持つ Vercel プロジェクトに対し
- env-sync.yaml に MY_KEY: { secret: true, environments: [staging] } を定義
- env-sync --env .env.production --dry-run で environments=[staging] が表示されること
- dry-run を外して実行し、Vercel ダッシュボードの staging 環境に MY_KEY が登録されることを確認
- 混在指定 [production, staging] でも production と staging 双方に登録されることを確認。
要件
背景
env-sync の Vercel provider は環境変数の送信先環境として production / preview / development の 3 種のみ対応しており、Vercel の Custom Environment(例: staging)を environments に指定するとエラーになる。Custom Environment にも変数を同期できるようにする。
実装方針
備考
完了条件
完了条件
確認手順