Deployment Katas
Four focused, repeatable drills. Each one produces a real artifact for your capstone, not a throwaway. Complete each kata multiple times until the setup feels automatic.
Kata 1: Author the Capstone's GitHub Actions YAML
Time limit: 20 minutes
Goal: Produce a validating .github/workflows/deploy.yml from a blank file in under 20 minutes.
Setup: Start from an empty workflow file. Close all tabs. No copy-paste from prior attempts.
Requirements:
- triggers:
pushtomain,pull_requesttomain permissions: contents: read; id-token: write- two jobs:
build-test,deploy deploygated byneeds: build-testandif: github.ref == 'refs/heads/main'- uses an
environment:with at least one protection rule actions/checkout@v4, language setup action with cache, one test command, one deploy command
Repeat until: You can produce a valid workflow without referring to docs, and gh workflow view deploy shows no syntax errors.
Kata 2: Produce the Capstone's Terraform Root + One Module
Time limit: 30 minutes
Goal: Scaffold a working Terraform root calling one local module from a blank terraform/ folder.
Setup: Empty terraform/ directory. The remote backend bucket already exists (you created it in Lab 1).
Requirements:
terraform/main.tfwithterraform { required_version, required_providers, backend }and one provider blockterraform/variables.tfwith at leastproject_id,region,envterraform/modules/<something>/withmain.tf,variables.tf,outputs.tf- a module call from the root using at least one input variable and one output
terraform init && terraform planboth succeed
Repeat until: You can produce the scaffold in 30 minutes without referring to prior code.
Kata 3: Write a Rollback Runbook from Blank
Time limit: 15 minutes
Goal: Produce a one-page RUNBOOK.md from memory.
Setup: Blank file. No reference to the concept page or an existing runbook.
Requirements (all five sections, one page total):
- Owner and On-call with a contact channel
- Pre-Deploy checklist (4-6 items)
- Deploy steps (3 max) with expected duration
- Verify with the three smoke URLs and what "ok" looks like
- Rollback with triggers, the command, expected duration, and the follow-up step
Repeat until: You can produce a usable one-page runbook in 15 minutes, and a peer can deploy something similar to your capstone using only the runbook.
Kata 4: Author a Release-Notes-From-Commits Spec
Time limit: 20 minutes
Goal: Write a small spec (and the stub script it describes) for generating a release note from git log.
Setup: Blank scripts/release-notes.sh and library/raw/release-notes-spec.md.
The spec answers:
- Input: tag or commit range (e.g.,
$(git describe --tags --abbrev=0)..HEAD) - Grouping rule: by conventional-commit type, or by the first word of the commit message
- Output shape: a stub with headers
### Changed,### Why(blank for author),### Risk(blank for author),### Verified(blank) - Placement: prepended to
CHANGELOG.mdunder a new## vX.Y.Z -- YYYY-MM-DDheader - Non-goal: automation must not claim to produce the final note. "Why" and "Risk" are authored.
Ship at least a minimal scripts/release-notes.sh that reads the commit range, writes a stub to CHANGELOG.md, and exits with a reminder that "Why" and "Risk" are blank.
Repeat until: The stub generator runs in CI on push to main, the output opens a PR with the stub, and you fill the PR within an hour.
Completion Standard
- Can complete each kata within time limit
- Each kata's artifact is committed to the capstone repo at least once
- No kata requires referring back to the concept pages mid-attempt
- A peer can execute Kata 1 and Kata 3's outputs against their own project