Last month after successfully working in this way we decide we can trust ourselves and our systems and move to continuous deployment (or more accurately continuous release).
- Jenkins (LTS 1.509.1) with the following plugins
- Jenkins GIT plugin
- Jenkins MSBuild Plugin
- JENKINS MSTest plugin
- MSTestRunner Plugin
- CloudBees Build Flow plugin
We divide the deployment process into several jobs and connect them all together using CloudBee Build Flow plugin.
- build & test - This job build and test both debug and release configuration of our web application
- deploy - This job deploy our web application using MSDeploy
- end-to-end-tests - This job run end-to-end test on our production web application using Watir web testing framework
- continuous delivery - This job is a build flow job that simply run jobs 1,2,3 in order. If anything goes wrong it notify us.
What's still missing?
- Staging - We are working on deploy our web application into staging environment and run the end-to-end test on it. This does not guaranty success but it does catch errors.
In the next posts I'll go into details about each of the jobs.