What Is Continuous Integration / Continuous Deployment?

Continuous integration encourages developers to commit code to version control systems frequently—often several times a day. Keeping commits small reduces the likelihood of complex conflicts that are time-consuming and expensive to resolve.

When a developer’s checked-out code diverges too much from the repository code, there’s an increased likelihood of “merge hell.” Developers can spend more time resolving conflicts than they spent coding in the first place.

But continuous integration causes issues of its own. Integration and unit tests must be carried out with each commit to ensure the codebase remains in a working state. Extensive testing before every commit reduces developer productivity.

Continuous integration platforms aim to reduce the time developers spend running tests by automating the testing process. Typically, CI software watches the version control repository for changes, checks out the code, builds a test environment on a build server, and runs unit, integration, and quality control tests automatically.

If tests fail, the developer is notified.

Continuous deployment takes automation one step further. Because CI ensures that code in the repository is in a state that can be deployed, it is possible to automate deployment too. Some companies use automated systems to push code to production several times a day, ensuring that users get new features as quickly as possible.

CI / CD platforms integrate with version control systems like GitHub and with testing infrastructure. They handle the deployment of build infrastructure, testing, and notifications, among other tasks.

There are numerous cloud CI/CD platforms on the market, but many companies prefer to use their own infrastructure for testing. It allows them to keep control of their code and data. It also allows them to manage the availability of a service that their development workflow depends on.

We’re going to look at three of the most popular self-hosted CI/CD platforms. All of the platforms we discuss can be hosted on our server hosting platform, which includes both low-cost custom Dedicated Servers and virtual Hybrid Servers.

Jenkins

Jenkins is a free and open-source CI/CD platform. It is among the most popular CI/CD platforms, with tens of thousands of business users.

See Also: Jenkins Software Tutorial: Why and How the CI Tool is Used

Jenkins is a Java application. It can be run either as a standalone WAR file or as a servlet with a Java application server such as Tomcat. If you prefer, you can also run Jenkins in a Docker container. CI/CD workflows are created in Jenkinsfiles, which contain a pipeline script that describes the CI process.

One of Jenkin’s most significant advantages is its enormous range of plugins. Jenkins can integrate with just about any platform you can think of, including all major and many not-so-popular version control platforms.

Jenkins is not the easiest automation server to set-up and manage. Nor does it have the best-looking interface. But it is a mature platform used widely in enterprise organizations.

CircleCI

CircleCI is a proprietary CI/CD server with both a cloud and a self-hosted version. At the time of writing, the self-hosted version costs $35 per month per user with a minimum of 20 users. CircleCI is somewhat easier to use than Jenkins and is fully supported by its developers. It supports applications written in any language that runs on Windows, Linux, or macOS. CircleCI provides sophisticated workflow configuration that includes sequential and parallel builds, as well as several other configurations.

CircleCI has excellent support for different build environments. It can provision build infrastructure on Linux, Windows, and macOS VMs, as well as Docker containers. However, self-hosted CircleCI offers limited version control system integration. It integrates with GitHub and GitHub Enterprise, but not with GitLab or Atlassian’s BitBucket.

Bamboo

Bamboo is a CI/CD platform from Atlassian. Originally available in a hosted cloud version, Bamboo is now only available for on-prem self-hosting. Bamboo has a somewhat complicated pricing structure based on the number of jobs that you need to run and how many remote agents you require.

Like Jenkins, Bamboo is written in Java, and users can write platform code in any JVM-based language, including Kotlin and Scala. Bamboo supports Docker agents for builds and deployments and has powerful parallel testing capabilities that can take advantage of up to 100 remote agents.

As you might expect, Bamboo offers excellent integration with Atlassian’s Bitbucket and Jira software, although it has many fewer integrations than Jenkins. If you already use BitBucket and Jira, the ease of integration and support makes Bamboo an obvious choice. If you rely on tools outside of the Atlassian family and don’t want to migrate, Jenkins is a better choice.

In Summary

Jenkins, CircleCI, and Bamboo are powerful continuous integration and deployment platforms. They are all capable of automating many of the time-consuming tasks associated with app development, including deployment. The best platform for your business depends on two factors: the software you need to integrate your CI/CD platform with and whether or not you need support from the platform’s developers.

To talk about building your CI/CD pipelines on our server infrastructure, contact us by phone, email, or the instant chat window on this page for a free consultation.