Open Source Continuous Delivery Tools
Continuous delivery tools can get pretty expensive nowadays, from build servers to automated testing scripts and deployment tools. All of those tools need either monthly subscriptions or annual license fees.
Thanks to open source continuous delivery tools the cost can be reduced significantly.Below are set of tool that covers the different phases of the continuous delivery phase.
Open Source Version Control Systems
GitLabGitlab offers free and open source version of their web-based Git manager. The application is packed with Wiki support & Issue tracking systems. In the last couple of years, Gitlab expanded the scope of their products to cover all the phases of the software development lifecycle from concept to delivery and established them themselves in the DevOps industry. Gitlab products can be considered as 1 solution for all the phases of DevOps.
GogsGogs stared to gain some popularity lately, it is 100% open source and free of charge. The application is developed using Go Language which makes it very fast and cross-platform it can be installed on Linux, Windows, Mac or a Go compatible system. Like any other git manager, they offer Wiki module and simple issue tracking system. Gogs is a light weight simple application and it does what it says perfectly version control & collaboration.
DiffusionDiffusion is an open source version control system that comes bundled with Phabricator. It supports hosting Git,SVN, and Mercurial repositories. Diffusion lets the user browse branches,commit history, and navigate the file system.
Open Source Build Servers
JenkinsJenkins is the most used option when it comes to open source continuous delivery tools, it is built using Java and can be deployed easily with a simple WAR format or the solution we at Steadyops prefer - Docker Container. Jenkins has proved it self to be industry standard with its rock-solid stability, huge community support & wide set of plugins. Recently, Jenkins introduced a new plugin "Blue Ocean" that made building automation much easier and robust with Pipeline support, Pipeline Visualization & the Jenkinsfile format which allowed automation steps to be described as "code".
BuildbotBuidlbot is another option to consider when using open source continuous delivery tools, it used by Mozilla to automate the builds of Chromium, Webkit, and other projects.The application is built using Python and can be run on any machine that supports Python. Out of the box, Buildbot supports more than 10 version control systems (including Git, SVN, Mercurial, CVS, etc) and a wide set of builders.
Open Source Configuration ManagementConfiguration management software is a must have when trying to reach the continuous delivery phase, it provides a systematic method to unify server & environment configuration and allows to write infrastructure as code. This makes it easy to put configuration files under version control and hence the ability to control changes and predict/prevent errors before they happen.
AnsibleDeveloped by Redhat Inc using Python and PowerShell, Ansible is a powerful tool that not only allows writing infrastructure as code, it's scope extends to server provisioning and application deployment. Ansible configuration files are written in YAML or Jinja Templates which are very common in the software development industry and very easy to learn. Ansible is built to enforce re-usability from the beginning, server configuration or Playbooks can be shared publicly through Ansible Galaxy or you can just store them on Git.
ChefChef is another configuration management software that is well established in the market, developed using Ruby(client)/Erlang(Server). It utilizes Ruby domain specific language to store configuration. Chef can manage public, private and hybrid cloud infrastructure, currently, Facebook & HP public cloud rely on it for their daily operations. Chef configuration scripts are called "Recipes".
Open Source Test AutomationChoosing a test automation tool relies completely on the programming language.Below is a list of frameworks for different languages that you can use.
- PHP: PHPUnit, Codeception combines Unit Testing, Acceptance Testing & BDD Testing.
- JAVA: JUnit
- Python: Robot Framework