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.
"I love how flexible and powerful Jenkins is. It has limitless capabilities, and is the perfect choice for an automation platform. “
*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:
Source Code Pull
Build
Package
Deploy
Pool Restart
Test
Notification
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:
deployments are now consistent and repeatable
deployment time decreased from weeks to 8 minutes
replication across similar projects is easy
standardized deployments can be done under the same scheme within Linux and Windows environments
rollback strategy is now simple to execute