Automate Deployments In An On-prem Data Center
Submitted By Jenkins User Oscar Palacios
Using Jenkins as the backbone of its new platform, these developers were able to automate IIS and .Net Deployments for AutoWeb’s data center.
Organization: Autoweb, https://www.autoweb.com/
Programming Language: Python
Platform: Linux, Windows
Version Control System: GitLab
Build Tool: Scripting
Community Support: Jenkins.io websites & blogs
Windows? Linux? Jenkins automation platform serves both.
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:
- Source Code Pull
- Pool Restart
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.
- 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