ci-cd

  • The service we merged back

    Two services extracted in 2021, a team of four maintaining four pipelines, and forty-one of forty-four releases touching both.

  • Reusable workflows, and the inputs that became an API

    A reusable workflow shared across four repositories, and the eleventh input added because one repository was different. Every input is a branch in the workflow and eleven of…

  • The migration Rector wrote and we rewrote

    An automated refactor across 412 files, a diff of 8,000 lines, and three wrong hunks in it. The review nobody could actually do.

  • Artifact actions v4, and the append that no longer works

    A workflow uploading to the same artifact name from four matrix jobs, which had merged them and now fails on the second. Artifacts are immutable in v4, which…

  • The dependency we vendored

    A 200-line package with 41 transitive dependencies, doing one thing, and an advisory in something four levels down that we had never heard of.

  • terraform test, and the module that had no assertions

    A testing framework in 1.6, usable in 1.7, and a module that had been verified by applying it and looking. command = plan asserts against the plan without…

  • Reproducing a build from six months ago

    A security question about a release from July, and no way to rebuild it. The same commit produces a different image, and neither of them is wrong.

  • Caching by lockfile hash, and the key that never matched

    A cache step with a hit rate of zero for four months, because the key included something that changed on every run. A cache that never hits fails…

  • Concurrency groups, and the deploy queued behind itself

    Three merges in ten minutes produced three deploys, running concurrently, and the one that finished last was the oldest commit. Two settings, two opposite answers: a superseded CI…

  • A Node script in a PHP repository, and where it lives

    A build script written in JavaScript because it processes the asset manifest, in a repository where everything else is PHP. The Makefile is the interface and the language…