vs Jenkins: Battle of the CI/CDs

By Eyal Katz December 15, 2020

Continuous integration and delivery are necessary in any production level software development process. CI/CD are more than just buzzwords. Rather, it is a fully-fledged methodology of systematically building and delivering applications in a timely and sustainable manner.

In short, CI/CD is a keystone in automated processes in software development. It’s goal is to eliminate the need for manual intervention whenever the team needs to launch or update an app. 

Sure, this all sounds nice – but what exactly is CI/CD? Where do Jenkins and CircleCI fit into the picture?

What is CI/CD?

The ‘C’ stands for continuous. This part of CI/CD represents the idea that each selected task is automated in some manner. This may be through auto-detection against predefined flags or time-based jobs.

The ‘I’ and the ‘D’ parts of CI/CD abbreviation represent the different types of processes that are involved in getting an application up and running. These are ‘integration’ and ‘delivery’. There is also another category of CD, which stands for continuous deployment.

Here’s a quick rundown of what each one does.

Continuous integration

Continuous integration deals with how code is merged between the different hierarchy of code branches such as sandbox, feature branch, user acceptance, and eventually the production branch. 

The process of building in continuous integration involves a validation process that checks the build and running automated tests against it.

Continuous delivery

Continuous delivery – or the ‘CD’ part of CI/CD, is the next step of continuous integration. At this stage changes are automatically deployed to the assigned server. This can be achieved via an automated process when change is detected, or through a manual click of a button if the delivery is blocked for release at a particular time.

Each release can be automated against a daily, weekly, fortnightly, or at whatever schedule you want or need. This allows the development team to integrate code and deploy in small batches, making it easier to detect issues that slipped through the automated testing phase.

Continuous deployment

On the surface, continuous deployment sounds similar to continuous delivery. However, it’s different in that there is no human intervention at all. In contrast, continuous delivery may still have certain manual stops that require the review of a software developer before it moves onto the next step of the delivery process. 

This is good for an accelerated feedback loop. It helps free developers from dealing with the process of delivering releases on any particular day, and lets them focus on building great software.

Continuous deployment relies completely on automated tests and is the alternate ‘CD’ acronym in CI/CD.

Where does Jenkins fit in?

For programming languages like Java, a build process is necessary before an application can be deployed. The packaging system can take time. The manual clicking and decision-making on events can also sap a developer’s productivity. Missing a step or two can cause future bugs to go undetected or result in an unsuccessful deployment. 

This is where Jenkins comes in.

Jenkins is an open-source automation server that allows software developers to set up scripted detections, build packages, run tests and deploy them to the server. In CI/CD, Jenkins takes up a good portion of the CI functionality.

Like many other FOSS solutions, Jenkins relies on a collection of plugins to deliver each aspect of continuous integration. These include building, continuous testing, version control system, configuration management, continuous monitoring, and continuous deployment through a third-party solution like Ansible.

One of the advantages of Jenkins is that once it’s set up, new developers to the team don’t have to learn the operations part of development. This allows them to focus on building the application and not worry about server details or deployment processes. This can be useful, especially if your server is elastic in nature.

What is CircleCI (in a Jenkins world)?

CircleCI is similar in concept to Jenkins, except it is a proprietary solution with a freemium licensing model. CircleCI is used by major companies such as Samsung, Spotify, Lyft, Ford Motor Company, and Coinbase.

Despite being a paid solution, CircleCI heavily supports the open-source community, offering up an extra 400,000 credits per month for open source builds. React, Vue.js, Helm, PyTorch, and OpenMCT are a few of the major open-source projects currently using CircleCI.

So what is it that makes CircleCI special? The answer lies with their toolchain and cloud hosting offerings.

Jenkins has been a staple in the continuous integration world since 2011. The console is simple and minimalistic, but highly dated and somewhat clunky at times. CircleCI has a reportedly better user experience and supports declarative YAML for the setup process.

Maintenance of CircleCI itself is automated and users have the ability to employ new features as soon as they are released. Jenkins, however, requires manual support of individual plugins, which may have varying release cycles and support levels.

