Build automation

From Wikipedia, the free encyclopedia

(Redirected from Software build automation)
Jump to: navigation, search

Build automation is the act of scripting or automating the process of compiling computer source code into binary code. This automated build is in contrast to a manual build process where a person has to perform multiple, often tedious and error prone tasks. It involves automating a wide variety of tasks that a software developer will do in their day-to-day activities including things like packaging binary code, running tests and deployment to production systems. The goal of this automation is to create a one-step process for turning source code into a working system. This is done to save time and to reduce errors.

Contents

  • Keep the build file at the root of the project
  • Use consistent style and conventions
  • Don't Repeat Yourself (DRY)
  • Provide good help
  • Manage dependencies properly
  • Use per-user properties to allow people to override defaults such as database logins or directory locations
  • Keep the build self-contained
  • Keep it all in source control

  • make, a classical Unix build tool
    • dmake [1] (distributed make), which is used in the build process for some Sun Microsystems software, including OpenOffice.org and Solaris.
    • Makepp [2] A build tool written in Perl, which is almost completely compatible with the original make, and offers a couple of advanced features: greatly improved handling of builds that involve multiple makefiles (recursive make is no longer necessary); automatic scanning for include files; rebuilds triggered if build command changes; checksum-based signature methods for reliable builds; extensibility through perl (within your makefile); repositories (automatically importing files from another tree).
    • Mk - developed originally for Version 10 Unix and Plan 9, said to have "improved upon make by removing all the vowels from the name", and introducing a completely new syntax that many consider to be easier to read and more powerful. It has been ported to Unix as part of plan9port.
    • Module::Build [3], which is a Perl module for the building and installation of other Perl modules. It improves upon the existing ExtUtils::MakeMaker module, which actually uses make to do the building.
    • Jam, which is a generally enhanced, ground-up tool which is similar to make.
    • nmake -- Bell Labs' nmake overcomes many limitations inherent in make, providing fully integrated support for viewpathing, dynamic dependency management, and state based execution. Forked into two versions after the AT&T trivestiture, a research version from AT&T Labs and a supported Alcatel-Lucent Bell Labs version.
    • Speedy Make [4] XML based make utility, very easy to write.
    • Openmake [5], a commercial enterprise build management tool
    • Rake, a Ruby-based build tool.
    • MPW Make -- Developed for Mac OS Classic and loosely similar to but not compatible with Unix make; it was designed with somewhat more complicated dependency syntax to allow for resource files. Mac OS X comes with both GNU make and BSD make. Available as part of the Macintosh Programmer's Workshop as a free, unsupported download from Apple.
  • Ant, which is popular for Java development and uses an XML file format.
  • CMake, a tool that generates files for the native build environment, such as makefiles for Unix or Workspace files for Visual Studio.
  • OMake [6], is an open source fully scriptable portable build tool with a custom scripting language built on top of Make-like syntax, and integrated functionality similar to autoconf/automake.
  • MSBuild, the Microsoft Build Engine
  • GNU Build Tools, a collection of tools for portable builds
  • cook, a very powerful tool with a C like syntax.
  • Apache Maven, a Java tool for management project and automated software build.
  • CABIE Continuous Automated Build and Integration Environment, Open Source, written in Perl, supports CVS, Perforce and Subversion. Features, pre, post, postpost and onfail triggers. MySQL collector. Commandline and WEB interface. Runs as a daemon on Unix systems, and a service on Windows.
  • PerlBuildSystem [7] - Open Source - A Make replacement written in Perl featuring hierarchical builds, dependency graph, node triggers, Perl syntax for PBSfiles, shell or Perl build actions.
  • SCons, which is based around the Python programming language, and integrates a broader set of features than make, with integrated functionality similar to autoconf/automake. It is descended from a Perl build driver called Cons.
  • A-A-P, a Python-based build tool.
  • PyBuild [8], a build tool for Python

Integrated tools:

Automated Build Table
Tool Name Operating System Build Language Description Language
make OS Dependent Language Independent uses Makefile
dmake  ? OpenOffice, Solaris  ?
makepp OS independent Language independent, optimized for C++ uses Makefile
Module::Build OS Independent Perl  ?
jam OS Independent Language Independent uses jamfile
nmake  ? ?  ?
Speedy Make  ?  ? XML
Openmake  ? ?  ?
Rake OS Independent Ruby Ruby
Cmake OS Independent Language Independent uses CMakeLists.txt file
MPW Make Mac OS Classic  ? ?
Ant OS Independent Java XML
NAnt Windows .net XML
WAnt ?  ? XML
OMake  ?  ? custom lang.
MSBuild Windows  ?  ?
Apache Maven OS Independent Java Project Object Model
SCONS Linux, Posix C, C++, Java Python
PerlBuildSystem  ?  ?  ?
A-A-P Unix, Windows, Mac OS-X C recipe
PyBuild  ?  ?  ?
AntHill Build Server  ?  ?  ?
CruiseControl OS Independent Language Independent XML
ParaBuild  ?  ?  ?
 ??  ?  ?  ?

  • Mike Clark: Pragmatic Project Automation, The Pragmatic Programmers ISBN:0-9745140-3-9
  • The Buildmeister [10] - portal dedicated to build and release management

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.