GETTING STARTED WITH CI/CD, PART 2 OF 2

We highlight the best pipeline tools on the market. Some are all-in-one solutions while others are customizable to a particular SDLC phase

post-image

After we covered the foundations of Continuous Integration and Continuous Delivery (CI/CD) in our first thematic article, today we will be talking about some popular tools to build and manage pipelines.

Without further ado, here are some of the popular tools we had the chance to review:

Jenkins

Jenkins is a free, open-source software based on Java. Presently, it is one of the most popular CI/CD tools. It features continuous delivery and integration with real-time testing and reporting. It also comes with a plethora of different plugins that can be integrated to make it even more powerful and versatile.

  • Available for Windows, Linux, and macOS platforms.
  • Free and open-source hence, it is preferable for startups and large-scale organizations.
  • 19.2K Star & 7.5k Forked Repo on GitHub.
  • Highly extensible.
  • It has a thriving plugin ecosystem (1500+ plugins) and a best-in-class community.
  • Integrates with popular cloud platforms such as AWS, Google Cloud, Azure, Digital Ocean, and more.

TeamCity

TeamCity is a sub-product of JetBrains, and like Jenkins, it is open-source and written in Java . One of its strengths is that it integrates perfectly with Docker and Kubernetes. The latter are solutions for building and deploying containerized apps and testing them in virtual environments. TeamCity is free to use for open-source projects and offers small teams an easy option to integrate with Azure DevOps and Jira Software Cloud.

  • Highly extensible and can be customized for reusing a project’s settings to a sub-project.
  • It can run parallel builds, providing the flexibility to run builds simultaneously on different builds and environments.
  • Pipelines in TeamCity are defined using Kotlin-based DSL (Domain Specific Language).
  • Integrates with Docker, Azure DevOps, Maven, NuGet, and more.
  • Its on-premise variant integrates with popular cloud platforms like Google Cloud, AWS, VMWare vSphere, and more.
  • It provides powerful features that enable running history, viewing test progress (and history) reports on-the-fly, and adding builds to favorites.

GitLab CI

If your development team hosts code in the GitLab repository, using this tool for DevOps engineering is a clever choice. It allows DevOps developers to review the code, deploy, integrate and deliver from a single dashboard.

  • GitLab CI offers developer APIs. Using them, your developers can create a deeper integration into the products.
  • It is available for widely-used platforms like Windows, Linux, and macOS.
  • GitLab CI’s web application has a user-friendly interface.
  • GitLab CI issues parallel builds by splitting a single build into multiple machines to minimize the build time.
  • The caching mechanism in GitLab CI saves time when jobs are running. You can share the cache across the same branch and different branches, and it is possible to disable the cache on specific jobs. With so many GitLab CI options, it is possible to leverage the caching mechanism on a need basis.
  • Jobs in GitLab CI can run sequentially in parallel. It also offers the option to define a custom pipeline.
  • Migration from a tool like Jenkins or CircleCI to GitLab CI is easy.
  • GitLab CI is easy to use as builds can be triggered through GitLab CI’s shell executor (similar to any terminal-based program).
  • Building an automated testing pipeline with GitLab CI/CD & Selenium Grid is simple.

Travis CI

Thanks to its enhanced level of security, Travis CI is one of the top choices for enterprise development. The platform integrates perfectly with Lambda Test to streamline the process of DevOps testing across different browsers, platforms and environments.

Like Jenkins, Travis CI is an early market entrant when it comes to pipeline tools. At first, it was launched for open-source and after that it was adjusted to cater for closed-source projects.

Written in Ruby, Travis CI is one of the best CI/CD tools for open-source & enterprise-level projects, especially if your projects are in GitHub or Bitbucket. However, like CircleCI, Travis CI has different offerings for the open-source community and enterprises that intend to use Travis CI on their private Cloud (or self-hosted platform).

  • Travis CI supports a range of programming languages (i.e., a total of 30), including Java, C#, Julia, Python, and more.
  • Enterprises looking for more privacy and secured solutions can opt for Travis CI Enterprise, a self-hosted tool that seamlessly integrates with GitHub and Bitbucket.
  • CI/CD pipelines use a proprietary YAML syntax, with seamless integration with GitHub Enterprise tools.
  • You can use the Cloud (or SaaS) variant of Travis CI for open-source projects and enterprises with small team sizes.
  • It provides runtimes on popular platforms like Linux, macOS, and Windows.
  • The build matrix feature in Travis CI lets you perform parallel builds on a range of combinations comprising different environments, languages, and runtimes.
  • Travis CI Enterprise supports integration with popular cloud platforms like AWS, Google Cloud, Kubernetes, Azure, and more.
  • Integration with cross browser testing tools like LambdaTest helps perform testing across different browsers, platforms, and devices (emulators).

CircleCI

Some people say it is the best CI/CD tool to streamline DevOps automation and software deployment processes. With it, workflows can be split, shared and reused across multiple containers.

