Software development and automation of the process have advanced a great deal in recent years. There are now many different platforms you can utilize to automate your software development workflow. Utilizing one of these CI (Continuous Integration) and CD (Continuous Delivery) tools is a best practice for the software development lifecycle. It helps automate things when new code is added to an SCM platform such as GitHub or BitBucket.
Two of the most popular CI/CI platforms today are Circle CI and Jenkins. In this post, I will compare the two platforms and lay out the differences between each, and provide a list of what I believe are the pros and cons of each. Let’s get started!
Check out the related YouTube video:
Circle CI
Circle CI is one of the most popular cloud-hosted CI/CD providers. It was founded in 2011 and is based in San Francisco, CA. Circle CI is among the most popular CI/CD platforms for open source projects. It has support for a variety of languages with multiple pricing plans available to suit most peoples’ needs. Circle CI is currently only available for GitHub and BitBucket.
Configuration
Circle CI can be configured just by creating a file in the root of your SCM repo called .circleci/config.yml
. Details can be found here on how to configure this file and all the available options. This allows for the ability to copy the configuration file to multiple repositories and just edit the relevant details specific to that repo and everything will work.
Some CI/CD tools require setting up the process manually to start with. Then each time you create another project, you have to go through those same steps to set it up each time. That is not really ideal as some steps could be overlooked or missed between projects. This can cause some of your automated processes to not work correctly, and thus possibly cause issues down the road if they go unnoticed.
You can find steps to set up Circle CI with GitHub here. You can find steps to set up Circle CI with BitBucket here.
Pricing
Circle CI is always free for open-source projects. For projects with private repositories, Circle CI has a free plan that has limited “credits” per week. You can use this free plan forever if your projects are not constantly running builds. If your projects only need a few builds a week, this is a great option!
Beyond the free starter plan, Circle CI pricing is based on what they call “credits”. They do not have a paid plan that offers unlimited builds. This is something to keep in mind if you have many projects that are running builds on a consistent basis as this could spike the costs for your team if you do not estimate correctly. The paid plan starts at $30/month. You can find all pricing details for Circle CI here.
Supported Languages
You can find a list of programming languages Circle CI supports here.
Jenkins
Jenkins is one of the oldest CI/CD platforms available which started back in 2005. It has been installed millions of times. This makes it one of the most, if not THE most, popular CI/CD platforms in use today. Jenkins has over 1500 plugins to choose from to customize your CI/CD needs. It is open-source and thus does not cost anything for the software itself. The only cost involved is the infrastructure you run it on.
Whereas Circle CI has both cloud-based and on-premise enterprise solutions, Jenkins is only available to be run on-premise. They do not have a Jenkins-hosted cloud-based CI/CD service that you can subscribe to. There are some third-party cloud-based offerings such as Google Cloud’s Jenkins Cloud offering and Cloudbees Jenkins Platform.
Jenkins allows simultaneous builds to be run concurrently by default if you have the infrastructure to support it. Numerous large companies use Jenkins for their CI/CD needs.
Although Jenkins does not have a native cloud-based offering directly, there are a few hosting providers that offer such an offering. One of the major draws of Jenkins, however, is the customizability using the multitude of plugins available.
Pros and Cons
Circle CI Pros
These are the benefits of Circle CI over Jenkins:
- Cloud-based offering
- No need to pay for, configure or maintain your own infrastructure
- Large user base and well-vetted
- Forever free starter plan for projects with private repositories
Circle CI Cons
- Not as many plugins available to simplify the customization of CI/CD flow
- Only available for repositories stored in GitHub or BitBucket
- Not unlimited builds. Must keep purchasing credits which are used at varying rates based on OS and build image size
Jenkins Pros
- Open-source software, and thus well vetted
- Over 1,500 plugins to help simplify and customize CI/CD flow
- Completely free software, only need to pay for the infrastructure you want to allocate
- More widely used than Circle CI
- More community-based support
- More SCM integrations than just GitHub and BitBucket
Jenkins Cons
- No cloud-based subscription offering directly from the vendor themselves. Requires third-party platforms hosting Jenkins in the cloud
- Have to pay for, configure, and maintain your own infrastructure to run Jenkins
- Bit of a learning curve to know which plugins to use for different scenarios
Conclusion
The best platform for you all depends on your specific needs. If you do not have a large monthly budget or extra man-hours to spend on infrastructure issues, then a cloud-based provider such as Circle CI will be a better choice. Just note that Circle CI only integrates with GitHub and Bitbucket as I write this (June 2020).
You would probably be better off using Jenkins for now if using SCM other than GitHub or BitBucket. Try one of the third-party cloud-based Jenkins offerings referenced earlier if on a budget.
You can also check out my posts comparing Travis CI vs Jenkins and Travis CI vs Circle CI.
Please let me know which platform you think is better or that you prefer using and why in the comments!