Build automation involves
scripting
Script may refer to:
Writing systems
* Script, a distinctive writing system, based on a repertoire of specific elements or symbols, or that repertoire
* Script (styles of handwriting)
** Script typeface, a typeface with characteristics of handw ...
or automating the process of
compiling computer
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
into
binary code
A binary code represents text, computer processor instructions, or any other data using a two-symbol system. The two-symbol system used is often "0" and "1" from the binary number system. The binary code assigns a pattern of binary digits, als ...
. Below is a list of notable tools associated with automating build processes.
Make-based
*
GNU make, a
make
implementation with a large set of extensions
*
make, a Unix build tool
*
mk, developed originally for
Version 10 Unix
The term "Research Unix" refers to early versions of the Unix operating system for DEC PDP-7, PDP-11, VAX and Interdata 7/32 and 8/32 computers, developed in the Bell Labs Computing Sciences Research Center (CSRC).
History
The term ''Researc ...
and
Plan 9 Plan 9 or Plan Nine may refer to:
Music
* Plan 9 (band), a psychedelic rock band from Rhode Island
* ''Plan 9'', an album by Big Guitars From Memphis with Rick Lindy
* "Plan 9", a song on the 1993 album ''Gorgeous'' by electronica band 808 Stat ...
, and ported to Unix as part of
plan9port
*
MPW Make, developed for the
classic Mac OS and similar to but not compatible with Unix make; the modern
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
(OS X) comes with both GNU make and BSD make; available as part of Macintosh Programmer's Workshop as a free, unsupported download from Apple
*
nmake
*
PVCS
PVCS Version Manager (originally named Polytron Version Control System) is a software package by Serena Software Inc., for version control of source code files.
PVCS follows the "locking" approach to concurrency control; it has no ''Merge (versio ...
-make, follows the concept of
make
but with additional syntax features
Make-incompatible
*
Apache Ant, popular for
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
platform development and uses an
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
file format
*
Apache Buildr, historic open-source build system,
Rake
Rake may refer to:
* Rake (stock character), a man habituated to immoral conduct
* Rake (theatre), the artificial slope of a theatre stage
Science and technology
* Rake receiver, a radio receiver
* Rake (geology), the angle between a feature on a ...
-based, gives the full power of scripting in
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapp ...
with integral support for most abilities wanted in a build system
*
Apache Maven
Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
, a Java platform tool for dependency management and automated software build
*
ASDF LISP build system for building LISP projects
*
A-A-P, a
Python-based build tool
*
Bazel, a portion of Blaze (Google's own build tool) written in Java, using Starlark (BUILD file syntax) to build projects in Java, C, C++, Go, Python, Objective-C, and others
*
BitBake
BitBake is a make-like build tool with the special focus of distributions and packages for embedded Linux cross compilation, although it is not limited to that. It is inspired by Portage, which is the package management system used by the Gent ...
, a Python-based tool with the special focus of distributions and packages for embedded Linux cross-compilation
*
Boot, a
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
build and dependency management tool written in
Clojure
*
boost.build For C++ projects, cross-platform, based on
Perforce Jam
*
Buck, a build system developed and used by Facebook, written in Java, using Starlark (BUILD file syntax) as
Bazel
*
Buildout, a Python-based build system for creating, assembling and deploying applications from multiple parts
*
Cabal
A cabal is a group of people who are united in some close design, usually to promote their private views or interests in an ideology, a state, or another community, often by intrigue and usually unbeknownst to those who are outside their group. T ...
, a common architecture for building applications and libraries in the programming language
Haskell
*
Dub, the official package and build manager of the
D Language
*
FinalBuilder
FinalBuilder is a commercial Windows build automation tool that provides a unified GUI, graphical interface to author and execute build projects. Once defined, a project can only be run either via the GUI, graphical interface or command line prog ...
, for Windows software developers. FinalBuilder provides a graphical IDE to both create and run build projects in a single application. The final builder also includes the ability the execute the unit test, deploy web projects or install and test applications.
*
Flowtracer, a build management tool
*
Gradle, an open-source build and automation system with an
Apache Groovy-based
domain specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging f ...
(DSL), combining features of
Apache Ant and
Apache Maven
Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
with additional features like a reliable incremental build
*
Grunt
Grunt, grunts or grunting may refer to:
Sound and music
* Grunting (tennis), in tennis refers to the loud noise, sometimes described as "shrieking" or "screaming", made by some players during their strokes
* Death grunt, the death metal singin ...
, a build tool for front-end web development
*
Gulp, a build tool for front-end web development
*
IncrediBuild, a suite of grid computing software for compiling and building software
*
Leiningen, a tool providing commonly performed tasks in Clojure projects, including build automation
*
Mix
Mix, mixes or mixing may refer to:
Persons & places
* Mix (surname)
** Tom Mix (1880-1940), American film star
* nickname of Mix Diskerud (born Mikkel, 1990), Norwegian-American soccer player
* Mix camp, an informal settlement in Namibia
* Mix ...
, the
Elixir build tool
*
MSBuild, the
Microsoft
Microsoft Corporation is an American multinational corporation, multinational technology company, technology corporation producing Software, computer software, consumer electronics, personal computers, and related services headquartered at th ...
build engine
*
NAnt, a tool similar to Ant for the
.NET Framework
The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
*
Ninja
A or was a covert agent or mercenary in feudal Japan. The functions of a ninja included reconnaissance, espionage, infiltration, deception, ambush, bodyguarding and their fighting skills in martial arts, including ninjutsu.Kawakami, pp ...
, a small build system focused on speed by using build scripts generated by higher-level build systems
*
Perforce Jam, a build tool by
Perforce, inspired by Make
*
Psake
psake is a domain-specific language and build automation tool written in PowerShell to create builds using a dependency pattern similar to Rake or MSBuild. It intends to simplify the build language as compared to MSBuild scripting.ASP.NET - Tops ...
, domain-specific language and build-automation tool written in PowerShell
*
Qt Build System
*
Rake
Rake may refer to:
* Rake (stock character), a man habituated to immoral conduct
* Rake (theatre), the artificial slope of a theatre stage
Science and technology
* Rake receiver, a radio receiver
* Rake (geology), the angle between a feature on a ...
, a
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapp ...
-based build tool
*
sbt, a build tool built on a
Scala-based DSL
*
SCons, Python-based, with integrated functionality similar to
autoconf/
automake
In software development, GNU Automake is a programming tool to automate parts of the compilation process. It eases usual compilation problems. For example, it points to needed dependencies.
It automatically generates one or more ''Makefile.in' ...
*
Stack
Stack may refer to:
Places
* Stack Island, an island game reserve in Bass Strait, south-eastern Australia, in Tasmania’s Hunter Island Group
* Blue Stack Mountains, in Co. Donegal, Ireland
People
* Stack (surname) (including a list of people ...
, a tool to build
Haskell projects, manage their dependencies (compilers and libraries), and for testing and benchmarking.
*
Visual Build Visual Build is GUI software for Windows that enables software developers and build masters to create an automated, repeatable process for software builds. It has built-in support for integrating various development tools into the build process. ...
, a
graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows User (computing), users to Human–computer interaction, interact with electronic devices through graphical icon (comp ...
software for software builds
*
Waf, a Python-based tool for configuring, compiling and installing applications. It is a replacement for other tools such as
Autotools,
Scons,
CMake or Ant
Build script generation
These '' generator'' tools do not build directly, but rather generate files to be used by a ''native'' build tool (as the ones listed in the previous two sections).
*
BuildAMation, a multi-platform tool, using a declarative syntax in C# scripts, that builds C/C++ code in a terminal using multiple threads, or generates project files for Microsoft Visual Studio, Xcode or MakeFiles.
*
CMake generates files for various build tools, such as
make,
ninja
A or was a covert agent or mercenary in feudal Japan. The functions of a ninja included reconnaissance, espionage, infiltration, deception, ambush, bodyguarding and their fighting skills in martial arts, including ninjutsu.Kawakami, pp ...
, Apple's
Xcode, and
Microsoft Visual Studio
Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including web site, websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platfor ...
. CMake is also directly used by some
IDE as
Qt Creator,
KDevelop and
GNOME Builder.
*
GNU Build System (aka autotools), a collection of tools for portable builds. These in particular include
Autoconf and
Automake
In software development, GNU Automake is a programming tool to automate parts of the compilation process. It eases usual compilation problems. For example, it points to needed dependencies.
It automatically generates one or more ''Makefile.in' ...
, cross-unix-platform tools that together generate appropriate localized makefiles.
*
GYP (Generate Your Projects) - Created for
Chromium
Chromium is a chemical element with the symbol Cr and atomic number 24. It is the first element in group 6. It is a steely-grey, lustrous, hard, and brittle transition metal.
Chromium metal is valued for its high corrosion resistance and h ...
; it is another tool that generates files for the native build environment. It has been superseded by GN which generates files for
ninja
A or was a covert agent or mercenary in feudal Japan. The functions of a ninja included reconnaissance, espionage, infiltration, deception, ambush, bodyguarding and their fighting skills in martial arts, including ninjutsu.Kawakami, pp ...
and other build systems.
*
imake
*
Meson
In particle physics, a meson ( or ) is a type of hadronic subatomic particle composed of an equal number of quarks and antiquarks, usually one of each, bound together by the strong interaction. Because mesons are composed of quark subparticle ...
, a build system optimized for performance and usability is based on
ninja
A or was a covert agent or mercenary in feudal Japan. The functions of a ninja included reconnaissance, espionage, infiltration, deception, ambush, bodyguarding and their fighting skills in martial arts, including ninjutsu.Kawakami, pp ...
on Linux,
Visual Studio
Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such ...
on Windows and
Xcode on macOS. Meson is also directly used by
GNOME Builder.
*
OpenMake Software Meister
*
Premake, a Lua-based tool for making makefiles, Visual Studio files, Xcode projects, and more
*
qmake
Continuous integration
*
AnthillPro
AnthillPro is a software tool originally developed and released as one of the first continuous integration servers. AnthillPro automates the process of building code into software projects and testing it to verify that project quality has been m ...
, build automation with pipeline support for deployment automation and testing. Cross-platform, cross-language
*
Apache Continuum
Apache Continuum, is a discontinued continuous integration server. It was a partner to Apache Maven, which run builds on a configurable schedule. Much like CruiseControl, Continuum emailed developers when the build was broken, requesting that th ...
- discontinued
*
Bamboo
Bamboos are a diverse group of evergreen perennial flowering plants making up the subfamily Bambusoideae of the grass family Poaceae. Giant bamboos are the largest members of the grass family. The origin of the word "bamboo" is uncertain, ...
, continuous-integration software
*
Bitbucket Pipelines and Deployments, continuous integration for
Bitbucket hosted repositories
[https://confluence.atlassian.com/bitbucket/build-test-and-deploy-with-pipelines-792496469.html Cross-platform]
*
Buildbot, a Python-based software development continuous-integration tool which automates the compile/test cycle
*
CruiseControl
In software development, CruiseControl is a Java-based framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the ...
, for Java and .NET
*
Go continuous delivery, open source, cross-platform
*
GitLab (
GitLab Runner), continuous integration and
git server
*
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, co ...
(
GitHub Actions), free continuous integration service for open-source projects and
git server
*
Hudson, an extensible continuous-integration engine
*
Jenkins
Jenkins may refer to:
People
* Jenkins (name), history of the surname
* List of people with surname Jenkins
* The Jenkins, country music group
Places United States
*Jenkins, Illinois
*Jenkins, Kentucky
*Jenkins, Minnesota
*Jenkins, Missouri
*Je ...
, an extensible continuous-integration engine,
forked from Hudson
*
Spinnaker
A spinnaker is a sail designed specifically for sailing off the wind on courses between a reach (wind at 90° to the course) to downwind (course in the same direction as the wind). Spinnakers are constructed of lightweight fabric, usually n ...
, open source multi-cloud continuous delivery service from Netflix and Google
*
TeamCity
*
Travis CI, a hosted continuous-integration service
Configuration management
*
Ansible
An ansible is a category of fictional devices or technology capable of near-instantaneous or faster-than-light communication. It can send and receive messages to and from a corresponding device over any distance or obstacle whatsoever with no de ...
(Python-based)
*
CFEngine
*
Chef
A chef is a trained professional cook and tradesman who is proficient in all aspects of food preparation, often focusing on a particular cuisine. The word "chef" is derived from the term ''chef de cuisine'' (), the director or head of a k ...
(Ruby-based)
*
LCFG
LCFG stands for "Local ConFiGuration system". Developed at the University of Edinburgh beginning around 1993, it is "a system for automatically installing and managing the configuration of large numbers of computer systems. It is particularly suita ...
*
OpenMake Software Release Engineer
*
Otter
*
Puppet
A puppet is an object, often resembling a human, animal or Legendary creature, mythical figure, that is animated or manipulated by a person called a puppeteer. The puppeteer uses movements of their hands, arms, or control devices such as rods ...
(Ruby-based)
*
Salt
Salt is a mineral composed primarily of sodium chloride (NaCl), a chemical compound belonging to the larger class of salts; salt in the form of a natural crystalline mineral is known as rock salt or halite. Salt is present in vast quanti ...
(Python-based)
*
Rex (Perl-based)
Meta-build
A meta-build tool is capable of building many different projects using a subset of existing build tools. Since these usually provide a list of packages to build, they are also often called
package manager
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals w ...
s.
*
Pkgsrc,
Portage,
MacPorts and other package managers derived from the
BSD Ports Collection.
*
Nix, functional package manager for Linux and macOS focusing on
reproducible build
Reproducible builds, also known as deterministic compilation, is a process of compiling software which ensures the resulting binary code can be reproduced. Source code compiled using deterministic compilation will always output the same binary.
...
s, used for the
NixOS Linux distribution.
*
Guix, functional package manager based on Nix, used for the
GuixSD
GNU Guix () is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the defa ...
Linux distribution.
*
Collective Knowledge, cross-platform package manager to rebuild software environment for research workflows
*
Homebrew
Homebrewing mainly refers to small-scale, non-commercial manufacture of a drink, typically beer.
Homebrew or home brew may also refer to:
Computing
* Homebrew Computer Club
* Homebrew (package manager), for macOS and Linux
* Homebrew (video game ...
, package manager for macOS
Others
*
checkinstall
CheckInstall is a computer program for Unix-like operating systems which eases the installation and uninstallation of software compiled from source by making use of package management systems. After software compilation it can automatically g ...
, checkinstall is a program that monitors an installation procedure and creates a standard package for your distribution.
*
Open Build Service
The Open Build Service (formerly called openSUSE Build Service) is an open and complete distribution development platform designed to encourage developers to compile packages for multiple Linux distributions including SUSE Linux Enterprise Server, ...
, a hosted service to help build packages for various Linux distributions
Licensing overview
References
{{reflist
Build automation
Lists of software