HOME

TheInfoList



OR:

Build automation is the practice of
building A building or edifice is an enclosed Structure#Load-bearing, structure with a roof, walls and window, windows, usually standing permanently in one place, such as a house or factory. Buildings come in a variety of sizes, shapes, and functions, a ...
software systems in a relatively unattended fashion. The build is configured to run with minimized or no
software developer Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
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. Build automation encompasses both sequencing build operations via non-interactive interface tools and running builds on a shared server.


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 A command-line interface (CLI) is a means of interacting with software via commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user-friendly alternativ ...
. Custom tools such as shell scripts can also be used, although they become increasingly cumbersome as the codebase grows more complex. Some tools, such as
shell script A shell script is a computer program designed to be run by a Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be command languages. Typical operations performed by shell scripts include file manipu ...
s, are task-oriented
declarative programming In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow. Many languages that ap ...
. 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.


Servers

A build server is a server setup to run builds. As opposed to a
personal computer A personal computer, commonly referred to as PC or computer, is a computer designed for individual use. It is typically used for tasks such as Word processor, word processing, web browser, internet browsing, email, multimedia playback, and PC ...
, 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 Cloud computing is "a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to International Organization for ...
,
software as a service Software as a service (SaaS ) is a cloud computing service model where the provider offers use of application software to a client and manages all needed physical and software resources. SaaS is usually accessed via a web application. Unlike o ...
(SaaS)
websites A website (also written as a web site) is any web page whose content is identified by a common domain name and is published on at least one web server. Websites are typically dedicated to a particular topic or purpose, such as news, education ...
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): * Developers who know how to build might be unavailable (e.g., on vacation). * Issues with a developer's machine could prevent building. * Conflicting software on a developer's machine may hinder proper building. A
continuous integration Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state. Typically, developers Merge (version control), merge changes to an Branching (revisio ...
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: * On-demand: requested by a user. * Scheduled: such as a
nightly build A daily build or nightly build is a software build of the latest version of a software system, run automatically on a daily/nightly basis. This is so it can first be compiled to ensure that all required dependencies are present, and possibly te ...
. * On-commit: building on every commit to a
version control Version control (also known as revision control, source control, and source code management) is the software engineering practice of controlling, organizing, and tracking different versions in history of computer files; primarily source code t ...
system.


Continuous integration and continuous delivery

Automating the build process is a required step for implementing
continuous integration Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state. Typically, developers Merge (version control), merge changes to an Branching (revisio ...
and
continuous delivery Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software with greater speed ...
(CI/CD) all of which considered
best practice A best practice is a method or technique that has been generally accepted as superior to alternatives because it tends to produce superior results. Best practices are used to achieve quality as an alternative to mandatory standards. Best practice ...
for software development.


Advantages

Pluses of build automation include: * Can save time and money in the long run * Enables
continuous integration Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state. Typically, developers Merge (version control), merge changes to an Branching (revisio ...
, delivery and testing * More consistent build process * Can optimize the build process; reducing time and redundant tasks * Reduces dependency on key personnel and their personal computers * Can automate collection of build history


See also


References

{{reflist Types of tools used in software development