Skip to main content

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: push to main, pull_request to main
  • permissions: contents: read; id-token: write
  • two jobs: build-test, deploy
  • deploy gated by needs: build-test and if: 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.tf with terraform { required_version, required_providers, backend } and one provider block
  • terraform/variables.tf with at least project_id, region, env
  • terraform/modules/<something>/ with main.tf, variables.tf, outputs.tf
  • a module call from the root using at least one input variable and one output
  • terraform init && terraform plan both 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.md under a new ## vX.Y.Z -- YYYY-MM-DD header
  • 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