Build, Test, Release
Continuous Delivery with Go!
At CVsIntellect we wanted to automate the whole release process to give our team (that is distributed across the globe) means to communicate what’s happening on the ground. Everyone in the team be it a Developer, QA or Manager should be on the same page.
To do this we would need a combination of tools. We would need:
- Hosted VCS to support distributed development
- Issue tracker to organize features & bugs, plan a release & prioritize work
- CI/CD infrastructure to build, test & release our software
In this post we will talk about our CI/CD setup. We use maven for dependency management, build, test & release. We knew setting up a CI/CD infrastructure wouldn’t be hard!
A couple of people on this project work on ThoughtWorks Go team. ThoughtWorks recently announced their CI/CD tool “Go” as free & open-source. We decided to give it a shot!
We setup a Go instance on Digital Ocean. Got Go to:
- Run our tests and upload reports which are parsed by Go for reporting.
- Deploy our app to QA & production environments hosted on Google App Engine.
We love the power it gives to everybody on the team. After a few days of using Go we already see:
- Everybody on the team knows how to deploy a build. Its just a push of a button!
- Developers know if the build is red/green. Wait till the build is green to push.
- QAs know what build is available on what environment. They know if a particular build is deployable, i.e. if everything is green.
- Managers know what changes are being deployed in every release.
Today they open-sourced code for ‘Go’. We would love to contribute to Go in any way possible. We are planning to write a Google App Engine plugin! Go CD!