> Separate the bits that stay the same, and inject the bits that change.
Basically, treat your build/deployment scripts like you would any other code. Strive to have a single source of truth for any fact that can change etc.
That seems obvious, but in my experience was at first counterintuitive for many people who otherwise had no trouble applying these principles in application code. A lot of modern CI/CD principles boil down to “it’s just code”.