Continuous Delivery at INDICA

Recently I attended a workshop about Continuous Delivery, hosted by ICTOffice and presented by people from NISI and the University of Utrecht.

Mainly, I had questions regarding the level of integration of our development process and the tools involved. We created the first (baby-)steps into the software development of INDICA quite a long time ago. The modern tools for integration of your process didn’t exist yet, let alone the words describing it!

At first, we used SVN for version control. At the time, this was revolutionary – especially compared to CVS. (Of course, this is not true; all these tools have their pro’s and cons, mainly depending on who’s using it and how he’s using it.) We used MantisBT for our bugtracking. And lots and lots of scripts to be able to continuously deploy to a build server for testing and building. 

And this has worked properly for many years.

In the meantime, INDICA is growing. Not only do we have more people maintaining and developing parts of the software, also the software is growing and getting more mature. Tools have appeared that might make our work easier. But basically, INDICA has not really changed. It’s still an appliance with highly integrated tools, parts and systems.

We migrated from MantisBT to Atlassian Jira a while ago. We started using Confluence for the more important stories. And we created a scripted testing environment which took away most of our tedious tasks for testing the installation, provisioning and basic testing of the frontend.

But also, recently, we migrated from SVN to Bitbucket.

This turned out to be a not-so-trivial step. We got really used to our SVN in combination with the scripted environment and we’re actually still running into problems with the Git environment. It’s getting better though, every week we have less creases to iron out.

Back to this workshop. During the workshop I tried to pry as much information loose from all attendees as I could. Luckily the presenters helped out, they were as interested as I was. As I already stated, I really wanted to know three main things:

  • How mature is our process?
  • What other tools are being used?
  • What are the main alternatives to the tools we already use?

It turns out, all these companies don’t really have good alternatives for their tools yet. The choices we made were quite mainstream on one hand, but without a real good alternative on the other. So even if we have quite some configuration or usability problems with the Jira/Confluence/Bitbucket suite, an alternative that is as well integrated as this didn’t pop up.

Also, and this came as quite a surprise to me, our process is quite mature. Although we started out with Continuous Integration ‘Avant La Lettre’, we’re on a quite good track.

The development cycle, with 3 week sprints, regular builds and continuous feature and bug improvements, fits us well. The testing part might need some improvement on the unit-testing side, but also we use a proper script for this and partly automate the process daily.

Also, this can be improved if we revisit the set-up. The current appliance might be better off if we create proper packages, therefore prerequisites, dependencies and versions can be better controlled. 

But the integration, deployment and delivery started out really advanced and is currently on par with what’s out there. With lots of room for improvement.