deployment

  • Offsite copies, and the egress bill

    A second copy in a second provider, and a bill that arrived a month later showing the transfer cost more than the storage. Egress pricing makes a naive…

  • The autoload-dev entry that was loading in production

    A factory namespace under autoload-dev, referenced by a seeder, referenced by a console command that shipped. The failure is correct and the timing is the problem: a class…

  • 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…

  • PHP 8.0 reaches end of life, and what that changes

    26 November, and what changes is not the code — it is that no security patch is coming for whatever is found in December. The argument that gets…

  • An environment with a required reviewer on production

    A deploy job that anybody with write access could trigger, on a repository where write access was granted to six people for unrelated reasons. Scoping the secrets to…

  • The unique index we could not add, and the duplicates we had to find first

    A constraint that should have existed since 2016, and 1,240 rows that violate it. Support merging customer records by hand, monthly.

  • A deploy that rolls back on a health check

    A deploy that succeeds because the files copied is a deploy that has verified nothing. Twenty seconds of retrying before giving up, and a rollback that is the…

  • The online DDL that was not online

    ALGORITHM=INPLACE does not mean lock-free, and the operation that needed a table rebuild took a metadata lock at the end anyway. Specifying LOCK=NONE turns an unpleasant surprise into…

  • Healthchecks that check the thing, not the port

    A container health check that opened a TCP connection to 9000 and reported healthy while every request returned a 500. A port check answers “did the process start”,…

  • A licence change, and reading it before reacting

    A tool we use changed to a source-available licence, and the first useful step was working out whether it applies to us at all. The reflex is to…