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 Delivery

GitLab's integrated CD solution allows you to ship code with zero-touch, be it on one or one thousand servers.

GitLab helps automate the release and delivery of applications, shortening the delivery lifecycle, streamlining manual processes, and accelerating team velocity. With zero-touch Continuous Delivery (CD) built right into the pipeline, deployments can be automated to multiple environments like staging and production, and the system just knows what to do without being told - even for more advanced patterns like canary deployments. With feature flags, built-in auditing/traceability, and on-demand environments, you'll be able to deliver faster and with more confidence than ever before.

Release

Auto DevOps

Automatically discover, build, test, and scan source code, and deploy and monitor built applications using an opinionated but highly customizable set of CI/CD templates and integrations. Enable teams to focus on writing business code and better collaboration while delivering software faster.

Auto DevOps

image for Auto DevOps

Auto DevOps

Auto DevOps brings DevOps best practices to your project by automatically configuring software development lifecycles by default.
It automatically detects, builds, tests, deploys, and monitors applications.

Continuous Delivery

Ensure compliant application delivery pipelines with deployment approvals. Deploy on schedule with scheduled pipelines and deploy freezes. Track deployments with environments and provide the necessary reports through audit trails.

Continuous Delivery

image for Operations Dashboard

Operations Dashboard

Visualize the history and current status of pipelines across projects and groups all in a single dashboard that can be customized for each user.

Continuous Delivery

image for Deploy from Chat

Deploy from Chat

Deploy from one environment (e.g. staging) to any other (e.g. production) from Chat

Continuous Delivery

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 Delivery

image for Timed and manual incremental rollout deployments

Timed and manual incremental rollout deployments

GitLab can allow you to deploy a new version of your app on Kubernetes starting
with just a few pods, and then increase the percentage if everything is working fine.
This can be configured to proceed per a schedule or to pause for input to proceed.

Continuous Delivery

image for Canary Deployments

Canary Deployments

GitLab Premium can monitor your Canary Deployments when
deploying your applications with Kubernetes. Canary Deployments can be configured directly through .gitlab-ci.yml, the API, or from the UI of the Deploy Boards.

Continuous Delivery

image for Deploy Tokens

Deploy Tokens

Provide read-only access to specific repositories or container images to external infrastructures
that need to access your data, for example to deploy applications on Kubernetes. This setting is available for project and group level.

Continuous Delivery

image for Deploy Keys

Deploy Keys

Deploy keys allow read-only or read-write access to your repositories by importing an SSH public key into your GitLab instance.

Continuous Delivery

image for Pipeline Resource Groups

Pipeline Resource Groups

Allows limiting the concurrency of running jobs to permit only one deployment per resource group at any given time. Resource groups are also supported for parent-child and multi-project pipelines.

Continuous Delivery

image for Robust deploy and rollback bundle

Robust deploy and rollback bundle

Encapsulate knowledge of deploying and rolling back into something more than a script, perhaps similar to a k8s operator. Something that knows how to handle failure. e.g. if you’re deploying 7 services and one fails, you can’t just stop, you probably have to rollback the 6 that succeeded, as well as the 7th that failed. (Now, depending on implementation, it still might be a script that triggers some kind of operator). GitLab can deploy and rollback, but only via scripts with limited error handling.

Continuous Delivery

image for Auto Rollback in case of failure

Auto Rollback in case of failure

If a critical alert is triggered on production, Auto rollback rolls your deployment back to the last successful deployment.

Continuous Delivery

image for Pre-written deploy target mechanisms

Pre-written deploy target mechanisms

GitLab Auto DevOps knows how to deploy to Kubernetes. Other vendors have built-in mechanisms to deploy to AWS VMs, Fargate, etc.

Continuous Delivery

image for Load balancer management for Blue/Green deployment

Load balancer management for Blue/Green deployment

Blue/green deployment requires switching traffic from one set of servers to another. With GitLab today, you can manage of your load balancer via scripts, but it's not built in as a first-class citizen.

Deployment Management

Deploying applications from testing environments to multi-region production servers is a core requirement of DevSecOps. Deployments should be easy to codify for platform engineers and simple to interact with for engineers and release managers. Moreover, they should follow company requirements in terms of compliance and security. Deployment management supports multi-cloud, cloud-native, and legacy infrastructures and unifies the platform experience by integrating tools and frameworks, such as Flux for GitOps.

Deployment Management

image for Environment-specific variables

Environment-specific variables

Limit the environment scope of a variable by defining which environments it can be available for.

Deployment Management

image for GitLab Agent for Kubernetes

GitLab Agent for Kubernetes

Manage the deployments and connection to your Kubernetes clusters in a secure and compliant way, driven by code. The agent supports push and pull-based deployments and operational container scanning with fine-grained access controls.

Deployment Management

image for Fine-grained access controls for CI/CD based Kubernetes deployments

Fine-grained access controls for CI/CD based Kubernetes deployments

