feat(ci): staging SOPS file with a staging-only age key #64

Merged
jfraeys merged 1 commit from jfraeys/feat/staging-sops into main 2026-10-11 14:34:22 -04:00
Owner

Run 452 passed hardening validation and the Headscale API step, then the services play failed: LLDAP_ADMIN_PASSWORD is required (CI has no vault). Adds secrets/staging.sops.yml (107 production key names, 98 throwaway values, 9 copied non-secret config) encrypted to operator + recovery + a staging-only key; CI decrypts it with STAGING_SOPS_AGE_KEY. Tested: staging key decrypts it, is refused on the production vault, no throwaway equals a production value, setup branch decrypts with only the staging key available. Needs the Forgejo secret STAGING_SOPS_AGE_KEY (sync step) before staging can pass. 🤖 Generated with Claude Code

Run 452 passed hardening validation and the Headscale API step, then the services play failed: `LLDAP_ADMIN_PASSWORD is required` (CI has no vault). Adds secrets/staging.sops.yml (107 production key names, 98 throwaway values, 9 copied non-secret config) encrypted to operator + recovery + a staging-only key; CI decrypts it with STAGING_SOPS_AGE_KEY. Tested: staging key decrypts it, is refused on the production vault, no throwaway equals a production value, setup branch decrypts with only the staging key available. Needs the Forgejo secret STAGING_SOPS_AGE_KEY (sync step) before staging can pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(ci): staging decrypts its own SOPS file with a staging-only age key
All checks were successful
Lint / lint (pull_request) Successful in 1m21s
Secret scan / scan (pull_request) Successful in 12s
cf5f60d82f
Run 452 reached the services play and failed at "LLDAP_ADMIN_PASSWORD is required": CI has no vault.
secrets/staging.sops.yml carries the production key set with throwaway values, encrypted to operator,
recovery and a staging-only key (vault key / Forgejo secret STAGING_SOPS_AGE_KEY). setup decrypts it
in CI; the staging key is refused on the production vault. Generator: scripts/gen-staging-secrets.py.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
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
jfraeys/infra!64
No description provided.