GitLab CI/CD (FREE ALL)

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.

Video demonstration of continuous integration with GitLab CI/CD: Continuous Integration with GitLab (overview demo).

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
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 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 Scanning 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.
Govern
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.

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:

See also:

Related topics

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: