Background: For my particular client, Autoweb, the main challenge was to automate deployment on a Window-based environment. While we had done so on Linux environments, this was new for us.
Goals: Automate deployment process integrating CI/CD.
Solution & Results: As we had previously used Jenkins Pipelines and Ansible on Linux environments, we concluded it was the best approach to maintain the standard pipeline jobs we already had. So we implemented Ansible on Windows based environments using WinRM to give Ansible control over Windows Servers. All of this was orchestrated by a Linux-based Jenkins Main Server, and a bunch of Windows/Jenkins agents to do the builds and QA tests.
With all of this in place, we were able to write Jenkins pipelines as we usually do, but for Windows Deployments. Jenkins Pipelines served us very well for defining different stages:
I love how flexible and powerful Jenkins is. It has limitless capabilities, and is the perfect choice for an automation platform.
All of this occurs in a very organized and standardized way, which is easy to replicate within similar projects and also very easy to troubleshoot.
The Jenkins capabilities we relied on for this project included: Jenkins Pipelines, Jenkins Ansible Plugin, Git plugin, and MSBuild Plugin. One key feature we deployed was Jenkins Blue Ocean, since a main requirement was the need for approvals between steps. Blue Ocean was key to give a pretty decent user interface for project managers and product owners to review and approve any changes or deployments. Jenkins DSL Jobs Rules is also great since it makes it possible to parametrize every job and create jobs on-the-fly in an automated fashion.
I love how flexible and powerful Jenkins is. It has limitless capabilities, and is the perfect choice for an automation platform.
With Jenkins: