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.
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:
- An entire GitLab instance in the CI/CD administration settings.
- Specific projects in the pipelines settings.
See also:
Related topics
- 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=1
endpoint. - Remove support for array of strings when defining services for Docker executor.
-
Remove
--docker-services
flag on register command. - Remove legacy build directory caching.
-
Remove
FF_USE_LEGACY_VOLUMES_MOUNTING_ORDER
feature flag. - Remove support for Windows Server 1803.
-
Remove Backported
- 12.0: