GitLab CI/CD (FREE)
GitLab CI/CD is a tool for software development using the continuous methodologies:
NOTE: Out-of-the-box management systems can decrease hours spent on maintaining toolchains by 10% or more. Watch our "Mastering continuous software development" webcast to learn about continuous methods and how GitLab CI/CD can help you simplify and scale software development.
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.
GitLab CI/CD uses a number of concepts to describe and run your build and deploy.
|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.|
GitLab CI/CD supports numerous configuration options:
|Schedule pipelines||Schedule pipelines to run as often as you need.|
|Custom path for
||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.|
||All the attributes you can use with GitLab CI/CD.|
GitLab CI/CD features, grouped by DevOps stage, include:
|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.|
|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.|
|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.|
|Code Quality||Analyze your source code quality.|
|Container Scanning||Scan your container images for known vulnerabilities.|
|Coverage-guided fuzz testing||Test your application's behavior by providing randomized input.|
|Dynamic Application Security Testing||Test your application's runtime behavior for vulnerabilities.|
|Dependency Scanning||Analyze your dependencies for known vulnerabilities.|
|Infrastructure as Code scanning||Scan your IaC configuration files for known vulnerabilities.|
|License Compliance||Search your project dependencies for their licenses.|
|Secret Detection||Search your application's source code for secrets.|
|Static Application Security Testing||Test your application's source code for known vulnerabilities.|
|Web API fuzz testing||Test your application's API behavior by providing randomized input.|
|Compliance frameworks||Enforce a GitLab CI/CD configuration on all projects in a group.|
|Scan execution policies||Enforce security scans run on a specified schedule or with the project pipeline.|
|Scan results policies||Enforce action based on results of a pipeline security scan.|
See the CI/CD examples page for example project code and tutorials for using GitLab CI/CD with various:
- App frameworks
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.
- 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.
- Remove Fedora 29 package support.
- Remove macOS 32-bit support.
- Remove support for array of strings when defining services for Docker executor.
--docker-servicesflag on register command.
- Remove legacy build directory caching.
- Remove support for Windows Server 1803.
- Remove Backported