sync-env workflow + auto-roll for self-serve secrets (#2) #1

Merged
plat merged 6 commits from feat/self-serve-secrets-sync into main 2026-06-29 21:08:28 +00:00
Owner

The downstream half of self-serve secrets (#2) — companion to plat/mcp feat/self-serve-secrets.

  • .forgejo/workflows/sync-env.yml: reads the app's APP_ENV Forgejo secret and runs the mcp secrets-cli to seal it into the app's runtime env. Derives the platform's current mcp version from gitops at runtime (so it never drifts), and sets DOCKER_HOST for the dind registry pull.
  • charts/app: a userEnvRev pod-template annotation (web + worker) so the pod auto-rolls when secrets change; userEnvRev added to values.yaml.

The app contract is otherwise unchanged (the secret rides the existing extraEnvFrom). Validated end-to-end on a germinated platform + a grandchild (see the mcp PR).

Two bugs were caught and fixed during live validation: a stale MCP_IMAGE pin (now derived from gitops) and a missing DOCKER_HOST — exactly the "trivial issues" this validation was meant to surface.

The downstream half of **self-serve secrets (#2)** — companion to `plat/mcp` `feat/self-serve-secrets`. - `.forgejo/workflows/sync-env.yml`: reads the app's `APP_ENV` Forgejo secret and runs the mcp `secrets-cli` to seal it into the app's runtime env. **Derives the platform's current mcp version from gitops at runtime** (so it never drifts), and sets `DOCKER_HOST` for the dind registry pull. - `charts/app`: a `userEnvRev` pod-template annotation (web + worker) so the pod **auto-rolls** when secrets change; `userEnvRev` added to `values.yaml`. The app contract is otherwise unchanged (the secret rides the existing `extraEnvFrom`). Validated end-to-end on a germinated platform + a grandchild (see the mcp PR). > Two bugs were caught and fixed during live validation: a stale `MCP_IMAGE` pin (now derived from gitops) and a missing `DOCKER_HOST` — exactly the "trivial issues" this validation was meant to surface.
sync-env: derive mcp version from gitops + set DOCKER_HOST (robust, no pin drift)
All checks were successful
check / check (push) Successful in 1m34s
check / check (pull_request) Successful in 1m33s
preview / preview (pull_request) Successful in 6s
8d45473cc4
sync-env: hint when secrets are mis-named instead of in APP_ENV
All checks were successful
preview / preview (pull_request) Successful in 7s
check / check (push) Successful in 1m33s
check / check (pull_request) Successful in 1m32s
3c1a802f95
preview: derive mcp version from gitops (fix cold-start preview on fresh germinations)
All checks were successful
preview / preview (pull_request) Successful in 7s
check / check (push) Successful in 1m34s
check / check (pull_request) Successful in 1m34s
6bdf3a3484
sync-env: enumerate secrets via toJSON(secrets) — individually-named secrets just work
All checks were successful
check / check (pull_request) Successful in 1m46s
check / check (push) Successful in 1m49s
preview / preview (pull_request) Successful in 6s
ddc11c0260
_app-template: pass PLAT_DEV variable through sync-env to secrets-cli
Some checks failed
check / check (pull_request) Successful in 1m29s
check / check (push) Successful in 1m32s
preview / preview (pull_request) Failing after 14s
80923bd803
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
plat merged commit 10010fda30 into main 2026-06-29 21:08:28 +00:00
plat deleted branch feat/self-serve-secrets-sync 2026-06-29 21:08:28 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-platform/app-template!1
No description provided.