I’ve been developing Windows desktop applications for many years now, and the operations behind the development process always fascinated me. I mean matters like issues tracking, build machine, installer and deployments. Everything that involves in a developing a successful project, that’s not directly writing code.
In recent years buzz words like Continuous Integration and Devops popped up into consciousness, which partly describe this process.
I’m going to write here about the tools and technology stacks we have to choose and implement to create a successful ecosystem for your project.
In between buzz words, it’s a bit hard to understand what is continuous integration and what exactly we are trying to achieve.
One way of defining it is that continuous integration means to have an automated work flow, in which every time a developer checks in code, it will compile and build on a dedicated server. This dedicated server will also run tests and if the build fails, or if at least one of the tests fail, the check-in will be rejected.
Now let’s go a bit further and think about Deployment. By that, I mean the way you deliver your software to the customer. Let’s assume for now, you want to give him a setup.exe, which he can run on his PC and install the program.
Our dedicated CI server should also produce such a setup.exe file and even upload this file to some other server dedicated to published versions that the customer can download and install.
Out CI server is also there for the QA department, which needs to get product versions, test them, open bugs and get new versions with fixed bugs.
Part of this process which I described is called Continuous Integration. But, I also want to talk about the Deployment part which is a close cousin of the continuous integration and they both compose the ecosystem of the development process.