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.ymlにenvironment: production-pages-adminを追加 (2026-04-29)。deploy-public-prod.ymlにenvironment: production-pages-lpを追加 (2026-04-29、reusable workflow input 経由)。- 上表の per-target 6 環境への分割は段階移行中。今は 次の 3 environment を作れば全 prod workflow が gate される:
production(共通、4 workflow が利用)production-pages-admin(admin portal)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 branches に
mainのみ許可 - 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:
→ 2026-04-29 でdeploy-admin-prod.yml: environment: 未設定production-pages-admin追加済→ 2026-04-29 でdeploy-public-prod.yml: environment: 未設定production-pages-lp追加済 (reusable workflow input 経由)
マニュアルセットアップ手順 (実行時)
最小構成 (現状の workflow 群を全 gate する 3 environment)
- https://github.com/high-field/parky/settings/environments を開く
- 「New environment」を 3 回押して以下を作成:
production(4 workflow 共通: api / portal-owner / portal-marketing / public-home)production-pages-admin(admin portal 専用)production-pages-lp(public LP 専用)
- 各 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
- Required reviewers: 「Required reviewers」 ON → 自分 (
- 動作確認:
git push origin mainで prod workflow が走るが、environment指定の job は 「Review pending deployments」状態で停止 することを確認- GitHub UI から「Approve」を押して deployment が再開することを確認
将来移行 (per-target に完全分割するとき)
production-api/production-pages-owner/production-pages-marketing/production-pages-homeを追加作成- 既存 4 workflow の
environment: productionを専用名に書き換え (PR ベース) - 不要になった共通
productionを削除
関連
- Sprint 0+1 push 監査タスク O-08 (環境分離 + approval gate)
feedback_no_prod_migration_yet.md— prod は明示許可ベースで運用reference_infrastructure.md— 各環境のホスティング詳細