Over the last few years CI/CD (Continuous Integration/Continuous Deployment) thanks to new technologies has become a lot easier. It should no longer be a major thorn in the side of developers. Many are moving to cloud platforms which has CI/CD built-in (Azure DevOps for example), others are using Kubernetes which clearly reduces a lot of the complexity around CI/CD. Still at many organizations I see Jenkins or other complex and often homegrown tooling. I certainly recognize this tooling was needed but in 2019 there are better, more streamlined options. Now I get it, our butler Jenkins has served us well, for many years, he has become part of our family. But just like the famous Butler, Alfred from Batman, he has gotten old and likely it is time to look into retirement.
In this article we will discuss and demonstrate how to use Ansible Tower and GitHub for CI/CD.
A video presentation and demonstration is available at following URL: https://youtu.be/lyk-CRVXs8I
Microsoft has wasted little time getting value out of their GitHub acquisition. They have now fully integrated GitHub and authentication into an already powerful DevOps platform called “Azure DevOps”. I have until this moment had zero enjoyment, setting up and maintaining CI/CD tooling usually involving some form of our dear butler, Jenkins. Nothing wrong with our old Jenkins but let’s face it, he is just overhead at this point, better to just put him to rest, he has earned it.
Azure DevOps has the following value:
- It’s in the cloud, consumed as-a-service
- Completely Integrated with GitHub
- It is free
- Authentication using GitHub user
- Don’t need to use it with Azure
- Supports basically every language, I am doing CI/CD with Go
- Simple yaml to configure no Groovy/DML Jenkins horror
- Yaml pipeline files auto-generated for your language (just needs minor tweaks)
- Your code is built, unit tests are run, you can do acceptance tests and it is setup in a few minutes
Java has been around a really, really long time. Certainly it continues to evolve and has evolved. Java has always been a “can do anything” programming language. It has more frameworks and middleware than there are stars in the sky. It is portable anywhere and of course probably 8 out of 10 developers today know Java to some degree. Given all of this though is Java the path forward?
Looking forward I think the clear trend is microservices and beyond. Therefore the question is a lot simpler, is Java the best path forward for microservices?