Builds that failed in 0.57 seconds
Build duration is a diagnostic signal
Sub-second failures are almost always configuration, not code.
Three builds in a row failed almost instantly.
That duration is the clue. A real run clones a repository, installs dependencies and builds an image — it takes minutes. Half a second means it died before doing any work at all.
The cause
Script Path. Jenkins looks for Jenkinsfile at the repository root by default. Mine lived one directory down, so Jenkins found nothing and gave up immediately.
I moved the file to the root rather than fight the setting — CI configuration conventionally belongs there anyway.
Takeaway
Read the timing before reading the logs. It tells you roughly where in the lifecycle things broke.