GitLab Features

Fundamentally changing the way Development, Security, and Ops teams collaborate and build software - GitLab provides all of the essential DevSecOps tools in one DevSecOps platform. From idea to production, GitLab helps teams improve cycle time from weeks to minutes, reduce development costs, speed time to market, and deliver more secure and compliant applications.

Continuous Integration

Keep strict quality standards for production code with automatic testing and reporting.

GitLab helps delivery teams fully embrace continuous integration to automate the builds, integration and verification of their code. GitLab’s industry leading CI capabilities enables automated testing, Static Analysis Security Testing, Dynamic Analysis Security testing and code quality analysis to provide fast feedback to developers and testers about the quality of their code. With pipelines that enable concurrent testing and parallel execution, teams quickly get insight about every commit, allowing them to deliver higher quality code faster.

Verify

Continuous Integration (CI) Scaling

Improve scalability of GitLab CI

Continuous Integration (CI) Scaling

image for Automatic CI/CD pipeline cleanup

Automatic CI/CD pipeline cleanup

Use a project setting to set a CI/CD pipeline expiry time. Any pipelines and related artifacts
older than the defined retention period are deleted.

Continuous Integration (CI)

Streamline your software development lifecycle with continuous, automated building, testing, and deploying of iterative code changes. This ensures the early detection of integration issues, bugs, and security vulnerabilities before deploying to production.

Continuous Integration (CI)

image for Built-in CI/CD

Built-in CI/CD

GitLab has built-in Continuous Integration/Continuous Delivery, for free, no need to install it separately. Use it to build, test, and deploy your website (GitLab Pages) or webapp. The job results are displayed on merge requests for easy access.

Continuous Integration (CI)

image for Scheduled triggering of pipelines

Scheduled triggering of pipelines

You can make your pipelines run on a schedule in a cron-like environment.

Continuous Integration (CI)

image for Customizable path for CI/CD configuration

Customizable path for CI/CD configuration

You can define a custom path into your repository for your CI/CD configuration file.

Continuous Integration (CI)

image for Protected Runners

Protected Runners

Protected Runners allow you to protect your sensitive information, for example deployment credentials,
by allowing only jobs running on protected branches to access them.

Continuous Integration (CI)

image for CI on Protected Branches

CI on Protected Branches

The ability of running CI/CD pipelines on protected branches is checked against a set of security rules that defines
if you're allowed or not. It includes creating new pipelines, retrying jobs, and perform manual actions.

Continuous Integration (CI)

image for Step folding for CI/CD logs

Step folding for CI/CD logs

Collapse the job log output for each command.

Continuous Integration (CI)

image for CI/CD for external repo

CI/CD for external repo

Connect your projects hosted on external services (like GitHub or Bitbucket) and leverage
the power of GitLab CI/CD pipelines to build, test, and deploy your applications easily.

Continuous Integration (CI)

image for CI/CD for GitHub

CI/CD for GitHub

Connect your projects hosted on GitHub and leverage
the power of GitLab CI/CD pipelines to build, test, and deploy your applications easily.

Continuous Integration (CI)

image for Pipeline deletion

Pipeline deletion

Deleting a pipeline is possible using the API and also in the UI on the Pipeline Details page. This allows for cases where perhaps
secrets have been leaked in a pipeline, many unneeded pipelines have been created, or
other issues have occurred where pipelines need to be deleted.

Continuous Integration (CI)

image for Trigger pipeline on any event in code repository

Trigger pipeline on any event in code repository

Enables pipelines/workflows to be started based on when any defined event is executed in the code repository. For example, could run a workflow to send a welcome email on adding a new member to a repository or project.

Continuous Integration (CI)

image for Any platform, any language, and cloud

Any platform, any language, and cloud

Can run on any OS platform, for any language, and on any cloud provider

Continuous Integration (CI)

image for Store CI configuration outside the repository

Store CI configuration outside the repository

Specify the path of the .gitlab-ci.yml as an arbitrary URL to store CI configurations in a repository other than the one being built. This allows for processing hundreds of repos the same way by pointing all of them to the same external gitlab-ci.yml file, and gain efficiency by having only one CI configuration file to update for multiple repositories. Use cases where a service generates the configuration file dynamically would also benefit. The ability to host the .gitlab-ci.yml file in another project enables CI configurations access control in a scalable way as the owners of the project hosting the file could restrict write access to prevent changes by unauthorized users.

