CI/CD helps DevOps teams release better quality software, faster. Continuous integration and continuous delivery do this by automating the way teams build, package, test, and deploy applications to users.
Continuous integration encourages teams to commit small, frequent code changes to a central repository multiple times a day. All code changes are continually validated against other code changes integrated into the same repository.
Code is tested at each stage through automated CI/CD pipelines. If all jobs in a pipeline pass their tests, the pipeline proceeds to the next stage. If any job in a pipeline fails, the pipeline stops early. Developers can then fix the problems found in the tests, and with smaller code changes, this is a much easier task. CI/CD pipelines maintain the integrity of the shared repository because they ensure that only code that meets certain standards is integrated.
Once all code has passed the quality and security testing, it’s ready to be released. This is where continuous delivery takes over.
Continuous delivery automates the application release process for CI-validated code. Continuous delivery can cover everything from provisioning the infrastructure environment to deploying the tested application to test/staging or production environments. Continuous delivery uses pipelines to make sure that the application code is packaged with everything it needs to deploy to any environment you choose.
The goal for organizations practicing continuous delivery is to make the software release process automated and repeatable (i.e. boring). CD allows teams to plan their release processes and schedules, automate infrastructure and deployments, and manage their cloud resources more effectively.
Deployment environments and architectures have grown more complex as development velocity has increased. Teams working in cloud environments may use containers and rely on orchestration tools like Kubernetes to ship applications. Other teams may have adopted a microservices architecture. Continuous delivery needs to accommodate a vast array of deployment scenarios in order to be successful. This is why releases are often a bottleneck in the software delivery process.
Continuous integration and continuous delivery are the software processes that embody the DevOps philosophy. In the ideal DevOps team structure, there is visibility and communication throughout the software development lifecycle. Information silos are limited so that dev and ops can work together. Similarly, CI can represent devs and CD can represent ops.
CI/CD is a DevOps best practice because it addresses the challenge between developers who want to move fast, with operations that want stability and reliability. With CI/CD automation, developers can push changes more frequently. Operations teams see greater stability because environments have standard configurations, there is continuous testing in the delivery process, and releases are repeatable and predictable.
by Chrissie Buchanan
With GitLab’s out-of-the-box CI/CD, you can spend less time maintaining and more time creating.
by Riccardo Padovani
Here's how to help everyone on your team, like designers and testers, get started with GitLab CI.
by Chrissie Buchanan and William Chia
How a good CI/CD strategy generates revenue and keeps developers happy.
GitLab is more than just source code management or CI/CD. It is a full software development lifecycle & DevOps tool in a single application.Try GitLab Free