Build automation is a vital tool for devops, sysadmins, and developers. It is nothing but scripting or automating the process of compiling source code into binary. Sysadmins can use build tools to manage and update config files. Following is a list of awesome open source and popular tools associated with automating build processes on Linux or Unix-like system.
1: GNU make and co – One of the most popular automation build tool
GNU make command used to maintain, compile and build programs on Linux and Unix-like system. It is one of the most popular automation build tool for and uses a TEXT file format:
- Managing config files
- Updating config files
- Compile and build simple to complex programs or libraries
By default the TEXT file is named Makefile. Make has many clones and rewrites. Here are some of the popular options:
- BSD make – Popular on FreeBSD/NetBSD/OpenBSD and clones.
- make – A classic Unix build tool.
- SunPro make – A Solaris Unix build tool.
- GNU Make – The standard implementation of make for Linux and OS X and *BSD.
If you ever run a command like “./configure && make && make install“, you used one of the make tools to build software on your platform.Usually above tools are installed as part of operating system.
A simple GNU Makefile |
Type: Build automation |
Written in: C |
Platform: Linux, MacOS X, *BSD and Unix-like |
License: GPL v3 |
Download: https://www.gnu.org/software/make/ (GNU Make) |
2: Apache Ant – Popular for Java platform development
Another very popular automation build tool, similar to make, written in Java and uses an XML file format. Naturally, it is entirely suited to building Java-based software. By default the XML file is called build.xml.
A sample build.xml |
Type: Build automation |
Written in: Java |
Platform: Java SE |
License: Apache License 2.0 |
Download: http://ant.apache.org/ |
3: Gradle – Yet another open source tool
Gradel is a free and open source build automation system. It extends upon the Apache Ant and Maven. It used DSL (“domain-specific language”) instead of the XML format used by Maven/Ant. Another addition is DAG (“directed acyclic graph”) to find the correct order in which tasks can be build and run.
Type: Build Tool |
Written in: Java, Groovy |
Platform: Cross-platform |
License: Apache License 2.0 |
Download: https://gradle.org/ |
4: Apache Maven – Yet another build automation tool for Java
Apache Maven is a free and open source build automation system. It does dependency management and builds and mostly used for Java projects. However, you are not limited to Java based projects; you can use any other programming language such as Ruby, Python, C#, Scala and other computer programming languages.
A sample Maven pom.xml file |
Type: Build tool |
Written in: Java |
Platform: Cross-platform |
License: Apache License 2.0 |
Download: https://maven.apache.org/ |
5: Grunt – Build too for front-end web development
Grunt is very popular among Javascript front end developers as a JavaScript task runner. It is a free and open-source project. It uses a Gruntfile for unit testing, minification of code, compilation and much more.
A sample Gruntfile written in JavaScript |
Type: Task Runner, Build tool |
Written in: Node.js |
Platform: Linux, Windows, OS X |
License: MIT License [ |
Download: http://gruntjs.com/ |
6: Gulp.js – Yet another build tool for front-end web development
gulp.js is a free and open-source JavaScript toolkit and mostly as a build system in front-end web development. Here is a sample gulpfile.js:
var gulp = require('gulp'); var pug = require('gulp-pug'); var less = require('gulp-less'); var minifyCSS = require('gulp-csso'); gulp.task('html', function(){ return gulp.src('client/templates/*.pug') .pipe(pug()) .pipe(gulp.dest('build/html')) }); gulp.task('css', function(){ return gulp.src('client/templates/*.less') .pipe(less()) .pipe(minifyCSS()) .pipe(gulp.dest('build/css')) }); gulp.task('default', [ 'html', 'css' ]); |
var gulp = require(‘gulp’);
var pug = require(‘gulp-pug’);
var less = require(‘gulp-less’);
var minifyCSS = require(‘gulp-csso’);gulp.task(‘html’, function(){
return gulp.src(‘client/templates/*.pug’)
.pipe(pug())
.pipe(gulp.dest(‘build/html’))
});gulp.task(‘css’, function(){
return gulp.src(‘client/templates/*.less’)
.pipe(less())
.pipe(minifyCSS())
.pipe(gulp.dest(‘build/css’))
});gulp.task(‘default’, [ ‘html’, ‘css’ ]);
What is gulp?
- Automation – gulp is a toolkit that helps you automate painful or time-consuming tasks in your development workflow.
- Platform-agnostic – Integrations are built into all major IDEs and people are using gulp with PHP, .NET, Node.js, Java, and other platforms.
- Strong Ecosystem – Use npm modules to do anything you want + over 2000 curated plugins for streaming file transformations
- Simple – By providing only a minimal API surface, gulp is easy to learn and simple to use
Type: Toolkit for automating tasks |
Written in: Node.js |
Platform: Cross-platform |
License: MIT License |
Download: http://gulpjs.com/ |
7: Rake – A make-like build utility for Ruby
Rake is a free and open-source build automation software. It is a Make-like tool but created in Ruby. You can specify all build tasks and deps in Ruby syntax. It uses the TEXT file called Rakefiles to build your software. Rake is part of the Ruby version 1.9+.
An example of a simple Rake script to build a C Hello World program. |
Type: Task management and build automation tool |
Written in: Ruby |
Platform: Cross-platform |
License: MIT License |
Download: https://github.com/ruby/rake |