Continuous integration and continuous delivery or CI/CD is a method of delivering apps to the customers by introducing automation to the stages of application building and deployment. They introduce automation and continuous monitoring throughout the lifecycle of apps–from the integration and testing phases to the delivery and deployment.
Specifically, CI concerns itself with automating the integration of code changes from multiple contributors to a single project; on the other hand, the CD automatically deploys all code changes into the testing and production environment right after the build stage.
Taken together, the CI/CD practices are often referred to as ‘CI/CD pipeline’, which are supported by development and operations teams that work together with a DevOps or site reliability engineering (SRE) approach. Here we discuss some of the most prominent CI/CD, in no particular order.
Sign up for your weekly dose of what's up in emerging technology.
It is an open-source automation server in which the central build and continuous integration take place. It is a Java-based self-containing program that supports packages for Windows, macOS, etc. The huge range of plugins available with Jenkins help in supporting the construction, deployment, and the automation of software development projects. Notably, Jenkins is widely considered as the original, de facto standard among CI/CD tools.
Some of its important features include easy installation and its ability to upgrade to different operating systems; simple and easy to use interface; huge community-based plugin resource pool; simple configuration of the environment in the user interface; support for distributed master-slave architecture builds, among others.
TeamCity is a building management and continuous integration server from JetBrain. It helps in building and deploying different types of projects. With TeamCity, a user can build the code, check it, and run automated tests on the server before even committing the changes. All such features are provided through IDE plugins for IntelliJ IDEA-based products, Microsoft Visual Studio and Eclipse. It also supports .NET and open stack projects and can be installed on both Windows and Linux servers.
Some of the features include:
- Providing ways to reuse settings and configurations of parent to the subproject.
- Running continuous parallel builds on different environments.
- Easy customisation.
- Flexible user management, user roles assignment, sorting users into different groups, and a log with all user actions.
- Keeping the CI server functional and stable.
It is a suite of tools that are used to manage different aspects of the software development lifecycle. Its core product is a web-based Git repository manager. With GitLab, users can trigger builds, run tests, and deploy code with each commit or push. It provides a complete DevOps platform with a single interface, conversation thread, and data store.
Some of the key features include branching tools for viewing, creating, and managing codes and project data; a single source of scalability for collaborating on projects and codes; complete automation of the build-integrate-verify process of source code; container scanning, static application security testing (SAST), dynamic application security testing (DAST), among other to deliver secure applications.
This is a CI/CD tool that supports rapid software development and publishing. It automates all the aspects of users’ pipeline, from code building to testing to deployment. It hosts CI either under cloud-managed options or behind a firewall.
You can integrate CircleCI with GitHub, GitHub Enterprise, and Bitbucket to create builds when new code lines are committed. CircleCI also hosts continuous integration under the cloud-managed option or runs behind a firewall on private infrastructure.
The key features of CircleCI are: It integrates with GitHub, GitHub Enterprise, and BitBucket; uses container or virtual machine to run builds; provides automated parallelisation; offers continuous and branch-specific deployment; provides automatic merging and customisation on commands for package uploading, among others.
It is a continuous integration server that automates software application release management and creates a delivery pipeline. Bamboo helps in building and functional testing, assigning versions, tagging releases, and deploying new releases on production.
Its salient features are, supporting up to 100 remote build agents; parallelly running batches of tests and get quick feedback; triggering build based on the changes detected in the repository; detecting new branches in Git, Mercurial, SVN Repos; allotting pre-environment permissions for developers and testers to their environments one-demand, among others.
Screwdriver uses microservices approach and uses tools such as Nomad, Kubernetes, and Docker to act as execution engines. It also uses YAML for pipeline descriptions. With Screwdriver, users experience lesser boilerplate configuration for each pipeline.
Some of its features are:
- Users can pick and choose among various plugins available.
- It is not tied to a single computing platform.
- It keeps track of users’ configuration in code.
- Users can control their own clusters.