Jenkins relies on third-party integrations for features and performance, while CircleCI is optimized to allocate CPU and RAM to the correct spaces with minimal intervention

From a security perspective, by default Jenkins grants every new user full access and so manual configuration of permissions is required to secure the CI pipeline. CircleCI works on role-based authentication and automatically adopts permissions for new users.

Jenkins vs CircleCI

For large applications that require frequent builds, Jenkins may sound like a good idea – until maintenance is required. Despite freeing up developers’ time spent on integration processes, it still takes a considerable amount of hours to maintain updates, security protocols, and any changes on Jenkins.

CircleCI simplifies this and takes the maintenance factor away, reducing time sinks to tasks that need manual intervention if you were to use Jenkins.

Here is a quick side by side comparison of Jenkins and CircleCI.

Ease of useCan be harder for new DevOps to orchestrate and navigateSimplified process for integration
HostingSelf-hostedSelf-hosted or managed cloud hosting
Community supportStrong community support over 43,000 questions and answers available on Stack overflow for common issues and integration questionsSmaller community but highly detailed documentation that fills in most of the gaps
PopularityPossibly the most popular CI tool because it is completely freeHighly regarded and used by big companies like Samsung, Spotify, Lyft, Ford Motor Company, and Coinbase
Third-party and cloud integrationDependent on plugins. There are over 100 plugins to suit any needs required by continuous integration – but they’re run by 3rd parties, meaning that the final Jenkins configuration for your application may have a staggered update release cycle.Fully supported by CircleCI and any updates are automatically enjoyed by the user. There is no need for a DevOps team member to maintain versions or ensure that everything is up to date.
CostFree. But ancillary costs come in through hosting. Automated scalability needs to be factored and architectured into the Jenkins’ hosting servers for cost efficiency.CircleCI offers scalable hosting on their cloud orchestrations. The free version lets you run 1 job at a time. Alternatively, it’s $30 per month of up to 80x concurrencies with Docker layer caching capabilities. To run CircleCI on your own server, it’s $35/month per user with an annual plan.

It’s easy to say that CircleCI appears to be a winner. However, unlike Jenkins which is completely free and open-source, CircleCI is a proprietary solution

Open source solutions tend to have larger community support by nature, allowing for a high level of shared knowledge across the different potential problems that may crop up. This isn’t to say that CircleCI doesn’t have a support system. The content offered by CircleCI is highly detailed with events and webinars to help fill in knowledge gaps.

While Jenkins is completely free, the side cost of running it on your own servers can bloat up the actual cost if the server is not fully optimized. Optimization also takes a developer’s time, resulting in a different kind of cost for the business. 

CircleCI takes these factors away and simplifies the bottom line cost of investing in continuous integration for your software development process. You can use their cloud hosting solutions and maintenance is performed by CircleCI.

So which should you use for your continuous integration pipeline? It depends on how hands-on you want to be with your software integration processes. 

Although Jenkins is ‘hands-off’, it is ‘hands-on’ in a different way – from manual updates to optimized server orchestrations. CircleCI is what ‘hands-off’ continuous integration actually looks like, but for a small fee.

Related articles

Top 10 Cyber Threat Intelligence Tools for 2022

Top 10 Cyber Threat Intelligence Tools for 2022

Cyber threat is soaring on the list of the gravest challenges plaguing organizations today. This is partly an outcome of developers including security in their development

7 Battle-Tested Tips for Using a DAST Scanner

7 Battle-Tested Tips for Using a DAST Scanner

While modern web applications are growing in complexity, the threat landscape is also constantly evolving. It can be difficult for developers to identify and remediate vulnerabilities

Top 9 Vendor Risk Management Software for Infosec Pros in 2023

Top 9 Vendor Risk Management Software for Infosec Pros in 2023

No single organization can master all trades, which is why their success hinges heavily on their vendors. And if vendors are crucial for your business operations,

Stop leaks at the source!