deployment

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

  • Docker networks replaced links, and links still work

    Container linking is legacy as of 1.9 and still functions, so compose files written last year keep working and nobody is forced to learn the replacement. The replacement…

  • rsync over one persistent SSH connection

    A deploy that runs rsync three times and then a handful of remote commands opens a new SSH connection each time, and each one pays the full handshake…

  • nginx reload is graceful; restart drops connections

    reload sends the master process a signal: it re-reads the configuration, starts new workers, and lets the old ones finish the requests they are serving. restart stops everything…

  • Remove all stopped Docker containers

  • An alias is what makes a reindex atomic

    Reindexing into a new index leaves two: the old one still serving and the new one ready. Pointing the application at the new one by editing configuration means…

  • Composer 1.0 platform config pins the PHP it resolves against

    Composer resolves dependencies against the PHP running it, so a developer on 7.0 and a server on 5.6 get different — and both correct — lock files. The…

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

  • try_files with a named location for the fallback

    The usual front-controller line repeats the PHP handler configuration, because the fallback has to be a URI and the PHP location has its own fastcgi_pass block. A named…