Restrict GitLab CI/CD deployment jobs using Kubernetes RBAC

Deployment Management

image for GitOps deployment management

GitOps deployment management

Run GitOps-style deployments tightly integrated into GitLab

Deployment Management

image for Timed and manual incremental rollout deployments

Timed and manual incremental rollout deployments

GitLab can allow you to deploy a new version of your app on Kubernetes starting
with just a few pods, and then increase the percentage if everything is working fine.
This can be configured to proceed per a schedule or to pause for input to proceed.

Deployment Management

image for Canary Deployments

Canary Deployments

GitLab Premium can monitor your Canary Deployments when
deploying your applications with Kubernetes. Canary Deployments can be configured directly through .gitlab-ci.yml, the API, or from the UI of the Deploy Boards.

Deployment Management

image for Complex, simultaneous deployments per environment

Complex, simultaneous deployments per environment

Canaries, blue/green deploys, and other simultaneous deployment concepts where an environment, like production, would have multiple deployments running at the same time. GitLab has this information, and can even show canary deployments in the deploy board, but in some other places only shows the most recent deployment.

Deployment Management

image for Load balancer management for Blue/Green deployment

Load balancer management for Blue/Green deployment

Blue/green deployment requires switching traffic from one set of servers to another. With GitLab today, you can manage of your load balancer via scripts, but it's not built in as a first-class citizen.

Environment Management

Environments are at the center of DevSecOps, bringing the results of application development in front of the users. They provide traceability of deployments, visualisation of workload states, and support advanced rollout strategies, feature flag management, and when necessary rollbacks.

Environment Management

image for Environments and deployments

Environments and deployments

GitLab CI is capable of not only testing or building your projects, but
also deploying them in your infrastructure, with the added benefit of
giving you a way to track your deployments. Environments are like tags for
your CI jobs, describing where code gets deployed.

Environment Management

image for Per-environment permissions

Per-environment permissions

Developers and QA can deploy to their own environments on demand while production stays locked down. Build engineers and ops teams spend less time servicing deploy requests, and can gate what goes into production.

Environment Management

image for Environment-specific variables

Environment-specific variables

Limit the environment scope of a variable by defining which environments it can be available for.

Environment Management

image for Protected Environments

Protected Environments

Specify which person, group, or account is allowed to deploy to a given
environment, allowing further protection and safety of sensitive environments.

Environment Management

image for Environment type

Environment type

When defining an environment in .gitlab-ci.yml, in addition to the environment name, you can define the environment type, which can be one of: production, staging, testing, development, or other.

Environment Management

image for Environments Dashboard

Environments Dashboard

Visualize cross-project environments, track change flow from development to production, track pipeline status and diagnose issues from a single dashboard.

Environment Management

image for View alerts on the Environments page

View alerts on the Environments page

Seeing triggered alerts alongside the status of your environments enable you to take immediate action to remedy the situation.

Environment Management

image for Manage access to protected environments from the API

Manage access to protected environments from the API

GitLab offers users the ultimate flexibility of setting up and configuring Environments via the API or UI. We also support Maintainer's control of access to Protected Environments via API.

Feature Flags

Reduce deployment risk with a progressive rollout strategy that includes feature flags — enabling teams to toggle feature availability, test features in small batches, and separate deployment from customer launch.

Feature Flags

image for Feature Flags

Feature Flags

This feature gives you the ability to configure and manage feature flags for
your software directly in the product. Simply create a new feature
flag, validate it using the simple API instructions in your software,
and you have the ability to control the behavior of your software
via the feature flag within GitLab itself. Feature Flag strategies can be set per environment . GitLab Feature Flags includes an
API for interacting with them.

Feature Flags

image for Feature Flag List view

Feature Flag List view

This feature gives you the ability to view all the feature flags configured in a project. You can toggle the flags on or off directly from this page, and view all the associated information for a flag. This includes the strategies linked to the flag, the number or percent of users affected, and the environments.

Feature Flags

image for Percent of Users Strategy for Feature Flags

Percent of Users Strategy for Feature Flags

You can select "Percent of Users" as a rollout strategy for your feature flags. This allows percentages to be set individually for each environment and each flag. When "Percent of Users" is configured and the flag is enabled, the feature will be shown to the configured percentage of logged-in users. This allows you to do controlled rollouts and monitor the behavior of the target environment to ensure the results are as expected.

Feature Flags

image for Flexible Rollout Strategy for Feature Flags

Flexible Rollout Strategy for Feature Flags

You can define the stickiness of the rollout strategy. This can be based on the session ID or user ID, or random (no stickiness). This gives you more control over the rollout and also opens the option for supporting stickiness for anonymous users.

Feature Flags

image for UserID Rollout Strategy for Feature Flags

UserID Rollout Strategy for Feature Flags

You can choose "User ID" as a rollout strategy for your feature flags. The User ID strategy allows you to specify a comma-separated list of User IDs and then toggle a feature flag only for the specified users. This can allow you to target testing features with specific cohorts or segments of your userbase.

