Continuous integration and continuous delivery have become mainstays in the development scene in the past few years, making them nearly a requirement for most development workflows. In recent years, new players have come into the market and brought new workflows and platforms to enable additional steps, automated testing and even automated deployment into the mix.
SEE: Hiring Kit: JavaScript Developer (TechRepublic Premium)
In this article, we’ll explain what continuous integration and delivery is, discuss what CI/CD means to your company and developers, and take a look at the top platforms for continuous integration and delivery.
What is CI/CD?
In the software development life cycle, developers push code into a Distributed Version Control System such as GitHub, GitLab, Bitbucket or some other platform on a self-hosted system or other system. A continuous integration platform sits in between this, looking for changes pushed into the DVCS and executes builds on the codebase when certain triggers are met. Continuous integration triggers could be based around individual code pushes to a particular branch, merge of code from a pull request or based on a time-based schedule (nightly builds, weekly builds, etc.).
The continuous delivery aspect of CI/CD allows software teams to easily and safely get builds into production environments by building code, testing the code and then getting those build artifacts into the production environment. With continuous delivery, builds are typically triggered manually or on a time-based schedule, tests suites are run and results are reported if there are any issues with the code; then afterward, artifacts are made available to ship into a production environment.
SEE: What is CI/CD? (free PDF) (TechRepublic)
Continuous integration systems are typically hosted platforms, but these can also be self-hosted systems for enterprise customers; these platforms integrate with most popular DVCS platforms, including GitHub. Being remote means that builds can be consistently triggered and don’t require local development machines to be configured with secret API keys or otherwise tied up running builds.
What are the benefits of using a CI/CD platform?
When you have a CI/CD system in place, developers automatically have test suites run, ensuring that each merge of a pull request has passed tests, which allows multiple developers to handle the build process and delivery to production more efficiently. All of these things ultimately lead to less buggy code and can result in less wasted time around rudimentary software development tasks when that time can be better spent on the development process itself.
CI/CD is an important aspect of any modern software development workflow, and it frees developers up to not worry about implementing build workflows on their development machines or need to worry about build actions — it can all be done automatically.
What are the most popular CI/CD platforms?
Jenkins
Jenkins is an open-source CI/CD platform that is based on Java and is by far one of the most popular options. It has a plugin architecture that means it is infinitely expandable to meet almost any CI/CD need you may have for your software development workflow. You can build web software, native software and mobile software projects on it, and it’s capable of running on nearly any server architecture including Windows, Linux and macOS. It can also be run from a Docker container, if preferred.
Jenkins has an extensive legacy, and it supports many configurations and is highly flexible; however, it does require a bit more setup time and finessing than many software teams may enjoy doing. If you’re willing to put in the time and effort of initially setting up Jenkins, it can prove to be a sustainable system that can do nearly anything you need for the cost of just operating a dedicated server for it. Ongoing maintenance is another cost that should also be figured in to any Jenkins setup that you may implement.
If you’re running and operating a build system platform for a security-focused application, then having a self-hosted option like Jenkins means you can more tightly control the CI/CD pipeline instead of relying on a third-party hosted service.
This platform is free and can be downloaded and installed from the Jenkins website. With any free product like Jenkins, you should always factor in the initial setup, maintenance needed and server costs associated with running your own instance of the software; depending on your needs and usage, these costs could outweigh a commercially available and hosted product like the others I cover in this guide.
Which businesses and users might benefit most from using Jenkins?
Jenkins is an excellent platform for businesses and users who prefer to run their own CI/CD platform locally on their own equipment due to security or legal precedents, who prefer to manage their own hardware and software stack, or if the software being built and tested on the CI/CD platform has specific hardware/software stack requirements.
GitHub Actions
GitHub Actions is a newer CI/CD platform from Microsoft that tightly integrates with its GitHub-hosted DVCS platform and GitHub Enterprise. GitHub Actions is built into each repository page as a tab and can be easily set up and run remotely and is included automatically on your GitHub.com hosted account or onsite enterprise accounts.
With a GitHub enterprise hosted platform, you can more tightly control your build pipeline and not worry about security risks affecting apps and systems that are hosted publicly online. GitHub Actions supports Linux, macOS, Windows and ARM runners (runners are platforms where code can be built).
Because GitHub Actions is tightly integrated with the DVCS, it can do additional things that Jenkins and other CI/CD platforms can’t. GitHub Actions can also run your code test suites automatically when pull requests are made and can be added as a check to ensure that a merge can only happen if and when a test has been run and passed successfully.
Pricing for GitHub Actions starts at the free tier for hosted GitHub accounts, and then goes up based on build minutes used and storage needed. Check the GitHub Actions pricing guide for more information on how to calculate pricing based on project needs.
Which businesses and users might benefit most from using GitHub Actions?
GitHub Actions is an excellent choice if your business has already committed to using GitHub as your DVCS, has all of your code stored in GitHub, and doesn’t mind your code is being built and tested remotely on GitHub’s servers (though an enterprise account is available if you prefer to run on your own hardware using GitHub Enterprise). GitHub can handle most common hardware/software stacks (such as macOS, Windows and Linux), but if you need a custom software/hardware stack that GitHub doesn’t support, you may need to go with another solution for CI/CD.
If you’re a nonprofit, GitHub has special pricing that you may be able to take advantage of that other CI/CD platforms may not offer.
CircleCI
CircleCI is known for its ease of use for getting up and running with a continuous integration build system. The company offers cloud hosting or enterprise on-premise hosting and integration with GitHub, GitHub Enterprise and Bitbucket for the DVCS provider.
CircleCI touts its 24/7 support for enterprise customers, plus extensions and re-usable integrations called “orbs” that help you get up and running quicker with the continuous build systems and allow you to customize your build environments in a way that you can’t with other platforms unless you’re hosting yourself.
CircleCI can work with builds for Docker, Linux, macOS, Android, Windows or self-hosted runners on a platform of your choosing. Like GitHub Actions, CircleCI has a free tier that features 6,000 build minutes per month on Docker, Windows or Linux (including Arm); if you need to build on macOS, you’ll need to upgrade to the $15 per month Performance Tier that includes unlimited build minutes and macOS support. For more details, read the CircleCI pricing guide.
Which businesses and users might benefit most from using CircleCI?
CircleCI is a great choice if you’re already integrated with GitHub or Bitbucket and prefer a more straightforward pricing model instead of being charged by build minutes like other hosted platforms. CircleCI also integrates with the most common runners like macOS, Windows and Linux; plus, it provides an enterprise license if you prefer to integrate with your own hardware and infrastructure. Like GitHub Actions, if you need to build and test on a specific hardware or software stack, CircleCI may not work for you – instead, you might need an alternative solution like Jenkins.
Features comparisons of Jenkins, GitHub Actions and CircleCI
Feature |
Jenkins |
GitHub Actions |
CircleCI |
Pricing |
Freely available |
Linux $0.008/min |
Free plans to $15 per month, and enterprise options available |
Support available |
No |
Yes |
Yes |
Self-hosted or on-premise hosting |
Yes |
Yes |
Yes |
Build environments supported |
Docker, and any platform that can install Jenkins with a Java environment |
Linux, macOS, Windows, Arm and containers |
Docker, Linux, macOS, Windows, GPU and Arm |
Which CI/CD platform should you choose?
Jenkins, GitHub Actions and CircleCI are the strongest CI/CD platform options in the industry right now, and you really can’t go wrong with any of them. Each of these CI/CD platforms has advantages and disadvantages depending on what your development team needs. These packages present myriad options available from self-hosted to cloud-based and a variety of supported platforms.
For longevity and hassle-free use, I recommend going with a cloud-based solution like GitHub Actions or CircleCI, but for a more security-conscious or do-it-yourself solution, Jenkins can’t be beat.