A tag is a mutable pointer in somebody else’s repository, and a workflow referencing one runs whatever that pointer names today. This matters most for third-party actions, which…
A matrix of PHP versions against WordPress versions produces a grid, and two cells of it are combinations that were never supported. fail-fast: false is the setting that…
Jobs run on separate machines with nothing shared, so passing a build between them means uploading it and downloading it again. Measuring is the only way to know…
A long-lived CI server accumulates state that the pipeline quietly depends on — a global package, a cached credential, a directory somebody created in 2017. A hosted runner…
The database password was in the repository, then in the image, then in an environment variable readable by anything that could run ps. Where it went next.
Three pushes in ten minutes start three builds, and the first two are testing code that has already been superseded. Grouping on the ref rather than globally is…
Integration tests need a real database, and a hosted runner is an empty machine — which is the problem service containers exist for. The health options are not…
The tests need MySQL and Redis, and CI gives you an empty machine. Service containers, where they differ from compose, and the readiness nothing does for you.