If you are designing an application that uses microservice registration AND continuous integration then this post is for you! If not, get with the program, you are a fossil.
Sunday night, I posted about the Erlang Consul client I wrote for our Behavior Driven Development (BDD) testing infrastructure. That exposed a need to run a Consul service in the OpenCrowbar Travis-CI build automation that validates all of our pull requests. Basically, Travis spins up the full OpenCrowbar API and workers (we call it the annealer) which in turn registers services in Consul.
NOTE: This is pseudo instructions. In the actual code (here too), I created a script to install consul but this is more illustrative of the changes you need to make in your .travis.yml file.
In the first snippet, we download and unzip consul. It’s in GO so that’s about all we need for an install. I added a version check for logging validation.
before_script: - wget 'https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip' - unzip "0.4.1_linux_amd64.zip" - ./consul --version
In the second step, we setup the consul service and register it to itself in the background. That allows the other services to access it.
script: - ../consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul &
After that, the BDD infrastructure can register the fake services that we expect (I created an erlang consul:reg_serv(“name”) routine that makes this super easy). Once the services are registered, OpenCrowbar will check for the services and continue without trying to instantiate them (which it cannot do in Travis).
Here’s the pull request with the changes.