GitLab CI/CD
GitLab CI/CD is a tool for software development using the continuous methodologies:
Use GitLab CI/CD to catch bugs and errors early in the development cycle. Ensure that all the code deployed to production complies with the code standards you established for your app.
GitLab CI/CD can automatically build, test, deploy, and monitor your applications by using Auto DevOps.
For a complete overview of these methodologies and GitLab CI/CD, read the Introduction to CI/CD with GitLab.
Concepts
GitLab CI/CD uses a number of concepts to describe and run your build and deploy.
| Concept | Description | 
|---|---|
| Pipelines | Structure your CI/CD process through pipelines. | 
| CI/CD variables | Reuse values based on a variable/value key pair. | 
| Environments | Deploy your application to different environments (for example, staging, production). | 
| Job artifacts | Output, use, and reuse job artifacts. | 
| Cache dependencies | Cache your dependencies for a faster execution. | 
| GitLab Runner | Configure your own runners to execute your scripts. | 
| Pipeline efficiency | Configure your pipelines to run quickly and efficiently. | 
| Test cases | Create testing scenarios. | 
Configuration
GitLab CI/CD supports numerous configuration options:
| Configuration | Description | 
|---|---|
| Schedule pipelines | Schedule pipelines to run as often as you need. | 
Custom path for .gitlab-ci.yml
 | Define a custom path for the CI/CD configuration file. | 
| Git submodules for CI/CD | Configure jobs for using Git submodules. | 
| SSH keys for CI/CD | Using SSH keys in your CI pipelines. | 
| Pipeline triggers | Trigger pipelines through the API. | 
| Merge request pipelines | Design a pipeline structure for running a pipeline in merge requests. | 
| Integrate with Kubernetes clusters | Connect your project to Google Kubernetes Engine (GKE) or an existing Kubernetes cluster. | 
| Optimize GitLab and GitLab Runner for large repositories | Recommended strategies for handling large repositories. | 
.gitlab-ci.yml full reference
 | All the attributes you can use with GitLab CI/CD. | 
Certain operations can only be performed according to the user and job permissions.
Features
GitLab CI/CD features, grouped by DevOps stage, include:
| Feature | Description | 
|---|---|
| Configure | |
| Auto DevOps | Set up your app’s entire lifecycle. | 
| ChatOps | Trigger CI jobs from chat, with results sent back to the channel. | 
| Connect to cloud services | Connect to cloud providers using OpenID Connect (OIDC) to retrieve temporary credentials to access services or secrets. | 
| Verify | |
| Browser Performance Testing | Quickly determine the browser performance impact of pending code changes. | 
| Load Performance Testing | Quickly determine the server performance impact of pending code changes. | 
| CI services | Link Docker containers with your base image. | 
| GitLab CI/CD for external repositories | Get the benefits of GitLab CI/CD combined with repositories in GitHub and Bitbucket Cloud. | 
| Interactive Web Terminals | Open an interactive web terminal to debug the running jobs. | 
| Review Apps | Configure GitLab CI/CD to preview code changes. | 
| Unit test reports | Identify test failures directly on merge requests. | 
| Using Docker images | Use GitLab and GitLab Runner with Docker to build and test applications. | 
| Release | |
| Auto Deploy | Deploy your application to a production environment in a Kubernetes cluster. | 
| Building Docker images | Maintain Docker-based projects using GitLab CI/CD. | 
| Canary Deployments | Ship features to only a portion of your pods and let a percentage of your user base to visit the temporarily deployed feature. | 
| Deploy boards | Check the current health and status of each CI/CD environment running on Kubernetes. | 
| Feature Flags | Deploy your features behind Feature Flags. | 
| GitLab Pages | Deploy static websites. | 
| GitLab Releases | Add release notes to Git tags. | 
| Cloud deployment | Deploy your application to a main cloud provider. | 
| Secure | |
| Code Quality | Analyze your source code quality. | 
| Container Scanning | Check your Docker containers for known vulnerabilities. | 
| Dependency Scanning | Analyze your dependencies for known vulnerabilities. | 
| License Compliance | Search your project dependencies for their licenses. | 
| Security Test reports | Check for app vulnerabilities. | 
Examples
See the CI/CD examples page for example project code and tutorials for using GitLab CI/CD with various:
- App frameworks
 - Languages
 - Platforms
 
Administration
You can change the default behavior of GitLab CI/CD for:
- An entire GitLab instance in the CI/CD administration settings.
 - Specific projects in the pipelines settings.
 
See also:
Related topics
Learn more about GitLab CI/CD:
- Why you might choose GitLab CI/CD.
 - Reasons you might migrate from another platform.
 - Five teams that made the switch to GitLab CI/CD.
 - If you use VS Code to edit your GitLab CI/CD configuration, the GitLab Workflow VS Code extension helps you validate your configuration and view your pipeline status.
 
See also the Why CI/CD? presentation.
Major version changes (breaking)
As GitLab CI/CD has evolved, certain breaking changes have been necessary.
For GitLab 15.0 and later, all breaking changes are documented on the following pages:
The breaking changes for GitLab Runner in earlier major version releases are:
- 14.0: No breaking changes.
 - 13.0:
- 
Remove Backported 
os.Expand. - Remove Fedora 29 package support.
 - Remove macOS 32-bit support.
 - 
Removed 
debug/jobs/list?v=1endpoint. - Remove support for array of strings when defining services for Docker executor.
 - 
Remove 
--docker-servicesflag on register command. - Remove legacy build directory caching.
 - 
Remove 
FF_USE_LEGACY_VOLUMES_MOUNTING_ORDERfeature flag. - Remove support for Windows Server 1803.
 
 - 
Remove Backported 
 - 12.0: