Fun Links 2015-12-11

One important aspect of software development, particularly agile software development is continuous integration. Often referred to as just CI, continuous integration is the practice of ensuring that your piece of software builds and passes any tests you have set up for it on a regular basis, usually just after someone makes changes to the source code. Typically this integration happens in an automated fashion.

I won’t go into all of the details of why this is good, but I will say this is done everywhere from large enterprise teams to small, indie open source projects. There are continuous integration software packages you can install yourself, both commercial and open source along with hosted services you can use. Some of these CI servers are very configurable and general purpose, others are focused on a particular platform or language.

The following list focuses on hosted CI services that are available for free or with a free option.

Wercker uses Docker containers as a core concept in its offering and focuses on microservices. It highlights JavaScript, Go, Ruby and Python with tutorials, but it supports the use of any Docker container on Docker Hub, so you should be able to work with other languages as well. It supports Git out of the box, but you could probably have a container with Mercurial and use that if you wanted to. As for pricing, Wercker is free for normal use, but if you want to run it on a virtual private cloud then that is an option, but I suspect that would be a bespoke quote. Another nice thing, Wercker has a registry of user-created recipes to do certain things in your pipeline. Want to compile a static site? There are recipes for that. Deploy to S3? No problem. There is even a command line client that lets you run your builds locally.

AppVeyor focuses on the Windows/.NET market. It has a free plan available to open source projects but otherwise seems to be quite pricey. Particularly if you want more than one concurrent job. The configuration of your build can be done via a YAML file, or through the Web UI. It only supports Git officially. However, it does allow you to do a shallow fetch using the GitHub or Bitbucket API to get a zip file. I would imagine that would work for a Mercurial repository hosted with Bitbucket as well, but I don’t know for sure. It supports the things you’d expect when dealing with .NET software like AssemblyVersion patching, NuGet dependencies (and deployment) and running PowerShell commands.

Distelli has more of a focus on DevOps, and it has a bit more of an enterprise feel to it, but they support Mercurial which isn’t easy to find in many of these hosted services. As with the other services, the build process can be defined from a YAML file in your source code. It has audit and logging for all of the steps along the way, and after building and testing your application, will also allow you to deploy it somewhere. They have a generous free plan that allows unlimited projects (even private ones); it only limits you to two servers and concurrent builds.