In this lesson, we look at how to create a CI/CD pipeline capable of building, testing, and deploying a web-based application.
- Explain the value of software package registries.
- Explain the value of sufficient testing strategies.
- Explain the value of standardized units of deployment.
- Explain the value of rollback mechanisms built into the deployment process.
- DevOps engineers.
Hello, and welcome. This is building CI/CD pipelines with GitLab. My name is Ben Lambert, and I'll be your instructor for this lesson. I've been working in the software industry for nearly 20 years. During that time, I've been fortunate enough to work on a wide variety of projects, projects spanning programming languages, operating systems, and cloud platforms. I've built many CI/CD pipelines over the years using a variety of tools such as Jenkins, TeamCity, GitHub Actions, and GitLab CI/CD. Through this lesson, I'm hoping to share some of the lessons that I've learned over the course of my career. Should you want to ask me a specific question, you can do that with the contact details on screen. You can also reach support by using the e-mail address firstname.lastname@example.org and one of our cloud experts will reply.
The focus of this lesson is to create a CI/CD pipeline capable of building, testing, and deploying a web-based application. I want to establish a rough baseline for what I'm talking about when I say CI/CD. CI/CD stands for Continuous Integration and Continuous Delivery, or Continuous Deployment. Continuous integration consists of a set of practices and tools used to automate the integration of code changes into a single shared repository. Continuous delivery and continuous deployment are practices used to automate the release of software. The distinction between continuous delivery and continuous deployment is subtle. Continuous delivery is the practice of enabling the release of software at any time.
Continuous deployment is the practice of releasing software automatically. Building CI/CD pipelines can be challenging for a variety of reasons. One of the biggest challenges is the number of tools and services involved. This lesson covers building CI/CD pipelines using GitLab. The reason I chose GitLab is that it provides a single application for the entire DevOps lifecycle. It includes a Git repository, issue tracking, CI/CD pipelines, and more. GitLab describes itself as the most comprehensive DevSecOps platform. This graphic shows which features of GitLab are used across the DevOps lifecycle, and this color key indicates the maturity level of each feature. The focus of this lesson is on building CI/CD pipelines.
While we'll be using GitLab, the general concepts apply to other tools as well. We won't be covering GitLab in-depth, rather we'll be focusing on the CI/CD features that enable us to build our pipeline. GitLab is available as a self-hosted or SaaS-based managed solution. This lesson uses the managed version available at gitlab.com. If you don't already have an account, you can create a free account at gitlab.com. Here's a rough summary of the pipeline that we'll be building. The pipeline will run on every commit pushed to the Git repository. The application is built into a distribution package. The distribution package is tested using Docker Compose, the application is packaged into a Docker image, and finally, the application is deployed to a production environment.
Now, this is not a particularly complex pipeline, though it will demonstrate the core concepts of CI/CD using GitLab. Before taking this lesson there are some things that you'll want to already know. You should be comfortable with Git, CI/CD concepts, Docker containers, at least one programming language, and YAML. If you're not already comfortable in these topics, check out the links that I've added in the lesson materials. Here are some of the things that you'll learn in this lesson. The basics of GitLab CI/CD, how to build a CI/CD pipeline using GitLab, the value of software package registries, sufficient testing strategies, standardized units of deployment such as Docker, and rollback mechanisms built into the deployment process. As a content creator, the only way to improve is through your feedback. So, positive or negative, if you have any feedback that you'd like to share, you can do that by emailing email@example.com. Now if you're ready to begin, then I will see you in the next video.
Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.