Build automation

Last updated

Build automation is the practice of building software systems in a relatively unattended fashion. The build is configured to run with minimized or no software developer interaction and without using a developer's personal computer. Build automation encompasses the act of configuring the build system as well the resulting system itself.

Contents

Build automation encompasses both sequencing build operations via non-interactive interface tools and running builds on a shared server. [1]

Tools

Build automation tools allow for sequencing the tasks of building software via a non-interactive interface. Existing tools such as Make can be used via custom configuration file or using the command-line. Custom tools such as shell scripts can also be used, although they become increasingly cumbersome as the codebase grows more complex. [2]

Some tools, such as shell scripts, are task-oriented declarative programming. They encode sequences of commands to perform with usually minimal conditional logic.

Some tools, such as Make are product-oriented. They build a product, a.k.a. target, based on configured dependencies. [3]

Servers

A build server is a server setup to run builds. As opposed to a personal computer, a server allows for a more consistent and available build environment.

Traditionally, a build server was a local computer dedicated as a shared resource instead of used as a personal computer. Today, there are many cloud computing, software as a service (SaaS) websites for building.

Without a build server, developers typically rely on their personal computers for building, leading to several drawbacks, such as (but not limited to):

A continuous integration server is a build server that is setup to build in a relatively frequent way often on each code commit. A build server may also be incorporated into an ARA tool or ALM tool.

Typical build triggering options include:

Continuous integration and continuous delivery

Automating the build process is a required step for implementing continuous integration and continuous delivery (CI/CD) all of which considered best practice for software development. [4] [ how? ]

Advantages

Pluses of build automation include: [5]

See also

References

  1. Ceruzzi, Paul E. (2003). A history of Modern computing. The MIT Press. ISBN   978-0-262-53203-7.
  2. "Why a Build System?". Bazel (software) . Retrieved 2025-02-15.
  3. Clark, Mike (2004). Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps. The Pragmatic Programmers. ISBN   978-0-9745140-3-1.
  4. Bashan, Shmuel; Bellagio, David E. (2011). Work Item Management with IBM Rational ClearQuest and Jazz: A customization Guide. IBM Press. ISBN   978-0-13-700179-8.
  5. "Pragmatic Project Automation" (PDF). Archived from the original (PDF) on 2006-05-22. Retrieved 2025-02-15.