Continuous Integration (CI)

image for Connects the diff tools & services used during the SDLC

Connects the diff tools & services used during the SDLC

Can be used as a central glue to orchestrate, and connect data and outputs from your many different tools & services.

Continuous Integration (CI)

image for Pipeline status visible in pull/merge request

Pipeline status visible in pull/merge request

Status and results of pipeline runs are viewable at least in summary from the merge/pull request that they are part of.

Continuous Integration (CI)

image for Live streaming of logs from running pipeline

Live streaming of logs from running pipeline

Ability to see live job logs (while the pipeline is running).

Continuous Integration (CI)

image for Search across all job logs

Search across all job logs

Search across all or more than one job log at once. Enables more efficient search for errors and other content of interest while troubleshooting or reviewing job output.

Continuous Integration (CI)

image for View raw logs in plaintext

View raw logs in plaintext

Ability to get the plain text of a log, no mark up, to be able to share it or use it externally.

Continuous Integration (CI)

image for Cross-project jobs with artifact dependencies

Cross-project jobs with artifact dependencies

Run a job in your current project that depends on the latest artifact produced by a job in another cross-project pipeline.

Continuous Integration (CI)

image for Parent-child pipelines

Parent-child pipelines

When one pipeline serves as a parent of one of more child pipelines, it removes many of the challenges of complex pipeline creation. Performance can be improved because child pipelines can run concurrently based on trigger configurations in the parent pipeline. As an added bonus, decomposing a single, complex, pipeline into a parent pipeline with multiple children simplifies pipeline visualization and ultimately improves comprehension for the entire team.

Continuous Integration (CI)

image for Troubleshoot failed jobs with root cause analysis

Troubleshoot failed jobs with root cause analysis

Use root cause analysis to troubleshoot job failures quickly.

Merge Trains

Coordinate frequent merge requests and avoid merge conflicts with Merge Trains, preventing code commits from breaking default and main branches.

Merge Trains

image for Merge request pipelines

Merge request pipelines

Specify when you want jobs to run only when they are in a pipeline associated with a Merge Request. Make your pipelines more efficient by running only the necessary jobs for Merge Requests.

Merge Trains

image for Merged results pipelines

Merged results pipelines

Keep master green. A special pipeline runs on the results of merged code before merging into master to detect changes that may be green on a branch but will fail master when merged.

Merge Trains

image for Merge Trains

Merge Trains

Reduce pipeline queueing and waiting time with merge trains which allows parallel pipeline execution, with each pipeline building off the merge result of the previous one.

Merge Trains

image for Run pipelines in the parent project for MRs from forks

Run pipelines in the parent project for MRs from forks

A member of the parent project with appropriate permissions can run pipelines from a forked MR using the parent project's pipeline configuration and runners. This adds another layer of security to verify that there's no malicious activity in the forked MR that could affect the parent project.

Code Testing and Coverage

Code testing and coverage are important parts of a Continuous Integration framework, ensuring that source code is validated by test suites and individual pipeline components perform as expected.

Code Testing and Coverage

image for Show code coverage rate for your pipelines

Show code coverage rate for your pipelines

GitLab is able to parse job output logs and search, via a customizable regex, any information created by tools like SimpleCov to get code coverage.
Data is automatically available in the UI and also as a badge you can embed in any HTML page or publish using GitLab Pages.

Code Testing and Coverage

image for Browser Performance Testing

Browser Performance Testing

Easily detect performance regressions for web apps and pages prior to merging into master.
Browser Performance Testing is included in
Auto DevOps,
providing automatic performance analytics of the root page with
zero configuration.

Code Testing and Coverage

image for Load Performance Testing

Load Performance Testing

Easily detect performance regressions for APIs prior to merging into master.

Code Testing and Coverage

image for Repeat failed test notification

Repeat failed test notification

Finding out if a test failed in one of your previous pipelines is a slow process. However, that knowledge is invaluable to determine if a test failure should be addressed further or if the failure may just be due to a flaky test. GitLab provides a counter showing how many times a test has failed previously in a project's pipelines.

Code Testing and Coverage

image for Graph Code coverage changes over time

Graph Code coverage changes over time

