GitHub Environments — production approval gates

O-08 prep (2026-04-28 Sprint 0+1 push) — このドキュメントはマニュアルセットアップ手順。
Repo Settings → Environments で 手動 に設定する必要がある。Terraform 管理外。

目的

prod デプロイは「main にマージしたら無条件で本番が更新される」状態になっている。 GH Environment を噛ませることで:

  • 必須レビュー — 1 人 approve しないとデプロイが走らない (single-dev startup でも自分自身の押し下げを 1 ステップ挟む)
  • Auto-pause window (任意) — 深夜帯のデプロイをブロック
  • Secret scoping — 本番 secrets を該当 Environment にだけバインド (現状は repo secret + 1Password 経由でも可)

必要な Environments (manual setup)

Repo Settings → Environments → "New environment" で以下を作成する。

Environment 名 対象 参照する workflow
production-api parky-api Worker .github/workflows/deploy-api-prod.yml
production-pages-admin admin.parky.co.jp (CF Pages) .github/workflows/deploy-admin-prod.yml
production-pages-owner owner.parky.co.jp (CF Pages) .github/workflows/deploy-portal-owner-prod.yml
production-pages-marketing marketing.parky.co.jp (CF Pages) .github/workflows/deploy-portal-marketing-prod.yml
production-pages-home parky.co.jp (Astro home / CF Pages) .github/workflows/deploy-public-home-prod.yml
production-pages-lp parky.co.jp/users/ LP (CF Pages) .github/workflows/deploy-public-prod.yml

現状 (2026-04-29 更新):

  • 4 workflow が共通 environment: production を使用 (deploy-api-prod.yml / deploy-portal-owner-prod.yml / deploy-portal-marketing-prod.yml / deploy-public-home-prod.yml) — Settings → Environments で production を 1 つ作るだけで gate 発動。
  • deploy-admin-prod.ymlenvironment: production-pages-admin を追加 (2026-04-29)。
  • deploy-public-prod.ymlenvironment: production-pages-lp を追加 (2026-04-29、reusable workflow input 経由)。
  • 上表の per-target 6 環境への分割は段階移行中。今は 次の 3 environment を作れば全 prod workflow が gate される:
    1. production (共通、4 workflow が利用)
    2. production-pages-admin (admin portal)
    3. production-pages-lp (public LP)

各 Environment の設定値

Required reviewers

  • Reviewers: 1
  • Required reviewers: 1
  • 単独開発体制 (dev@parky.co.jp) のため自分自身を reviewer に登録 → 「approve」ボタンを 1 回押すフローで運用
  • 将来体制が増えたら 2 以上 + 別人 review に格上げ

Wait timer (任意)

  • Auto-pause window: 例 00:00 - 06:00 JST のデプロイを抑止したい場合は wait timer 6h などを使う運用も検討
  • デフォルトは 0 (無効)

Deployment branches

  • Selected branchesmain のみ許可
  • prod 用ワークフローは on.push.branches=[main] で発火するが、二重防御として branch 制限を入れる

Environment secrets (任意)

  • 現状は repo secret + 1Password 動的取得で運用 (CLOUDFLARE_API_TOKEN 等)
  • Environment 単位に scope したい場合はここに移す。production-api だけが SUPABASE_SERVICE_ROLE_KEY を持つ等、最小権限化が容易

Workflow 側の対応 (将来作業)

各 prod workflow の environment: 行を、上表の専用 Environment 名に差し替える。

# Before
jobs:
  build-and-deploy:
    environment: production

# After
jobs:
  build-and-deploy:
    environment: production-api  # ← per-target に分割

未対応 workflow:

  • deploy-admin-prod.yml: environment: 未設定 → 2026-04-29 で production-pages-admin 追加済
  • deploy-public-prod.yml: environment: 未設定 → 2026-04-29 で production-pages-lp 追加済 (reusable workflow input 経由)

マニュアルセットアップ手順 (実行時)

最小構成 (現状の workflow 群を全 gate する 3 environment)

  1. https://github.com/high-field/parky/settings/environments を開く
  2. 「New environment」を 3 回押して以下を作成:
    • production (4 workflow 共通: api / portal-owner / portal-marketing / public-home)
    • production-pages-admin (admin portal 専用)
    • production-pages-lp (public LP 専用)
  3. 各 environment で:
    • Required reviewers: 「Required reviewers」 ON → 自分 (Taiga / dev@parky.co.jp) を追加 → reviewers 数を 1
    • Deployment branches: 「Selected branches」を選び main のみ追加
    • Wait timer: 0 (任意で深夜帯抑止したいなら設定)
    • (任意) Environment secrets: 現状は repo secret + 1Password 動的取得で運用中、空でも OK
  4. 動作確認:
    • git push origin main で prod workflow が走るが、environment 指定の job は 「Review pending deployments」状態で停止 することを確認
    • GitHub UI から「Approve」を押して deployment が再開することを確認

将来移行 (per-target に完全分割するとき)

  1. production-api / production-pages-owner / production-pages-marketing / production-pages-home を追加作成
  2. 既存 4 workflow の environment: production を専用名に書き換え (PR ベース)
  3. 不要になった共通 production を削除

関連

  • Sprint 0+1 push 監査タスク O-08 (環境分離 + approval gate)
  • feedback_no_prod_migration_yet.md — prod は明示許可ベースで運用
  • reference_infrastructure.md — 各環境のホスティング詳細
↗ Source markdown (github-environments.md)