Making builds faster
For Anyone who owns build times, on either side of the platform line
This path crosses the pipeline/platform boundary on purpose, because build time does too. A barrier where dependencies belong is a pipeline problem; a queue with no spare agents is a platform one; and an approval sitting overnight is neither.
It ends with diagnosis rather than starting with it, so that by the time you are reading a build's anatomy you already know what each of the fixable things looks like.
The single most valuable habit here: find out which constraint you actually have before you spend anything on it.
Modules, in order
Keys, depends_on, conditionals, and telling a broken step apart from a failed one.
Generating steps at build time, uploading them, and passing values between steps.
Retries that are worth having, soft failures, and stopping a doomed build early.
Telling a capacity problem apart from a gate, a gate apart from a person, and knowing which one you actually have.