"a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components."
Okay, so what's a build pipeline?
{Code change} / {Release}
↓
Build steps
↓
Package
↓
Asset
↓
"Store"
↓
Deploy?
"Configuration Management"
(Agility)
Version control
Branching models
Mainline merging (the almighty Pull Request)
Releases
(Identifiability)
Versioning, tagging, commits etc.
v1.0.0 out today!
Dependencies
I don't need versions, I have revisions
Build once with rev 42
Build again with rev 42
Was it the same? Maybe.
Don't trust state
Environments change, so builds can change too
Build artifacts are thing
"Version" your build
but I just get the latest deps, k?
(Reproducibility)
...
No, really?
Pinning is essential, in any environment (sorry Go!)
Configuration management is about managing change
(Consistency)
Tracking revisions in an SCM/VCS is great..
.. but what about managing those changes?
Builds
Builds don't need to be automated, they need to be documented.
..but you may as well make automation your docs.
Continuous integration
Goes hand in hand with a build pipeline, but can be mutually exclusive