Feature Flags

image for Set multiple strategies per environment

Set multiple strategies per environment

You can define multiple strategies independent of environments via API and/or UI.

Feature Flags

image for User List Strategy for Feature Flags

User List Strategy for Feature Flags

You can choose "User List" as a rollout strategy for your feature flags. User lists can be reused for multiple feature flags while allowing you to manage them in a single location. You can create Feature Flag user lists from the API, and edit or delete them from the API or UI.

Feature Flags

image for Associate Feature Flags with the issue(s) that is related to them

Associate Feature Flags with the issue(s) that is related to them

You can create a link from the issue that introduced the Feature Flag to the Feature Flag itself. That relationship is visible in the Feature Flag details. Feature Flags also support Markdown and can be referenced from any issue.

Infrastructure as Code

Automate the provisioning of infrastructure resources through Infrastructure-as-Code, use Terraform/OpenTofu with zero-configuration from CI/CD pipelines, and apply GitOps best practices to deliver software faster.

Infrastructure as Code

image for Terraform plan output summary in Merge Requests

Terraform plan output summary in Merge Requests

A merge request widget shows the summary of expected infrastructure changes after a terraform plan run

Infrastructure as Code

image for GitLab-managed Terraform state files

GitLab-managed Terraform state files

You can configure GitLab once at the instance level to use a specific object storage for all Terraform state files. This way you can start a new infrastructure project with minimal boilerplate. The state files are encrypted and versioned. GitLab provides you CI templates, UI and APIs to manage Terraform state files.

Release Orchestration

Coordinate complex releases across multiple projects in an efficient way. Leverage scheduled delivery, blackout periods, parallelization and sequencing, and support for integrating manual processes to release software faster.

Release Orchestration

image for Create a release from the UI

Create a release from the UI

You can create a release by associating it to a new or existing tag. This functionality is supported both in the UI and API. With this feature, users have more flexibility when planning releases and can associate tags to releases.

Release Orchestration

image for Environments history

Environments history

Environments history allows you to see what is currently being deployed on your servers, and to access a detailed view for all the past deployments.
From this list you can also re-deploy the current version, or even rollback an old stable one in case something went wrong.

Release Orchestration

image for Environment-specific variables

Environment-specific variables

Limit the environment scope of a variable by defining which environments it can be available for.

Release Orchestration

image for Keep track of releases using GitLab Releases

Keep track of releases using GitLab Releases

GitLab's Releases feature allow you to track deliverables in your project. Consider them a snapshot in time of the source, build output, and other metadata or artifacts associated with a released version of your code, and receive notifications when new releases are available for projects you track, including for guests of your project.

Release Orchestration

image for Group-level release analytics

Group-level release analytics

View how many releases belong to this group and what percent of the projects are associated with releases at the group level

Release Orchestration

image for Pipeline Resource Groups

Pipeline Resource Groups

Allows limiting the concurrency of running jobs to permit only one deployment per resource group at any given time. Resource groups are also supported for parent-child and multi-project pipelines.

Release Orchestration

image for Associate Releases with Milestones

Associate Releases with Milestones

The way many teams use GitLab, ourselves included, is to have a milestone for the release
that everything tracks to. Some teams may also have more than one sprint that makes up a
release. With GitLab you can associate a milestone (or more) to a release; this will populate the
release page with issues and merge requests included in the release(s).

Release Orchestration

image for Manage access to protected environments from the API

Manage access to protected environments from the API

GitLab offers users the ultimate flexibility of setting up and configuring Environments via the API or UI. We also support Maintainer's control of access to Protected Environments via API.

Release Orchestration

image for Release Progress view

Release Progress view

The progress percent complete of issues within a release.

Release Orchestration

image for Deploy Freeze

Deploy Freeze

Easily lock changes to target environments during defined time periods.

Release Orchestration

image for Link runbooks to a Release

Link runbooks to a Release

Runbooks can contain a series of steps related to executing a successful release. Link these plans to the Release page in GitLab to coordinate activities across teams, inside and outside of GitLab.

Release Orchestration

image for Create a release directly from the .gitlab-ci.yml via the release CLI

Create a release directly from the .gitlab-ci.yml via the release CLI

GitLab supports creation of a release directly from the .gitlab-ci.yml via the release CLI. The name and description can be configured directly in the .gitlab-ci.yml or read from another file in the repository.

Release Orchestration

image for Generic Package Registry

Generic Package Registry

GitLab supports a wide variety of languages in our Package Registry offering. However, you may want to store other binary types in GitLab that are not yet supported. GitLab supports raw package feeds (like you could do in Nexus) to a Generic Package Registry. Looking forward, this feature helps create the foundation for Release Assets and will ultimately make it easier for you to package and release your software with GitLab.

Release Orchestration

image for Changelog

Changelog

The changelog allows you to log all changes contained in a release.

Ready to get started?

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