Posts from April 2013

In my last post I touched on why we started using Ansible. I will now try to show how all of our Scala project conventions and tools (SBT, Ansible, Jenkins, Debian package) work together to make automation possible.

The Scala Project

The example project that I’m going to be using is, DistBones. This is a bare bones Scala project that is configured to use Akka and the microkernel distribution build type. The service doesn’t do anything special, it merely starts up, prints a statement, then shuts down. It does, however, provide a minimal example for building a project using SBT and bundling the result up in a Debian package. Read More …

Manually provisioning servers with all of a service’s Unix dependencies is time consuming, and repeating the steps on multiple instances can be error prone. Thankfully a number of automation tools exist to handle repeatable jobs for us. One such tool is Ansible. It’s awesome, you should use it!

We took Ansible a few steps beyond server provisioning tasks and started using it in our Jenkins builds to auto-deploy to our dev and staging environments. We’ve even added production one-click deployments to Jenkins using our successful staging release candidates. Manually deploying to servers is now a thing of the past for all of our Scala projects. Read More …

We use SBT to build all of our Scala projects, and we’re still scratching the surface of what the tool can do. One thing we needed to do recently was to separate a module’s tests (built on scalatest) into groups. This is possible using scalatest’s tagging capabilities, which can be trigged with a custom SBT configuration. Although the documentation is out there, we couldn’t find a complete example. This is a step-by-step guide. Read More …