A full analysis on a large codebase takes long enough that nobody runs it before committing, so every finding arrives from CI after the context has been lost.…
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…
A shell pipeline reports the exit code of the last command, so mysqldump | gzip > file succeeds when the dump fails and the gzip writes nothing. pipefail…