Apr 16, 2020

The Pros and Cons of Jenkins vs Azure DevOps

By ByΒ Sandhya Mungarwadi, QA Engineer, YML
The Pros and Cons of Jenkins vs Azure DevOps

In order for the engineering community to better understand the best tools to choose for their project needs, they first need to grasp the value of continuous integration and continuous delivery tools.

The following document depicts the pros and cons of CI/CD tools (Azure DevOps and Jenkins). Before that, let’s understand what CI /CD means.

  • Continuous Integration (CI) is a development practice where development teams make small, frequent changes to code. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

  • Continuous delivery (CD) is actually an extension of CI, in which the software delivery process is automated further to enable easy and confident deployments into production at any time.

Azure Pipelines

Azure Pipelines is a service that caters the need for creating pipelines on Azure Cloud Platform. It supports continuous integration (CI) and continuous delivery (CD), hence constantly and consistently tests and builds your code and deploys it to any target by defining a pipeline.

Pros

πŸ‘ Usability (Great User Interface) — Being a new user, it was easy to pick up and go with this tool . We can start with the classic editor which provides an intuitive GUI to create and visualize the integration steps. Later, the user you can define those very same steps in YAML. Hence, we can define the pipeline using two features i.e. Classic Editor and YAML.

πŸ‘ Categorized Built in Tasks — The tasks are categorized based on the nature of operation. ex: Build tasks, Utility tasks, Deploy tasks etc. This makes easy for the user to add the desired/specific tasks to their pipeline.

πŸ‘ Group Tasks — It allows you to encapsulate a sequence of tasks, already defined in a pipeline, into a single reusable task ,just like any other task.

πŸ‘ Configuring CI/CD Pipeline as Code — Using YAML we can achieve this. Reference to understand the hierarchy of YAML file-

πŸ‘ Request and Add Tasks to your Pipelines — It has a lot of build-in tasks, yet you can download extensions/tasks from the Azure DevOps marketplace.

πŸ‘ Microsoft Hosted Agents — Azure Pipelines offers cloud hosted build agents for Linux, Windows, and macOS builds. You can have a look as to what software are installed on the agent using the following reference link.

πŸ‘ Any language, any platform, any cloud — Build, test, and deploy Node.js, Python, Java, PHP, Ruby, C/C++ , .Net, Android, and iOS apps. Run in parallel on Linux, macOS and Windows. Deploy to Azure, AWS, GCP or on-premises

πŸ‘ Azure Pipelines — Provide unlimited build minutes to all open source projects and up to 10 concurrent jobs across Windows, Linux and macOS.

πŸ‘ Azure Pipeline — Analytics are provided at the end of each run with parameters like rate and duration of run.

Cons

πŸ‘Ž Integration with non-Microsoft is difficult — Azure DevOps should provide easier integration with other product lines to improve acceptability.

πŸ‘Ž Azure Pipeline — Workflow is straightforward (can’t set if-else or switch-case constructions). This makes it more difficult to develop complex workflows.

πŸ‘Ž The deprecated tasks/extensions — They are not removed from the marketplace.

πŸ‘Ž Documents are not Up To Date.

Jenkins

A Jenkins pipeline is a suite of plugins that supports implementing and integrating continuous delivery pipelines into Jenkins.

Pros

πŸ‘ Jenkins is open sourceeasy to install and free.

πŸ‘ Platform Independent — Available for all platforms and different operating systems, whether Mac OS X, Windows or Linux.

πŸ‘ Rich Plugin — Jenkins comes with a wide range of plugins.

Cons

πŸ‘Ž Outdated UI — Its interface seems a bit outdated and not user friendly as it doesn’t follow modern design principles.

πŸ‘Ž Scripted Pipelines — Must be programmed in Groovy.

πŸ‘Ž Though it’s rich in Plugin, a lot of plugins are not straightforward or unstable — Even for a basic tasks, plugins needs to be installed.

πŸ‘Ž There’s no YAML interface for Jenkins Pipelines.

πŸ‘Ž Jenkins doesn’t provide any analytics (there are plugins but they are not enough) at the end of each run.

πŸ‘Ž Needs better documentation.

Conclusion: Who is the winner?

It all depends on the Team/Project need . We know Jenkins is more flexible to create complex workflow indeed Azure DevOps is faster to adapt. It’s very rare that a single CI tool will suffice for all scenarios.

If we decide to use both the tools, then we should know that Azure Pipelines supports integration with Jenkins.