CircleCI excels in realizing CI/CD for open-source and large-scale projects. CircleCI Cloud is its cloud-based offering, whereas CircleCI Server is its on-premise (or self-hosted) solution.

It supports languages that can be built on Windows, Linux, and macOS platforms. It is easy to set up and uses a proprietary YAML syntax for its pipelines. In 2019, Forrester Wave named CircleCI as a leader in Cloud Native continuous integration.

  • Easy to set up and can be used with popular version-controlling systems like GitHub, Bitbucket, and more.
  • It offers CI/CD pipelines as ‘Workflows.’
  • It supports the majority of the popular programming languages out of the box.
  • To reduce the build time, builds can be split and balanced across multiple containers.
  • Parallel testing in CircleCI helps in running tests in parallel across different executors.
  • Tests can be separated using timing data that further helps reduce the time involved in test execution.
  • CircleCI Server can be integrated with popular third-party tools like GitHub Enterprise, LambdaTest, Coveralls, and more.
  • CircleCI Server supports widely-used cloud platforms like AWS, Google Cloud, Azure, and more.
  • CircleCI Orbs, which are reusable snippets of code, help automate repetitive processes and accelerate the integration with third-party tools.

Bamboo

Bamboo is a popular tool for Continuous Integration (CI). It is an enterprise product developed by Atlassian, the organization behind Jira, that provides the facility for performing builds, tests, and releases in a single window.

It works seamlessly with Jira and with popular SCM tools like Bitbucket. In addition, it is available for deployment on popular platforms like Windows, Linux, and macOS. Like other popular CI/CD pipeline tools, Bamboo supports many programming languages and technologies like AWS, SVN, Git, and more.

  • Bamboo offers seamless migration from an open-source option like Jenkins to its platform.
  • It has built-in integration with Jira Software and Bitbucket server.
  • Bamboo can integrate with popular tools (or platforms) like Docker, AWS, and more.
  • It can realize parallel builds by executing builds on remote build agents. It can support up to 100 remote build agents and parallel test batches on the agents.
  • Bamboo is available in self-hosted and cloud-based variants.
  • Based on changes in the repository, Bamboo can trigger the builds, and you can subsequently send push notifications from Bitbucket.
  • Bamboo can be a great CI/CD tool for low-code development, as you can see in this Atlassian Bamboo tutorial for Oracle APEX developers.

GitHub Actions

Introduced in 2018, GitHub Actions is a comparatively new tool for performing the CI/CD. With GitHub Actions, you can easily create custom SDLC workflows in your GitHub Repo directly. This can be done using different tasks/actions, which can run on certain events automatically. Below are some more reasons why developers love this tool.

  • You can create, share, reuse, and fork your software development practices.
  • It is fully integrated with GitHub, making it manageable from a single place.
  • You can perform multi-container testing by adding support for Docker.
  • You can choose from multiple CI templates or even create your own.
  • Include 2000 free build minutes/month for all your private repositories.

Azure DevOps

It is almost an all-in-one solution developed by Microsoft. With it, you can use Azure Pipelines, Visual Studio Team Services (VSTS), and Software Delivery Services already built-in.

Azure DevOps by Microsoft Azure presents a simple process for creating a continuous integration (CI) and continuous delivery (CD) pipeline to Azure. In addition, it includes advanced capabilities that are streamlined to accelerate the software development process. These capabilities include features from Azure DevOps services like Azure Pipelines, Visual Studio Team Services (VSTS), Software Delivery Services, and more. Now, you can start running your Selenium tests in the Azure DevOps pipeline.

  • It has all the tools you need for Continuous Integration/Continuous Delivery.
  • Providing features like Version Control Systems, code repository management, build automation, and integration with Visual Studio Team Services.
  • It also integrates with the code of different programming languages and application types.
  • The application can be deployed to different environments, such as Virtual Machines or Containers.

Summary

As all the above tools have the same underlying objective (create and deploy CI/CD pipelines), you can expect that they will all have stellar performance in that aspect. The way they integrate with different aspects of the software development life cycle (SDLC), is the major difference between them.

Some are “all-in-one” solutions which can handle the whole process from planning to delivery. Others are highly customizable. Some are free and open-source, while some have a paid service which includes dedicated support among other things. Thus selecting the best tool for your use case and business needs is critical.

MORE FROM OUR BLOG

Card image cap
January, 2023

MY ITIDO JOURNEY: LYUBOMIR

Lyubomir Bandrov, Senior Software Engineer, reflects on how the company helped him transition from banking to IT

Card image cap
January, 2023

NATIVE OR HYBRID MOBILE APP? READ ON BEFORE YOU DECIDE

Product maturity, team experience, and budget are driving factors

Card image cap
December, 2022

EVERYDAY PROBLEM SOLVING: AN ENGINEER’S OWN APPROACH

Our colleague Yordan Donov tackles conundrums combining well-known methods and his IT experience