When I started my new job, I was handed a project that no one knew where the production source resided. In source control, there were three or so versions of the project, but none of them seemed to match up with what was running in prod. Ouch! "How can we prevent this?", I thought. Well one way is to have it automatically built every day (or every time it is changed) pulled from a VCS repository. Then, always release from the automated build. I started looking into CI as a build server initially. We have a unique environment where we are heavy in Java and C++ with some sprinkles of C, Python, Delphi, C#, and Groovy. Flexibility was our top priority. We started looking at our options. We came across a few TeamCity, Jenkins (Hudson at the time), and CruiseControl. Jenkins seemed like it had the most plugins for every language which made it the most flexible. Now, Jenkins is used for running the build, unit tests, code coverage, profiling, generating profiling...
My latest take on software and technology - of my opinion only. I like to dabble in all sorts of languages and tools, and I would love to share some of the fun stuff with everyone. Most recently, I have been programming in Golang using Kubernetes, Docker, and AWS technologies like Kinesis, and DynamoDB. I love building distributed systems that are scalable, performant, and operational ready. In the past, I have used Java, Python, C++, C# and a variety of other languages.