GitLab CI/CD

GitLab CI/CD is a tool built into GitLab for software development through the continuous methodologies:

  • Continuous Integration (CI)
  • Continuous Delivery (CD)
  • Continuous Deployment (CD)
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’s built-in CI can help you simplify and scale software development.

Overview

Continuous Integration works by pushing small code chunks to your application’s code base hosted in a Git repository, and, to every push, run a pipeline of scripts to build, test, and validate the code changes before merging them into the main branch.

Continuous Delivery and Deployment consist of a step further CI, deploying your application to production at every push to the default branch of the repository.

These methodologies allow you to catch bugs and errors early in the development cycle, ensuring that all the code deployed to production complies with the code standards you established for your app.

For a complete overview of these methodologies and GitLab CI/CD, read the Introduction to CI/CD with GitLab.

For a video demonstration of GitLab CI/CD, see Demo: CI/CD with GitLab.

Getting started

GitLab CI/CD is configured by a file called .gitlab-ci.yml placed at the repository’s root. The scripts set in this file are executed by the GitLab Runner.

To get started with GitLab CI/CD, we recommend you read through the following documents:

If you’re coming over from Jenkins, you can also check out our handy reference for converting your pipelines.

You can also get started by using one of the .gitlab-ci.yml templates available through the UI. You can use them by creating a new file, choosing a template that suits your application, and adjusting it to your needs:

Use a .gitlab-ci.yml template

For a broader overview, see the CI/CD getting started guide.

Once you’re familiar with how GitLab CI/CD works, see the .gitlab-ci.yml full reference for all the attributes you can set and use.

Note: GitLab CI/CD and shared runners are enabled in GitLab.com and available for all users, limited only to the user’s pipelines quota.

Configuration

GitLab CI/CD supports numerous configuration options:

ConfigurationDescription
PipelinesStructure your CI/CD process through pipelines.
Environment variablesReuse values based on a variable/value key pair.
EnvironmentsDeploy your application to different environments (e.g., staging, production).
Job artifactsOutput, use, and reuse job artifacts.
Cache dependenciesCache your dependencies for a faster execution.
Schedule pipelinesSchedule pipelines to run as often as you need.
Custom path for .gitlab-ci.ymlDefine a custom path for the CI/CD configuration file.
Git submodules for CI/CDConfigure jobs for using Git submodules.
SSH keys for CI/CDUsing SSH keys in your CI pipelines.
Pipelines triggersTrigger pipelines through the API.
Pipelines for Merge RequestsDesign a pipeline structure for running a pipeline in merge requests.
Integrate with Kubernetes clustersConnect your project to Google Kubernetes Engine (GKE) or an existing Kubernetes cluster.
GitLab RunnerConfigure your own GitLab Runners to execute your scripts.
Optimize GitLab and Runner for large repositoriesRecommended strategies for handling large repos.
.gitlab-ci.yml full referenceAll the attributes you can use with GitLab CI/CD.

Note that certain operations can only be performed according to the user and job permissions.

Feature set

Use the vast GitLab CI/CD to easily configure it for specific purposes. Its feature set is listed on the table below according to DevOps stages.

FeatureDescription
Configure 
Auto DevOpsSet up your app’s entire lifecycle.
ChatOpsTrigger CI jobs from chat, with results sent back to the channel.
Verify 
Browser Performance TestingQuickly determine the performance impact of pending code changes.
CI servicesLink Docker containers with your base image.
Code Quality Analyze your source code quality.
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.
JUnit testsIdentify script failures directly on merge requests.
Using Docker imagesUse GitLab and GitLab Runner with Docker to build and test applications.
Release 
Auto DeployDeploy your application to a production environment in a Kubernetes cluster.
Building Docker imagesMaintain 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 PagesDeploy static websites.
GitLab ReleasesAdd release notes to Git tags.
Review AppsConfigure GitLab CI/CD to preview code changes.
Secure 
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

Find example project code and tutorials for using GitLab CI/CD with a variety of app frameworks, languages, and platforms on the CI Examples page.

GitLab also provides example projects pre-configured to use GitLab CI/CD.

Administration

As a GitLab administrator, you can change the default behavior of GitLab CI/CD for:

See also:

References

Why GitLab CI/CD?

The following articles explain reasons to use GitLab CI/CD for your CI/CD infrastructure:

See also the Why CI/CD? presentation.

Breaking changes

As GitLab CI/CD has evolved, certain breaking changes have been necessary. These are:

12.0

11.0

  • No breaking changes.

10.0

  • No breaking changes.

9.0