3.0 arrived in September and can produce one file containing the application, its dependencies and the runtime — which changes what deployment means compared with a PHP release…
A twelve-minute pipeline that reports a lint failure at minute eleven trains people to push and switch tasks, which is the opposite of what CI is for. Ordering…
Caching the installed directories means a stale cache silently ships the wrong dependency versions; caching the package manager’s download cache does not. Keying on the lock files means…
The old builder executes every instruction in order on one goroutine. BuildKit builds a graph, runs independent branches concurrently, and skips stages nothing depends on. The concurrency is…
composer.json describes what is acceptable; composer.lock describes what was tested. Deploys that run update rather than install are resolving fresh on every release and shipping something no one…
Docker caches per instruction, and the cache is invalidated by the first changed file. Copying the whole source before installing dependencies means every code change reinstalls everything. The…
The header is one line. The work is finding out what it will break — which means report-only for weeks, and reading violations that are mostly not your…
A pipeline that downloads the same eighty packages on every push is spending most of its allowance on the network, and the fix is four lines. The named…