ci-cd

  • phpunit.xml groups let CI split the suite

    A suite that takes twenty minutes gets run less often, which is the opposite of what it is for. Groups let the fast tests gate every push and…

  • A deploy that is nothing but a symlink swap

    Copying files into the live directory means the site serves a half-updated tree for the duration — new templates against old classes, for as long as the copy…

  • composer validate belongs in CI

    A composer.json edited by hand and a lock file regenerated on a different machine drift apart quietly, and the first symptom is usually a deploy installing something nobody…

  • A deployment pipeline that runs the tests first

    Deploying by rsync on a Friday afternoon, and what replaced it: lint, test, build, stage, promote — with a rollback that is the same mechanism rather than a…

  • Docker for Mac replaced the virtual machine

    The shared-folder problem that nearly killed this last year is gone. What changes in the compose file, what the new file sharing costs, and where Linux and Mac…

  • The CI box gets its own deploy key, and it is read-only

    Giving CI a copy of a developer’s key, or an account with write access, means a compromised build server can push to the repository — and a build…

  • Certificates that renew themselves

    Free certificates went GA this month. Automating issuance and renewal, the rate limits that catch staging first, and the monitoring that has to outlive the automation.

  • Two images instead of the multi-stage build you cannot have yet

    Building assets inside the runtime image drags Node, the whole node_modules tree and a compiler toolchain into production — several hundred megabytes to produce one bundle. There is…

  • A smoke test is not an integration test

    Both hit a running system, so they get put in the same suite and run at the same time. They answer different questions and should fail at different…

  • A first serious attempt at Docker for local development

    Two days lost to PHP extension mismatches. A container per service, what the shared-folder performance problem costs on a VM, and whether it was worth it.