Search
🗡️

Build Automation - WIKI

Created
2021/01/07 13:10
Reference
Build automation is the process of automating the creation of a software build and the associated process including: compiling computer source code into binary code, packaging binary code, and running automated tests.

Overview

Historically, build automation was accomplished through makefiles. Today, are two general categories of tools:
Build-automation utility
This includes utilities like Make, Rake, CMake, MSBuild, Ant, Maven or Gradle(Java) etc. Their primary purpose is to generate build artifacts through activities like compiling and linking source code.
Build-automation servers
These are general web based tools that execute build-automation utilities on a scheduled or triggered basis; a continuous integration server is a type of build-automation server.

Build-automation utilities

Build-automation utilities allow the automation of simple, repeatable tasks. When using the tool, it will calculate how to reach the goal by executing tasks in the correct, specific order and running each task. The two ways build tools differ are task-oriented vs. product-oriented. Task-oriented tools decribe the dependecy of networks in terms of a specific set task and product-oriented tools describe things in term of the products they generate.

Build-automation servers

Although build servers existed long before continuous-integration servers, they are generally sysnonymouse with continuous-integration servers, however a build server may also into an ARA tool or ALM tool.
Server Types
On-demand automation such as a user running a script at the command line
Scheduled automation such as a continuous integration server running a nightly build
Triggered automation such as a continuous integration server running a build on every commit to a version-control system.

Relationship to continuous delivery and continuous integration

Build automation is considered the first step in moving toward implementing a culture of continuous delivery and DevOps. Build automation combined with continuous integration, deployment, application-release automation, and many other processes help move an organization forward in establishing software-delivery best practices.

Advantages

The advantages of build automation to software development projects include
A necessary pre-condition for continuous integration and continuous testing
Improve product quality
Accelerate the compile and link processing
Eliminate redundant tasks
Minimize "bad builds"
Eliminate dependencies on key personnel(?)
Have history of builds and releases in order to investigate issues
Save time and money - bacause of the reasons listed above.