C.W.K.
Stream
Lesson 12 of 12 · published

When CI/CD Is Overkill

~10 min · judgment, scope, yagni

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Not every project needs a pipeline

CI/CD has a culture of being mandatory — every README has a green badge, every tutorial assumes Actions. The truth is more nuanced. Some projects are objectively better off without it.

Cases where CI is genuine overhead

  • One-shot scripts. A 50-line bash script that runs once and produces a CSV. The CI setup will outlive the script.
  • Personal config dotfiles. The 'tests' would just be 'this still loads in zsh' — your shell tells you that immediately.
  • Working notes / scratch repos. If the audience is one person, the feedback loop is already save and re-run.
  • Throwaway prototypes. If the code's life expectancy is one week, writing CI for it is yak shaving.
  • Untestable codebases (until you make them testable). CI without tests is theater. Get to one running test first, then add CI.

Signs the project graduated and now needs CI

  • More than one person commits.
  • You've already broken main once and it cost real time to find out.
  • The code runs somewhere other than your laptop (a server, a colleague's machine, a customer's environment).
  • You wrote 'I'll just remember to run the tests before pushing' and then forgot.

The principle: add CI the moment the cost of forgetting exceeds the cost of the YAML, and not before. Pippa runs CI on her own codebase. She does not run CI on a one-line bash alias.

Code

Smallest possible 'I'm graduating to CI' workflow·yaml
# Three lines worth of YAML, but it's enough to start.
name: ci
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./run-tests.sh

External links

Exercise

Look at one repo you own that has no CI. Honestly: does it need CI right now? Write a one-paragraph defense for whichever side. If it does need CI, the rest of this quest is for that repo.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.