Tracking how code coverage changes in a branch over time can be a time consuming and low value task for a team. GitLab now provides a simple graph to show how calculated code coverage values are trending over time.

Code Testing and Coverage

image for Group Code Coverage Data

Group Code Coverage Data

Tracking code coverage changes for multiple projects can be a time consuming and low value task for a team lead. GitLab provides a page that aggregates the code coverage data for a group's projects and makes it available for download.

Code Testing and Coverage

image for Unit Test Report

Unit Test Report

GitLab allows you to view unit test results for a pipeline, giving you insight into the test execution for the pipeline.

Code Testing and Coverage

image for Failed test screenshots in test report

Failed test screenshots in test report

GitLab allows you to review screenshots captured during a failed test from the test report without digging through archives by hand.

Code Testing and Coverage

image for See unit test summaries in merge request widget

See unit test summaries in merge request widget

GitLab allows you to view unit test results from the merge request widget, giving you insight into quality impacts of your changes.

Review Apps

Gain access to a live instance of your application for every commit, allowing you and stakeholders to ensure thorough validation and collaboration before changes are merged into the main codebase.

Review Apps

image for Preview your changes with Review Apps

Preview your changes with Review Apps

With GitLab CI/CD you can create a new environment for each one of your
branches, speeding up your development process. Spin up dynamic environments
for your merge requests with the ability to preview your branch in a live
environment. Review Apps support both static and dynamic URLs.

Review Apps

image for Environments Auto-stop

Environments Auto-stop

This feature allows users to configure an optional expiration date which can be set for review app environments.

Review Apps

image for Automated Accessibility scanning of Review Apps

Automated Accessibility scanning of Review Apps

Performing accessibility testing is important in order to ensure you're serving all the users who use your products. In GitLab you can generate Accessibility reports automatically prior to merging into master.

Review Apps

image for Comments in Review Apps

Comments in Review Apps

Shorten the feedback cycle and enable stakeholders to provide comments
through a form in your review app - which is then automatically added to the related merge request.

Pipeline Composition

Advanced features enable you to edit/compose a highly flexible CI/CD pipeline configuration to boost efficiency across a variety of projects.

Pipeline Composition

image for Instance file templates

Instance file templates

*Only available on Self-Managed

Define custom LICENSE, .gitignore, Dockerfile and .gitlab-ci.yml
templates for your GitLab instance to make consistency easier.

Pipeline Composition

image for Group file templates

Group file templates

Define custom LICENSE, .gitignore, Dockerfile and .gitlab-ci.yml
templates for a Group to make consistency easier.

Pipeline Composition

image for Comprehensive pipeline graphs

Comprehensive pipeline graphs

Pipelines can be complex structures with many sequential and parallel jobs.
To make it a little easier to see what is going on, you can view a graph of
a single pipeline and its status.

Pipeline Composition

image for Downstream and Multi-project pipeline graphs

Downstream and Multi-project pipeline graphs

Visualize how pipelines across projects are linked together, including cross project dependencies.

Pipeline Composition

image for Automatic Retry for Failed CI Jobs

Automatic Retry for Failed CI Jobs

You can specify a retry keyword in your .gitlab-ci.yml file to make GitLab CI/CD
retry a job for a specific number of times before marking it as failed.

Pipeline Composition

image for Include external files in CI/CD pipeline definition

Include external files in CI/CD pipeline definition

You can include external files in your pipeline definition file, using them
as templates to reuse snippets for common jobs.

Pipeline Composition

image for Run jobs only when there are changes to a file or path

Run jobs only when there are changes to a file or path

Jobs can be configured to run only when there are changes to a specific
file or path, giving you control over execution to allow for more
complex build pipelines optimized for the changes in each commit.

Pipeline Composition

image for More efficient job execution flow

More efficient job execution flow

Use the needs keyword to build relationships between jobs such that
execution is performed in the quickest possible manner. Set jobs to start
as soon as needed jobs complete, regardless of the stage configuration.
For example, you may have a specific tool or separate website that is
built as part of your main project. With needs, you can specify the
relationship between these jobs and GitLab will then execute the jobs
as soon as possible instead of waiting for all earlier stages to complete.

Pipeline Composition

image for Run pipelines for merge requests

Run pipelines for merge requests

