feat: ./infra front door and daily-commands runbook (streamlining 1/2) #126

Merged
jfraeys merged 1 commit from jfraeys/feat/infra-front-door into main 2026-10-13 15:42:19 -04:00
Owner

First of two PRs to make the operator scripts easier to use and follow. Nothing moves in this one, so CI, the runbooks and existing habits keep working.

  • ./infra: a thin dispatcher. status (checkout, prod, promotion PR, last staging run, CI queue, open PRs, and a next step), plan, deploy (full promotion, or Ansible-only with --tags/--limit), rotate, unlock, secrets keys|sync|expiry. Each command prints the script it runs; INFRA_PRINT_ONLY=1 prints without running.
  • Deliberately no 'secrets get': it would make printing a vault value a one-liner (scripts/CLAUDE.md rule).
  • status says what it cannot see: prod = main only means the approval was merged, not that the apply or deploys ran.
  • docs/runbooks/daily-commands.md: the release flow step by step with what you should see, secrets tasks, and what to do when stuck. deployment.md and scripts/CLAUDE.md point at it.
  • scripts/tests/test-infra-cli.sh: 12 dispatch cases plus a check that every target script exists; wired into lint. status ran against the real Forgejo read-only.

Part 2 (separate PR): group scripts/ into folders by purpose (ops, secrets, ci, oneoff, tools), leaving shims at the old paths so references migrate without breaking, then remove the shims.

🤖 Generated with Claude Code

First of two PRs to make the operator scripts easier to use and follow. Nothing moves in this one, so CI, the runbooks and existing habits keep working. - ./infra: a thin dispatcher. status (checkout, prod, promotion PR, last staging run, CI queue, open PRs, and a next step), plan, deploy (full promotion, or Ansible-only with --tags/--limit), rotate, unlock, secrets keys|sync|expiry. Each command prints the script it runs; INFRA_PRINT_ONLY=1 prints without running. - Deliberately no 'secrets get': it would make printing a vault value a one-liner (scripts/CLAUDE.md rule). - status says what it cannot see: prod = main only means the approval was merged, not that the apply or deploys ran. - docs/runbooks/daily-commands.md: the release flow step by step with what you should see, secrets tasks, and what to do when stuck. deployment.md and scripts/CLAUDE.md point at it. - scripts/tests/test-infra-cli.sh: 12 dispatch cases plus a check that every target script exists; wired into lint. status ran against the real Forgejo read-only. Part 2 (separate PR): group scripts/ into folders by purpose (ops, secrets, ci, oneoff, tools), leaving shims at the old paths so references migrate without breaking, then remove the shims. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: ./infra front door (status, plan, deploy, rotate, unlock, secrets) and a daily-commands runbook
All checks were successful
Lint / lint (pull_request) Successful in 1m27s
Secret scan / scan (pull_request) Successful in 12s
b0bf8f4522
A thin dispatcher over the existing scripts (no files move); every command prints the script it runs. status reads the
checkout, prod, the promotion PR, the staging run and the CI queue and says what to do next.

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!126
No description provided.