Build Automation
Build automation tools
Build automation tools automate the steps of the build process by means of build scripts.
In non-trivial projects, building a product from source code can be a complex multi-step process. Thus, build tools can be used to simplify this process.
Examples of build tools
Gradle, Maven, GNU Make, Apache ANT for Java
Build tools serve as dependency management tools, helping developers maintain the correct version of the required libraries.
CI/CD
Continuous integration (CI)
Integration, building and testing happens automatically after each code change.
Continuous deployment (CD)
A natural extension of CI, but with deployment.
Examples of CI/CD
GitHub Actions, Travis, Jenkins, Appveyor, CircleCI
Approaches
Timing and frequency
Late and one-time
Wait till all components are completed and integrate all finished components near the end of the project.
Early and frequent
Integrate early and evolve each part in parallel in small steps, reintegrating frequently
Amount merged at a time
Big-bang integration
Integrates all components at the same time
Incremental integration
Integrate a few components at a time
Order of integration
Top-down
Higher level components are integrated before bringing in the lower-level components.
Bottom-up
The reverse of top-down integration
Sandwich
A mix of both.