Configure pipelines to run in the context of merge requests.
This allows finer control over pipeline behavior, and also allows access to new
environment variables indicating the target branch and merge request ID when
relevant, offering opportunities for implementation of other more advanced behaviors.

Pipeline Composition

image for Explicit support for monorepos

Explicit support for monorepos

The ability to execute jobs only/except when there are changes for a given path or file support monorepos where many microservices are contained in a single repo.

Pipeline Composition

image for Community powered workflows (configuration is code so are shareable)

Community powered workflows (configuration is code so are shareable)

GitLab pipeline (workflows) are defined as yml in repos and can be shared just like actions.

Pipeline Composition

image for Pipeline defined in one file kept in the repository

Pipeline defined in one file kept in the repository

The pipeline/workflow can be fully defined by a single file which is kept in the code repository right next to the code it is meant to execute on.

Pipeline Composition

image for Auto suggest pipelines to start with based on code language

Auto suggest pipelines to start with based on code language

Through language detection, auto suggest pipeline templates to run to help users quickly get a pipeline running.

Pipeline Composition

image for Advanced CI/CD configuration linter

Advanced CI/CD configuration linter

The CI linter provide warnings and error messages when validating your .gitlab-ci.yml file, helping to get up and running quickly with GitLab pipelines.

Pipeline Composition

image for Comes with many pre-defined pipelines

Comes with many pre-defined pipelines

Offers many pre-defined pipelines that capture best practice and make it easy for a user to get started with each project for common languages, platforms, and configurations.

Pipeline Composition

image for Multiple pipelines per repo

Multiple pipelines per repo

Ability to define multiple pipelines per code repository to enable either different processes to be run at different times, and/or to enable monorepos where there are multiple applications within one repo which need to be built and handled differently per application.

Pipeline Composition

image for Reference actions/jobs in another repo

Reference actions/jobs in another repo

Ability to have pipelines/workflows reference and use actions/jobs from a repo different from the one it is being run from, without needing any installation.

Pipeline Composition

image for Define cross-project jobs with artifact dependencies

Define cross-project jobs with artifact dependencies

Specify a job in your current project depends on the latest artifact produced by a job in another pipeline to easily set up cross-project pipelines that have artifact dependencies on each other.

Pipeline Composition

image for Define Parent-child pipelines

Define Parent-child pipelines

When one pipeline serves as a parent of one of more child pipelines, it removes many of the challenges of complex pipeline creation. Performance can be improved because child pipelines can run concurrently based on trigger configurations in the parent pipeline. As an added bonus, decomposing a single, complex, pipeline into a parent pipeline with multiple children simplifies pipeline visualization and ultimately improves comprehension for the entire team.
It is also possible to dynamically generate the .gitlab-ci.yml for the child pipeline, making it easy to implement runtime behaviors in a clear way. GitLab includes a Jsonnet template as an example for how you can do this with a data templating language.

Pipeline Composition

image for Create parallel jobs via a matrix of targets

Create parallel jobs via a matrix of targets

GitLab offers a matrix keyword that works along with parallel to handle creation of similar jobs for you, each with different sets of variables (i.e., a Cartesian product). As an example, you could now create a single job that knows you want a debug and release configuration for each of 4 different architectures, and it will automatically generate all these jobs for you at runtime.

Pipeline Composition

image for Multi project pipeline visualization

Multi project pipeline visualization

When you configure GitLab CI/CD for your project, you can visualize the stages of your jobs on a pipeline graph.

Pipeline Composition

image for CI/CD Catalog

CI/CD Catalog

Discoverability, Reusability and Ease of contribution for pipeline components

Pipeline Composition

image for CI/CD components

CI/CD components

Reusable single pipeline configuration unit

Variables

Provide repeatable values to pipelines and jobs to drive efficiency.

Variables

image for CI/CD variables

CI/CD variables

You can define a CI/CD variable and reuse it as needed in the pipeline or job configuration. This feature simplifies your pipeline configuration and eliminates pipeline management issues caused by repeatedly used values getting out of sync.

Variables

image for Protected variables

Protected variables

You can mark a variable as "protected" to make it available only to jobs running on
protected branches, therefore only authorized users can get access to it.

Variables

image for Nested variable expansion

Nested variable expansion

