Making Ticketing Systems Useful


As software engineers we’re all guilty of using ticketing systems as expensive todo lists. We transition tickets from todo to in progress to done, but rarely go beyond that functionality. We may have nice integrations which link back to our version control system, or open some dialogue with fellow developers, but thats often the limit of our usage. I’ve recently started using the ticketing system as my personal journal. In my opinion, a ticketing system should include a record of the trials and tribulations involved in delivering a feature/issue, not just the about our interpretation of the issue/bug.

Parallelise Vagrant Up With Make


Spinning up more than one Vagrant box can be slow and tedious. Below is a solution for speeding up the vagrant up process when you need more than one box and Docker isn’t a valid option. Annoyingly, this solution requires a Vagrantfile per machine, and wont work if you put loops in your Vagrantfile. Here’s my folder structure: . ├── Makefile └── vagrant ├── node-1 │ └── Vagrantfile ├── node-2 │ └── Vagrantfile └── node-3 └── Vagrantfile The Makefile is where the magic happens…

Gradle - always use settings.gradle


I had an issue today where I was working with Jenkins and my release package was given the same name as the Jenkins job. For those of you familiar with Jenkins and the Git plugin, you will know that the workspace is given the same name as the job name, and the source is downloaded into the workspace. What you may not have known is that Gradle infers the name of the project from the root dir name.

My favourite Jira filters


Anything Assigned to Me Personally This filter picks up any items that slip through the built in filter. assignee = currentUser() AND status != Closed ORDER BY Rank ASC Assignee Was! Gives you a list of tickets you have beed an assignee on since the start of the month. assignee was currentUser() after startOfMonth() Recently Resolved project = <project_name> AND issuetype = Bug AND resolved >= -7d

Vagrant, Amazon EC2, Docker and Microservices pt4.

              · · · · · · ·

The Microservice For this tutorial I’m going to use a spring boot application that will help us prove the concepts behind this tutorial. There are loads of microservice frameworks to chose from, but for this tutorial we will use Spring Boot. Maybe in the future I will look at trying out some other popular frameworks. Links to the Spring guide are given at the bottom of this tutorial. At this point we could cheat and do everything in Gradle.

Vagrant, Amazon EC2, Docker and Microservices pt3.

              · · · · · ·

Part 3 - a bit of back pedaling After thinking about the ‘hack’ I put in to get Puppet installed on the box before I could use it, I felt a little dirty, and decided that maybe Puppet wasn’t the best decision after-all. So, the problem is that I need an agent installed before I can provision my box, but I’m trying to automate the provisioning - catch 22. Here’s where Ansible has really stepped up.

The GradleBuild task


task myTask(type: GradleBuild) { } If you have ever imported another build using apply from: "${rootDir}/gradle/publish.gradle" then you will appreciate how its a little difficult to know exactly what has been applied to your build by said apply action. I often use this pattern when I want to clearly seperate the parts of my build. In my build scripts you may see something like: apply from: "${rootDir}/gradle/sonar.gradle" apply from: "${rootDir}/gradle/acceptance-testing.

Vagrant, Amazon EC2, Docker and Microservices pt2.

              · · · · ·

Part 2 In the first part of this tutorial, we showed how to use Vagrant to automate and manage an Amazon EC2 instance. We defined a simple Vagrantfile to specify certain attributes for an instance to run, and got it running using Vagrant’s command line tools. In this part of the tutorial, we’ll be using Puppet to define and automate the configuration details for our instance. This way, whenever we start up the environment with vagrant up, it will be set up to run Docker without any additional manual configuration.

Weekly Links Roundup


Vagrant How to deploy on Amazon EC2 with Vagrant Automated Deployment of AWS EC2 Instances With Vagrant and Puppet Docker baseimage-docker Noteworthy devops bookmarks

Dependency Management - Modeling Suppliers and Consumers pt.1

              · · · ·

Dependency management has come a long way over the past 10 years, but I believe it has some way to go before we can say the problem is solved. Consider the scenario where you have developed a library which inadvertently introduced a severe security vulnerability. Because your organisation believes in reuse it has been used in many different projects. The Maven POM (Project Object Model) does a good job in providing us with meta-data about the modules which are suppliers to a project, but it doesn’t capture information about who the consumers are.