Build Automation 8 free best tools for your
By: Arnold Abraham
Tags: Automation, Development, DevOps, Coding, Technology

If you got an IDE (Integrated Development Environment), then you know the comfortable tools they provide, for sure. They help you type source code with auto-completion, help with error spotting, testing, and compilation.

The last point is also automatable by other tools. So-called Build-Automation-Tools. You can do it with your IDE, but then you have to do it manually and can’t really use continuous integration(CI) & continuous delivery (CD). Automated Build Tools are useful when you got a build server, in combination with CI and CD, the best way to choose for software development.

Normally you control these tools by scripts or with the command prompt/console window or a PowerShell. Cloud-based solutions are managed by a Continuous-Integration-Server. [1] [2] They take care of project administration, program compilation, testing, and also for deployment. Offering web-based management systems especially useful when working in a team or with multiple teams.

They are configurable to create automated builds every night, do testing after each commitment in your version control system to detect flaws early. They also compile your code and puts a compiled version in the binary repository manager. [3]

I introduce you to 8 open source tools to automate your steps after you finished the creation of source code.

Cake (cross platform) MSBuild Nuke (for .NET, .NET Core & Mono) Fake (F# automation) FlubuCore Nake PSake Invoke Build

Cake [4]

logo of cakebuild (all rights reserved)

Cake (C# Make) is an open-source build automation system developed with C# and a domain-specific language. It is available for Windows, macOS and Linux and also supports .NET, .NET Core and Mono. You can use Cake locally and integrated with continuous integration servers such as Azure DevOps, TeamCity, Team Foundation Server, AppVeyor, or Jenkins. It will take care of compiling code, copying files and/or folders, running unit tests, generating NuGet packages, and compressing files.

On top, a connection of further build tools is possible — including MSBuild, .NET Core CLI, MSTest, xUnit, NUnit, NuGet, ILMerge or even WiX. Cake features excellent online documentation. You will find a product overview, tutorials, basics, notes on tool connection and use at the command prompt, and connection to the editors' Atom, Visual Studio Code, and Visual Studio. Like MS-Build, the tool is subject to the MIT license.

MSBuild [5]

MSBuild logo (all rights reserved)

Microsoft offers with MSBuild (Microsoft Build Engine), its own open-source tool developed with C# for the automatic creation of .NET applications. The tool is the build platform for .NET and Visual Studio. While Visual studio uses it directly, it can also be used independently. The build engine creates your build, defined by XML files. Visual Studio also generates project files in XML syntax. The online documentation describes the basics, advanced concepts, gives hints for logging, and explains practical and exemplary procedures for use. It also has a step-by-step guide on how to perform various tasks before and after build processes. The tool is subject to the MIT license.

Nuke (for .NET, .NET Core & Mono) [6]

nuke logo (all rights reserved)

Nuke is an open-source build system for C# and .NET that is cross-platform and supports .NET Core, the .NET Framework, and Mono. Nuke can also be used with various continuous integration servers such as App-Veyor, Azure Pipelines, Bitrise, GitHub, TeamCity and Travis CI. Nuke also provides native support for major development environments such as Visual Studio, ReSharper, Rider, and VSCode with auto-completion, syntax coloring, and debugging capabilities. It implements build processes by using console applications. You get a command-line tool to configure build processes and execute them by command. The tool focuses on easy handling and the possibility to use extensions.

Fake (F# automation) [7]

Fake Logo (all rights reserved)

FAKE (F# Make) is a domain-specific language and runtime library for executing build processes based on scripts that are themselves developed via the F# functional programming language. The solution itself was also implemented entirely in F# and makes it a point to freely design-build processes according to individual requirements. The entire build process is scripted. It manages tasks as target objects, which are interdependent. This allows you to ensure, for example, that basic tasks are completed before further steps are performed. A special feature of FAKE is the globbing support, i.e. the use of wildcards in path and folder names to flexibly include folders and files in build scripts.

FlubuCore [8]

FlubuCore logo (all rights reserved)

FlubuCore (Fluent Builder Core) is a multi-platform build and deployment automation system. It defines the processing process via scripts in C# syntax. We can implement script processing in Visual Studio, including auto-completion and syntax coloring, thanks to Fluent Interface. FlubuCore can be controlled via console application and it manages tasks as target objects. You can bind assemblies for function extension or also NuGet packages, execute external programs, or bind command line switches via JSON configuration files. FlubuCore offers an interactive command mode.

Nake [9]

Nake logo (all rights reserved)

Nake provides you to run build tasks flexibly. The open-source tool Nake is dedicated to the execution of tasks and can accordingly also be used effectively for the automation of build processes. It is controlled via command-line switches and allows the processing of Nake project files, via which the task implementation is specified in text format and in a syntax corresponding to C#. With Nake, you determine the project directories, activate error handling and script debugging in Visual Studio, or execute individual tasks specifically. Through Nake, you launch external programs, such as MSBuild, process file paths and environment variables, perform file operations such as copying, moving, or deleting files and/or folders, and influence the Task Runner.

PSake (PowerShell Make) [10]

PSake logo (all rights reserved)

Both PSake (PowerShell Make) and Invoke Build are solutions for automatic application creation. PSake uses PowerShell scripts, which in turn execute tasks. Each task itself is coded in a C# syntax. Individual tasks can be dependent on each other. This guarantees that individual tasks are successfully executed before a dependent task is started. Furthermore, certain conditions can be set before another task is started. Build scripts can process parameters and also interact with Hudson, Team City, or even Cruise Control .NET.

Invoke Build [11]

Invoke Build logo (all rights reserved)

Invoke Build is inspired by PSake, but aims to be simpler and more powerful. Besides processing standard tasks, you develop tasks that build on each other or builds that continue even after interruptions. You also run parallel builds in separate work environments or provide for direct execution of tests. You define new task classes or interact with various tools and programs such as MSBuild, VS Code, or PowerShell ISE. The online documentation explains the basic concepts, offers a tutorial, help, and extended information about the tasks.