You can define a variable and use it in another variable definition within the same pipeline. This feature simplifies your pipeline definition and eliminates pipeline management issues caused by the duplicating of variable data.

Variables

image for Group-level variables

Group-level variables

Define variables at the group level and use them in any project in the group.

GitLab Runner Core

GitLab Runner is an application to run the GitLab CI/CD jobs in a pipeline.

GitLab Runner Core

image for GitLab Runner Operator for Kubernetes

GitLab Runner Operator for Kubernetes

The GitLab Runner Operator manages the lifecycle of GitLab Runner on Kubernetes clusters.

Fleet Visibility

Evaluate the status and performance of your runner fleet.

Fleet Visibility

image for Runner upgrade notification when managing runners

Runner upgrade notification when managing runners

The ugprade status badge in your runners list allows you to identify at a glance which runners in your environment need updating.

Fleet Visibility

image for Summary of outdated runners metric

Summary of outdated runners metric

The ugprade status badge in your runners list allows you to identify at a glance which runners in your environment need updating.

Fleet Visibility

image for View statistics for runner performance

View statistics for runner performance

Displays the median estimated wait time for all instance runners.

Fleet Visibility

image for Runner Fleet Dashboard Admin View (Beta)

Runner Fleet Dashboard Admin View (Beta)

The Runner Fleet Dashboard - Admin View provides instance runner fleet metrics, including runner fleet health, most actively used runners, and the queue time for runners to measure performance of CI/CD jobs.

Fleet Visibility

image for Runner fleet dashboard for groups (Beta)

Runner fleet dashboard for groups (Beta)

The runner fleet dashboard for groups provides runner fleet metrics for runners associated with a group and its subgroups. These metrics include runner fleet health, most actively used runners, runner usage breakdown, and the queue time for runners to measure the performance of CI/CD jobs.

GitLab Hosted Runners

GitLab hosted Runners are managed by GitLab and can be used to run CI/CD jobs on GitLab.com or GitLab Dedicated.

GitLab Hosted Runners

image for Hosted runners on Linux for GitLab.com

Hosted runners on Linux for GitLab.com

Hosted runners on Linux for GitLab.com, allow you to run your CI/CD jobs in a fully-isolated and on-demand virtual machine.

GitLab Hosted Runners

image for Hosted runners on Linux Arm for GitLab.com

Hosted runners on Linux Arm for GitLab.com

Hosted runners on Linux Arm for GitLab.com, allow you to run your build and test workloads in a fully-isolated and on-demand virtual machine natively on the Arm architecture.

GitLab Hosted Runners

image for Hosted runners on Linux for GitLab.com - Larger machine types

Hosted runners on Linux for GitLab.com - Larger machine types

Larger machine types of hosted runners on Linux for GitLab.com, allow you to run your heavy build and test workloads in a fully-isolated and on-demand virtual machine with up to 32 vCPUs and 128 GB RAM.

GitLab Hosted Runners

image for GPU-enabled hosted runners on Linux for GitLab.com

GPU-enabled hosted runners on Linux for GitLab.com

GPU-enabled hosted runners on Linux for GitLab.com allow you to run AI/ML or HPC workloads in a fully-isolated and on-demand virtual machine with 1 NVIDIA TESLA T4 attached.

GitLab Hosted Runners

image for Hosted runners on macOS for GitLab.com (Beta)

Hosted runners on macOS for GitLab.com (Beta)

Hosted runners on macOS for GitLab.com enables you to natively build, test, and deploy applications for the Apple ecosystem.

GitLab Hosted Runners

image for Hosted runners on Windows for GitLab.com (Beta)

Hosted runners on Windows for GitLab.com (Beta)

Hosted runners on Windows for GitLab.com enables you to run CI/CD jobs in ephemeral virtual machines, created specifically for the job.

GitLab Hosted Runners

image for Hosted runners on Linux for GitLab Dedicated

Hosted runners on Linux for GitLab Dedicated

*Only available on Self-Managed

Hosted runners for GitLab Dedicated eliminate the need to maintain your own runner infrastructure.
They provide the same security, flexibility, and efficiency of GitLab Dedicated to runners.
You can use Linux hosted runners with fully-isolated, on-demand virtual machines with up to
32 vCPUs and 128 GB RAM.

Ready to get started?

See what your team can do with the most comprehensive
AI-powered DevSecOps platform.