GitLab is a complete DevOps platform, delivered as a single application, fundamentally changing the way Development, Security, and Ops teams collaborate and build software. From idea to production, GitLab helps teams improve cycle time from weeks to minutes, reduce development costs and time to market while increasing developer productivity.
Watch a GitLab demo直观洞悉业务绩效。
Since every application that supports Git will work with GitLab, there are hundreds of applications that can integrate and work with Gitlab. Additionally, there are many partners that integrate with authentication and authorization of GitLab.
Learn more about GitLab's multiple technology partners
GitLab will surface VSM (value stream management) style metrics, such as cycle time, lead time, and deployment frequency, aggregated and rolled up, per an individual team, across multiple teams within a department, or even across the entire organization.
See epic for details创建、查看、管理代码和项目数据,均可藉由强大的分支管理工具组完成。
Draft multiple comments in a merge request code review, before reviewing and submitting them together all at once. This allows you to review code in consistent, and self-contained sessions, instead of as individual comments.
Documentation
Create a merge request from email by sending in the merge request title, description, and source branch name. Alternatively use patch files to create a merge request without first pushing a branch.
Documentation
As a reviewer, it can be hard to tell at a glance if new code is covered by a test or not. Customers can now speed up their code reviews by seeing which lines of code are covered by tests in the Merge Request Diff.
Documentation
Dashboards with a filterable set of code reviews (could be by project, by user, by branch, by status, or a combination of those). Dashboards includes code review status and links to get to them. This makes it easy to see what is going on with code reviews for a desired subset.
Code review with GitLabWith Gitpod integrated into GitLab, you can easily launch your Gitpod Workspace directly from the GitLab interface.
Gitpod allows you to define your project’s configuration in code so you can launch a prebuilt development environment with one click.
These environments are configured through a .gitpod.yml
file inside of the project and include options for Docker configuration, start tasks, editor extensions and more.
Git’s wire protocol defines how clones, fetches and pushes are communicated between the client and server. Git protocol v2 improves performance of fetch commands and enables future protocol improvements.
Documentation
Since every application that supports Git will work with GitLab, there are hundreds of applications that can integrate and work with Gitlab. Additionally, there are many partners that integrate with authentication and authorization of GitLab.
Learn more about GitLab's multiple technology partners借助自动测试和报告来严格控制代码生产中的质量标准。
当一个流水线充当多个子流水线的父流水线时,它消除了复杂流水线创建的许多挑战。 由于子流水线可以根据父流水线中的触发器配置并发运行,因此可以提高性能。 一个额外的好处是,将单个复杂的流水线分解为具有多个子流水线的父流水线可以简化流水线可视化并最终提高整个团队的理解力。
还可以为子流水线动态生成 .gitlab-ci.yml,从而以清晰的方式轻松实现运行时行为。极狐GitLab 包含了一个Jsonnet模板的示例,说明了如何使用数据模板语言执行此操作。
Documentation
GitLab CI/CD cloud native architecture can easily scale horizontally by adding new nodes if the workload increases. GitLab Runners can automatically spin up and down new containers to ensure pipelines are processed immediately and minimize costs.
Documentation
The latest artifact of a successful job and pipeline on any active branch, MR, or tag is automatically locked to prevent being deleted. This makes it possible to set an aggressive expiration policy to clean up older artifacts, reduce disk space consumption, and ensure the latest artifact is always available. This default behavior is configurable at the project level and can be disabled in project settings.
Documentation
GitLab Runner supports Linux operating systems on ARM architectures and can run jobs natively on this platform. You can automatically build, test, and deploy for Linux ARM based projects by leveraging shell scripts and command line tools.
Documentation
GitLab Runner supports FreeBSD and can run jobs natively on this platform. You can automatically build, test, and deploy for FreeBSD-based projects by leveraging shell scripts and command line tools.
Documentation
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.
Documentation
With this feature you are able to use Docker containers on Windows directly, in much the same was as if they were on Linux hosts. This enables more advanced kinds of pipeline orchestration and management for users of Microsoft platforms.
Documentation
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.
Documentation
将.gitlab-ci.yml的路径指定为任意 URL,以将CI配置存储在非正在构建的仓库中。 这允许通过将所有仓库指向同一个外部 gitlab-ci.yml 文件,然后以相同的方式处理数百个仓库,并通过只使用一个CI配置文件为多个仓库进行更新来提高效率。动态生成配置文件的服务用例也会受益。在另外一个项目中托管 .gitlab-ci.yml 文件,以使在大规模使用时可以启用 CI 配置访问控制,因为可以严格限制托管文件的项目中所有人员的写权限,以防止未经授权的用户进行更改。
Documentation
Other CI systems show execution time for each single command run in CI jobs, not just the overall time. We’re reconsidering how job output logs are managed in order to add this feature as well.
Documentation当一个流水线充当多个子流水线的父流水线时,它消除了复杂流水线创建的许多挑战。 由于子流水线可以根据父流水线中的触发器配置并发运行,因此可以提高性能。 一个额外的好处是,将单个复杂的流水线分解为具有多个子流水线的父流水线可以简化流水线可视化并最终提高整个团队的理解力。
还可以为子流水线动态生成 .gitlab-ci.yml,从而以清晰的方式轻松实现运行时行为。极狐GitLab 包含了一个Jsonnet模板的示例,说明了如何使用数据模板语言执行此操作。
Documentation
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.
Documentation
A directed acyclic graph can be used in the context of a CI/CD pipeline to build relationships between jobs such that execution is performed in the quickest possible manner, regardless how stages may be set up.
For example, you may have a specific tool or separate website that is built as part of your main project. Using a DAG, you can specify the relationship between these jobs and GitLab will then execute the jobs as soon as possible instead of waiting for each stage to complete.
Documentation
Using the merge_requests
value with only/except
keywords allows
you to configure jobs to run only (or except) when in the context of a merge request.
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.
“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.
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.
Learn how to generate and show code coverage information in GitLab
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.
Documentation通过使用内置的软件包管理工具创建一条一致且可靠的软件供应链
Easily debug your packages in any of your environments using the built-in GitLab Web Terminal. GitLab can open a terminal session directly from your environment if your application is deployed on Kubernetes. This is a very powerful feature where you can quickly debug issues without leaving the comfort of your web browser.
Documentation
Each version of a package is nested under its uniquely-named parent. Now you can easily find the package you are looking for in the UI and better understand what has changed from version to version.
Documentation
“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.”
Documentation
GitLab ships with its own Container Registry, Docker CI Runner, and is ready for a complete CI/CD container workflow. There is no need to install, configure, or maintain additional plugins.
Documentation
In the context of the Docker registry, garbage collection is the process of removing blobs from the filesystem when they are no longer referenced by a manifest.
Documentation
Easily define, manage and update project-level policies to define which images should be removed and preserved. This feature is designed to help you reduce storage costs and prevent important images from being deleted.
Documentation
For many organizations, it is useful to have a caching proxy for frequently used upstream images/packages. In the case of CI/CD, the proxy is responsible for receiving a request and returning the upstream image from a registry, acting as a pull-through cache to speed up your pipelines. By keeping a copy of needed container layers locally, you can improve performance particularly for commonly used images, such as build environments.
Documentation
For organizations that rely on many open source dependencies, it is important to limit their exposure to open source security vulnerabilities. This can be done by establishing and enforcing policies to restrict which dependencies may be used, by having a central location to verify the integrity of dependencies and how they are being utilized.
Learn more about Dependency Firewall安全功能已集成到软件开发生命周期中。
“All merge requests will show a helpful high level security scan summary of finding severities if there have been security scans run. This helps developers understand the risk of introduced vulnerabilities and helps users easily find secure job artifacts. Ultimate customers will continue to enjoy Vulnerability Management features across all our scan types.”
Read more about the Security Scan summary极狐GitLab 允许您在流水线中运行密钥检测,检查是否有包含未察觉的密钥和证书代码提交。检查结果将被展示在合并请求和流水线中。这一特性将作为 Auto DevOps 的一部分来提供默认安全策略。
Documentation
“All merge requests will show a helpful high level security scan summary of finding severities if there have been security scans run. This helps developers understand the risk of introduced vulnerabilities and helps users easily find secure job artifacts. Ultimate customers will continue to enjoy Vulnerability Management features across all our scan types.”
Read more about the Security Scan summary
“post-processing hooks for Secret Detection. These can be used to take actions like notifying the cloud service that issued the secret. Post-processing workflows vary by supported cloud providers.”
Documentation极狐GitLab集成CD(持续交付) 解决方案允许您以Zero-touch的方式发布代码,在一台服务上或在一千台服务器上均无差别。
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.
Documentation当一个流水线充当多个子流水线的父流水线时,它消除了复杂流水线创建的许多挑战。 由于子流水线可以根据父流水线中的触发器配置并发运行,因此可以提高性能。 一个额外的好处是,将单个复杂的流水线分解为具有多个子流水线的父流水线可以简化流水线可视化并最终提高整个团队的理解力。
还可以为子流水线动态生成 .gitlab-ci.yml,从而以清晰的方式轻松实现运行时行为。极狐GitLab 包含了一个Jsonnet模板的示例,说明了如何使用数据模板语言执行此操作。
Documentation
GitLab CI/CD cloud native architecture can easily scale horizontally by adding new nodes if the workload increases. GitLab Runners can automatically spin up and down new containers to ensure pipelines are processed immediately and minimize costs.
Documentation
GitLab Runner supports Linux operating systems on ARM architectures and can run jobs natively on this platform. You can automatically build, test, and deploy for Linux ARM based projects by leveraging shell scripts and command line tools.
Documentation
GitLab Runner supports FreeBSD and can run jobs natively on this platform. You can automatically build, test, and deploy for FreeBSD-based projects by leveraging shell scripts and command line tools.
Documentation
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.
Documentation
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.
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.
Documentation
将.gitlab-ci.yml的路径指定为任意 URL,以将CI配置存储在非正在构建的仓库中。 这允许通过将所有仓库指向同一个外部 gitlab-ci.yml 文件,然后以相同的方式处理数百个仓库,并通过只使用一个CI配置文件为多个仓库进行更新来提高效率。动态生成配置文件的服务用例也会受益。在另外一个项目中托管 .gitlab-ci.yml 文件,以使在大规模使用时可以启用 CI 配置访问控制,因为可以严格限制托管文件的项目中所有人员的写权限,以防止未经授权的用户进行更改。
Documentation
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.
Other CI systems show execution time for each single command run in CI jobs, not just the overall time. We’re reconsidering how job output logs are managed in order to add this feature as well.
Documentation
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.
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.
DocumentationThis 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.
DocumentationYou 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.
DocumentationYou 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.
DocumentationYou 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.
DocumentationYou 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.
DocumentationThe 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).
Documentation
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.
Documentation
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.
Documentation
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.
Documentation
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.
Documentation
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.
Documentation
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.
Documentation
“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.”
Documentation
“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.”
Documentation配置您的应用程序和基础架构。
极狐GitLab 允许您在流水线中运行密钥检测,检查是否有包含未察觉的密钥和证书代码提交。检查结果将被展示在合并请求和流水线中。这一特性将作为 Auto DevOps 的一部分来提供默认安全策略。
Documentation
Create a Kubernetes cluster on GKE directly from your project, just connecting your Google Account and providing some information. The cluster can be used also by Auto DevOps to deploy your application.
Documentation帮助降低事故的严重性和发生频率。
Reviewing and analyzing a server for availability, operations, performance, security and other operations-related processes. Monitor servers system resources like CPU Usage, Memory Consumption, I/O, Network, Disk Usage, Process, etc. GitLab uses the Node Exporter (via Prometheus) to expose an extensive set of machine-level metrics on Linux and other Unix systems such as CPU usage, memory, disk utilization, filesystem fullness, and network bandwidth.
Tracing provides insight into the performance and health of a deployed application, tracking each function or microservice which handles a given request. This makes it easy to understand the end-to-end flow of a request, regardless of whether you are using a monolithic or distributed system.
Documentation保护您的应用和基础设施免遭安全入侵。
“With Container Host Monitoring, you can monitor running containers for malicious or unusual activity. This includes process starts, file changes, or opened network ports. You can also block or prevent these activities from occurring.”
Documentation
Cloud native network firewall provides container-level network micro segmentation which isolates container network communications to limit the “blast radius” of compromise to a specific container or microservice. A container-aware virtual firewall identifies valid traffic flows between app components in your cluster and limits damage by preventing attackers from moving through your environment when they have already compromised one part of it.
Documentation