It’s no secret that at Harness, we love the open source community. We understand and honor the commitment to open source that many companies, teams, and people abide by. As such we wanted to take a moment to highlight some open source Continuous Integration tools. If you’re in the market for a new open source CI tool, we hope this resource will be helpful to you.
The Continuous Integration process turns a build into an artifact that is ready to be deployed. At least, that’s the modern definition. CI has been around since the 90s, and came to fame from Kent Beck’s Extreme Programming model. While the definition has changed over the years, there’s some cool history to it. If you want to learn more, head on over to trusty ol’ Wikipedia.
According to Martin Fowler’s canonical definition, any CI system does these four things:
In essence, following CI practices allows developers to merge and integrate their code to one central repository, after which automated builds and tests are run. These automated builds are triggered by an event, such as a code check-in, or a merge, or simply on a regular schedule. The end goal of Continuous Integration is to build and publish an artifact for deployment.
There are many Continuous Integration tools on the market, so selecting one that is the right fit for your environment and use case is not easy. Below are some open source CI tools to make your software development projects a breeze!
CC originated at Thoughtworks and became a widely used Continuous Integration server maintained by a large community. It is now abandonware unfortunately, but from its release in 2010, it became the pioneering product in this space. It was originally designed for the Java programming language, but was extended to support others in time. CC is a grandfathered Continuous Integration tool, but it sure was popular back in the day! Below is a graph describing how frequent contributions were at the height of its popularity.
When you think of open source CI, you’ll probably think of Jenkins immediately. Jenkins is the most well-known open source automation tool that is used for both Continuous Integration and Continuous Delivery. There is a huge, active community following, which leads to extra support, documentation, and features. Jenkins has over 1800 plugins available because of this community, which adds to the flexibility of the tool albeit rendering its maintenance somehow cumbersome and time and resource consuming. The sheer number of plugins makes customization easy and gives Jenkins the ability to integrate with almost any tool necessary for development.
While there is definitely a lot of good to Jenkins (mostly due to the ‘flexible CI tool’ factor we mentioned above), the reality is it’s a ten-year-old tool that wasn’t built to be cloud-native – it’s definitely not meant for agile teams. And while yes, the extensibility is very good, having to rely on scripts and plugins isn’t a good thing in itself. For one, plugin authors often abandon the development of their plugins (leaving you to scramble to find a new plugin or write your own). These plugins can create dependency chains, can introduce security vulnerabilities, plugin upgrades and updates, add a decent amount of toil, etc. We don’t feel comfortable recommending a product in a development environment that relies so heavily upon externally added extensibility. In fact, some of our own customers have referred to Jenkins as “a nightmare” and “a monstrosity.”
The list of legacy CI systems goes on and on, increasing the already-mature CI software development landscape. These all belong to the long tail of CI adoption for many reasons. Among them, we could highlight complex workflows, a cumbersome development process, isolation from version control systems, an unmaintainable CI server, lack of tight integration, etc. The tombstones read the names of Apache Continuum, Apache Gump, BuildBot, CDash… I apologize if I’ve described software projects here as pushing daisies, while in reality they are alive and kicking.
GitLab is a complete DevOps platform that provides source code management, CI/CD, security, value stream management, GitOps, and more. Its roots were as a source code management tool and Git repository, and it’s definitely an industry leader in that category. Their Continuous Integration and Continuous Delivery platform helps accelerate and efficiently improve the software release process.
GitLab’s CI capabilities (GitLab doesn’t have a modular offering, the platform is one single thing whether you want it for CI or not) can be delivered as SaaS or self managed. SaaS offering is limited to 400 CI free minutes. Once those minutes are consumed the paid for plans kick in. GitLab has a comprehensive user interface. All of GitLab’s functionalities – those designed to solve for CI problems and those designed for other purposes – live within the same interface making it slightly cluttered for a CI use case. There is definitely a learning curve to utilize the platform.
It can be the right solution for large organizations looking for a CI/CD tool with enterprise-grade support. Since GitLab is such a big product, there’s a lot of community support in the form of discussion forums, documentation, video tutorials, and more available out there if you run into issues.
While GitLab isn’t entirely free (it does have paid versions with far more features available), it does have an open core version that is free. While it probably wouldn’t suffice for large enterprises, it’s a good option for open source projects, small companies, or charitable organizations.
Tekton is an open source framework for creating CI/CD systems. It is Kubernetes-native and can be deployed and configured declaratively into existing clusters. Tekton installs and runs as an extension, and comprises a set of Kubernetes Custom Resources that define the building blocks that users can use to create and reuse pipelines. Although only limited to Kubernetes, it allows for standardization with built-in best practices, portability across multiple cloud providers and locations, and flexibility by abstracting the underlying implementation.
Tekton’s industry specifications around pipelines, releases, workflows, and other CI/CD components work well with other existing CI/CD tools as well. With Tekton, development teams can create and deploy immutable images, manage version control of infrastructure, perform easier rollbacks, and leverage advanced deployment patterns like blue-green and canary.
Harness’ self-managed Continuous Integration (also known as Drone.io) will always be open source and free. Drone CI is a container-native, event-based, multi-architecture, multi-OS platform for busy teams looking to tighten their software development life cycle.
Harness CI on-prem is container-native so all builds are isolated and all extensions are standardized. It also has around 150 containerized plugins. This allows for easy customization and adds extensibility to the tool. If a plugin a user is looking for doesn’t exist, they can create one and it can be as easy as writing bash/a shell script. To make it usable by others, the user can add it to the plugin registry website by sending in a pull request. That is the power of open source.
Our dev avocado 🥑, Jim Sheldon, created a nifty guide to get started with Harness CI on-prem. Basically, you’ll be able to get a feel of the product’s parallel execution with tests and scanners, from the version control system of your choice (in this case, GitHub), and last but not least, its friendly user interface to gain control over all your CI pipelines hosted in your own virtual machine or your premises.
We hope this piece on open source CI tools provides the insights you need to make a decision on a tool, but if you need more info and are considering a paid product as well, we do have a short list of the best Continuous Integration tools that you can read. And, if you’re looking for a full CI/CD platform, check out our free eBook, the CI/CD Buyer’s Guide to see in-depth insights on many tools on the market.
Enjoyed reading this blog post or have questions or feedback?
Share your thoughts by creating a new topic in the Harness community forum.