ci-cd

  • Terraform 1.11, and a plan I could finally read

    A plan output that had grown to four hundred lines for a two-resource change, mostly from a provider that reports every computed attribute. The JSON plan has been…

  • A pipeline that deploys on merge, and the four gates before it

    Eight deploys a week performed by a person, an hour after merge, by whoever was free. Continuous deployment needs confidence rather than automation.

  • PHPUnit 12, and a two-hour upgrade

    A third consecutive annual major, each cheaper than the last, which is what doing the first one properly buys. The cost of an annual major is almost entirely…

  • Laravel 12, and a starter kit we did not use

    A major release in February that is deliberately almost nothing, and an upgrade guide that fits on a page.

  • PHPUnit 12, and the tests we deleted instead

    A two-hour upgrade, and a directory of 188 tests excluded from every tool since 2023 and running on every push.

  • A workflow pinned by SHA rather than by tag

    A third-party action referenced by tag, and a tag being a movable pointer in somebody else’s repository. A tag can be repointed at any commit by anybody with…

  • The VPS that had been running since 2019

    A host provisioned in 2019, upgraded in place three times, and a provisioning script that has never been run against an empty machine.

  • A Go binary in the deploy pipeline, and who owns it

    A small compiled tool in a PHP project, and the question that matters more than the language. A second language in a repository is a maintenance decision rather…

  • An on-call rota of three

    A rota of two is not a rota. A third person joined in November, and the gap was everything learned in the shadowing month and never written down.

  • A build secret that was in the image, in a layer, in the history

    A token passed as a build argument, removed in a later layer, and present in the image history for anybody who pulls it. A secret mount is available…