7 Awesome Open Source Build Automation Tools For Sysadmin/DevOps/Developers

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:

  1. Managing config files
  2. Updating config files
  3. 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

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

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.

Gradle
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

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

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?

  1. Automation – gulp is a toolkit that helps you automate painful or time-consuming tasks in your development workflow.
  2. Platform-agnostic – Integrations are built into all major IDEs and people are using gulp with PHP, .NET, Node.js, Java, and other platforms.
  3. Strong Ecosystem – Use npm modules to do anything you want + over 2000 curated plugins for streaming file transformations
  4. Simple – By providing only a minimal API surface, gulp is easy to learn and simple to use
gulp.js
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.

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

Source