Gitlab hero border pattern left svg Gitlab hero border pattern right svg
GitLab
vs
GitHub
Comparison
Comparison

GitHub Overview

GitHub is a collaborative code repository to host and review code, manage projects and build software. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.

In November 2019, GitHub announced general availability of GitHub Actions for all users. GitHub Actions feature enables code snippets to be run in a container upon a wide variety of GitHub API calls. This has the promise of enabling users to orchestrate their workflows based on any event. With GitHub Actions, workflows and steps are just code in a repository. Actions enable GitHub to offer CI/CD, which makes it easier to automate how you build, test, and deploy your projects and includes runner support for Linux, macOS, and Windows. It runs your workflows in a container or in a virtual machine.

Similarly, GitLab has integrated CI/CD, but also offers additional capabilities such as application performance and server monitoring. GitLab also includes static and dynamic security testing and container scanning.

GitHub does not come with a deployment platform and needs additional applications, like Heroku, in order to deploy applications. GitLab leverages Kubernetes to create a seamless deployment experience in a single application.

GitHub v/s GitLab
Decision Kit

Explore comparisons between GitLab’s and GitHub’s DevOps Solution offering.
Review the GitLab vs. GitHub for Business Decision Makers (BDM) page
to understand top points BDMs should consider when comparing GitLab to GitHub.

The Decision Kit
Feature comparisons, roadmap comparisons, licensing, support and other detailed information on both products.
View Decision Kit
Feature Comparison
FEATURES

Free CI/CD with shared or personal Runners

GitLab.com has shared Runners that allow you to use GitLab CI/CD completely free up to 400 build minutes for private projects and 50000 minutes for public projects. Alternatively, you can set up your own Runner for faster build processing, unlimited build minutes, or special requirements.

Explore GitLab.com offerings

内置CI/CD

极狐GitLab 内置无需独立安装的免费 CI/CD 功能,用户可使用该功能构建、 测试和部署网站(极狐GitLab Pages)或 Web 应用。CI/CD 任务的执行结果会显示在合并请求中以方便访问。

Learn more about CI/CD

Innersourcing

Internal projects in GitLab allow you to promote innersourcing of your internal repositories.

Find out more about innersourcing

Availability

GitLab.com is at 99.5% availability while we want to be above 99.95%. We’re hiring to improve this in the last two months of 2017 and in 2018.

GitLab.com status

The most comprehensive import feature set

GitLab can import projects and issues from more sources (GitHub, Bitbucket, Google Code, FogBugz, Gitea and from any Git URL) than GitHub or any other VCS. We even have you covered for your move from SVN to Git with comprehensive guides and documentation.

Making it easier to get up and running with GitLab

Export projects

GitLab allows you to export your project to other systems.

We don't restrict access to your data

Issues

Quickly set the status, assignee or milestone for multiple issues at the same time or easily filter them on any properties. See milestones and issues across projects.

Learn more about the Issue Tracker

Description Templates

By adding a description template to your issues or merge requests, users who create a new issue or merge request can select a template to help them to communicate effectively.

Learn more about GitLab Description Templates

GitLab Flavored Markdown

GitLab uses ‘GitLab Flavored Markdown’ (GFM). It extends the standard Markdown in a few significant ways to add some useful functionality.

Learn more about GitLab Flavored Markdown

Labels

Labels provide an easy way to categorize issues, merge requests, or epics based on descriptive titles as ‘bug’, or ‘documentation’.

Learn more about GitLab Labels

议题权重

极狐GitLab 支持您通过设置议题的权重来围绕敏捷实践管理议题。

Read our Issue Weights documentation

Milestones

Create and manage milestones at both the project and group levels, viewing all the issues for the milestone you’re currently working on, representing an Agile program increment or a release.

Learn more about Milestones

迭代

极狐GitLab 提供群组层面迭代的创建和管理能力,它支持您查看群组或项目在当前迭代中正在进行的所有议题,并确保群组下所有的子群组和项目以同样的节奏保持同步。

Learn more about Iterations

Issue Due Dates

In GitLab, you can set a due date for individual issues. This is very convenient if you have small tasks with a specific deadline.

Due dates documentation

议题多指派人

极狐GitLab 提供了为单个议题一次分配多个指派人的能力。

Read our Multiple Assignees Documentation

Lock Discussion

Lock down continued discussion in an issue or merge request as a Master role or higher, to prevent further abuse, spam, or unproductive collaboration.

Lock Discussion

Confidential Issues

Keep your information secure with Confidential Issues. With GitLab, you can create confidential issues visible only for project members with Reporter access level or above.

Learn more about Confidential Issues

议题依赖

极狐GitLab 支持将议题显式的标注为已阻塞和受阻中,并跟踪其状态。为便于识别,被阻塞的议题在议题卡视图中可见。

Learn more about Issue Depdendencies

Related Issues

Mark issues as related to one another.

Learn more about Related Issues

Move Issue to Another Project

You can move issues between projects in GitLab. All links, history and comments will be copied and the original issue will reference the newly moved issue. This makes working with multiple issue trackers much easier.

Learn more about moving issues between projects

Mark Issue as Duplicate

Mark an issue as a duplicate of another issue, closing it.

Learn more about marking duplicate issues

Export Issues CSV file

Issues can be exported as CSV from GitLab and are sent to your default notification email as an attachment.

Learn more about exporting issues CSV

燃起图

基于极狐GitLab 中提供的里程碑和迭代燃起图,您可以更好地了解在迭代冲刺阶段或新版本软件进行时的范围变化。

Read our Burnup Charts documentation

燃尽图

极狐GitLab 提供的燃尽图是里程碑和迭代的一部分,它支持让用户在迭代冲刺阶段或新版本软件进行时更好地跟踪进度。

Read our Burndown Charts Documentation

Quick Actions

GitLab provides a convenient way to change metadata of an issue or merge request without leaving the comment field with quick actions.

Documentation about quick actions

To-Do List

When a user is mentioned in or assigned to an issue or merge request, it will be included in the user’s To-Do List, making the development workflow faster and easier to track.

Learn more about To-Do List

Track Comment Changes

View the full history of comment updates.

Drag and Drop Tasks

Drag and drop tasks in a task list.

See the GitLab issue to implement this

Rich Object Summary on Link Hover

View an information-rich summary by hovering over links to users, issues, merge requests, and other objects in GitLab.

See the epic that implements this

Create GitLab Branch from Jira Development Panel

Create a GitLab branch from within the development panel of a JIRA issue.

See issue

Create GitLab Merge Request from Jira Development Panel

Create a GitLab merge request from within the development panel of a JIRA issue.

See issue

项目议题看板

极狐GitLab 提供议题看板功能,议题看板的每个列都基于议题跟踪器中存在的标签建立,因此它将以用户友好的方式匹配议题跟踪器状态。

Learn more about GitLab Issue Boards

时间线跟踪

极狐GitLab 提供时间线跟踪功能,您的团队可以在议题和合并请求上添加时间预估,并记录真实花费的时间。

Learn more about Time Tracking

Commit graph and reporting tools

GitLab provides commit graphs and reporting tools about collaborators’ work.

Learn more about commit graphs

必需的合并请求批准

当项目需要多次验收时,您可以要求每个合并请求在合并之前都得到批准。通过“必需的合并请求批准”,您可以设置必要的批准次数,并预定义特定的审批人清单,从而通过依次审批的方式来保证代码的质量和标准。

Learn more about merge request approvals

多审批人代码审核

极狐GitLab 为确保严格的代码审查,在合并请求能够被合并之前,您可以要求得到批准的最小用户数量。在代码最终合并前,您也可以撤销批准。

Approvals Documentation

代码评审的批准规则

通过指定正确的审批人列表、最小审批者数量以及受保护的目标分支,确保合适的人员使用批准规则来评审合并请求,进而方便的从工程、体验和产品等不同团队请求评审。

Approvals Documentation

仓库拉取镜像

创建远程 Git 服务器到本地服务器的代码仓库镜像,从而更方便的让本地派生和副本保持到最新。

Learn more about repository pull mirroring

Create new branches from issues

In GitLab, you can quickly create a new branch from an issue on the issue tracker. It will include the issue number and title automatically, making it easy to track which branch belongs to which issue.

See how in our documentation

Allow edits from upstream maintainers in a fork

When a user opens a merge request from a fork, they are given the option to allow upstream maintainers to collaborate with them on the source branch. This allows the maintainers of the upstream project to make small fixes or rebase branches before merging, reducing the back and forth of accepting community contributions.

Search files with fuzzy file finder

GitLab provides a way to search a file in your repository in one keystroke.

Read about the file finder in our documentation

Fast-forward merge with option to rebase

With this setting at the project level, you can ensure that no merge commits are created and all merges are fast-forwarded. When a fast-forward merge is not possible, the user is given the option to rebase.

Learn more about rebase before merge

Squash and merge

Combine commits into one so that main branch has a simpler to follow and revert history.

Learn more about squash and merge

Remote repository push mirroring

Mirror a repository from your local server to elsewhere. Push mirroring is supported via HTTP and SSH using password authentication, and using public-key authentication with SSH.

Learn more about repository push mirroring

拒绝未签署的提交

极狐GitLab 专业版允许您拒绝未签署的提交来强制执行 GPG 签名。

Read more about enforcing push rules

提交者验证

验证代码推送中只包含推送执行用户的代码提交。

In development for GitLab. Follow this link for more information.

Cherry-picking changes

Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a specific commit.

Learn more about cherry picking merge requests

GPG Signed Commits

Sign commits and prove that a commit was performed by a certain user.

Read more about GPG signed commits

Custom Git Hooks

Leverage the power of Git Hooks and chain them together to fire off custom scripts when certain actions occur on the repository. If the commit is declined or an error occurs during the Git hook check, the error message of the hook will be present in GitLab’s UI. GitLab supports all types of hooks.

Learn how to use Git Hooks with GitLab

Git LFS 2.0支持

Git LFS 支持大文件,例如音频,视频和图形文件的管理。Git LFS 2.0 文件锁定支持可帮助大型团队处理二进制文件,并与极狐GitLab 原生的文件锁定功能集成。

Learn more about Git LFS support in GitLab

Keep personal email private

Use a noreply email address for your commits instead of your personal email address private.

Learn more about private commit email addresses

Download single repository files

When browsing through project repositories on GitLab, having direct access to single files is a relevant use case. A ‘Download’ button in the file viewer allows you to download individual files from the GitLab UI.

Learn more about Project repositories

实例文件模版

为极狐GitLab 实例自定义 LICENSE,.gitignore,Dockerfile 和 .gitlab-ci.yml 模板,以便更容易地实现项目的一致性。

Learn more about custom instance file templates

群组文件模板

为群组自定义 LICENSE,.gitignore,Dockerfile 和 .gitlab-ci.yml 模板,以便更容易地实现项目的一致性。

Learn more about custom group file templates

S/MIME Signed Commits

Sign commits and prove that a commit was performed by a certain user.

Read more about S/MIME signed commits

Optional Merge Request Approvals

Code review is an essential practice of every successful project, and giving your approval once a merge request is in good shape is an important part of the review process, as it clearly communicates the ability to merge the change.

Learn more about optional merge request approvals

代码所有者

通过将代码所有者分配到CODEOWNERS文件中,以指明负责项目中代码的团队成员。代码所有者能被自动分配为合并请求审批人,可以根据需要进行设置,并在查看文件时显示。

Learn more about Code Owners

代码所有者分段

代码所有者分段支持每个团队独立配置他们自己的代码所有者配置,来让多个团队照看代码库的公共部分。

Learn more about Code Owners Sections

Image Discussions

Within a commit view or a merge request diff view, and with respect to a specific location of an image, you can have a resolvable discussion. Have multiple discussions specifying different areas of an image.

Image Discussions

Merge Request Commit Discussions

Comment on a commit within the context of a merge request itself

Merge Request Commit Discussions

First time contributor badge

Highlight first-time contributors in a project.

Deduplicate Git objects for forked repositories

Reduce disk storage requirements of forked Git repositories by pooling Git objects.

Read about Git object pools

使用 Gitaly 集群来进行 Git 存储的扩展容错

通过移除故障节点、侦测故障和自动切换到备份来提升 Git 储存的高可用性和高性能。

Learn more about Gitaly Cluster

Variable replication factor for Git storage

Scale Git storage to extreme loads and storage volumes cost effectively by varying the replication of each repository.

可变复制因子

Gitaly 集群允许为储存在集群上的每个代码仓库配置复制因子。

Web IDE

Contribute to projects faster by using the Web IDE to avoid context switching in your local development environment. The Web IDE is integrated with merge requests and GitLab CI so that you can resolve feedback, fix failing tests and preview changes live with client side evaluation without leaving the Web IDE.

Learn more about the Web IDE

Live Preview in the Web IDE

Preview changes as you make them to your JavaScript and static HTML projects with Live Preview in the Web IDE.

Learn more about the Web IDE

Web Terminal for Web IDE

Interact with your code in a Web Terminal in the Web IDE to inspect API responses, experiment in a REPL, or compile your code.

Learn more about the Web IDE Web Terminal

File Syncing to Web Terminal

Changes made in the Web IDE will now be synced to the Web Terminal. User changes made in the Web IDE can now be tested within the Web Terminal before committing them to the project.

Learn more about File Syncing to Web Terminal

EditorConfig in the Web IDE

The Web IDE supports the use of .editorconfig files in projects for standardizing coding style of all users working on the project. This helps to easily keep consistency and quality throughout the project.

Learn more about configuring the Web IDE

Paste images in Markdown in the Web IDE

When editing Markdown files in the Web IDE you can now paste images into the content so that they’ll be automatically uploaded and referenced in the content.

Learn more about Markdown editing in the Web IDE

Real-time feedback for .gitlab-ci.yml in Web IDE

To make it easier to configure your GitLab CI pipeline, the Web IDE now provides real-time linting and completion when editing .gitlab-ci.yml files.

Learn more about .gitlab-ci.yml editing feedback in the Web IDE

项目级 Wiki 文档

极狐GitLab 中的每个项目都内置了 Wiki 独立文档系统,每个 Wiki 是一个单独的 Git 代码仓库。

Learn more about GitLab Wikis

设计管理

通过设计管理,用户可以将设计资产(例如线框图和原型图)上传到极狐GitLab 议题中,并将它们存储在同一个位置。产品设计师、产品经理和工程师可以以一种无缝的方式就设计提案进行协作。这些设计资产可以轻松上传并进行版本化的存储,您可以通过单击确切路径上的图片来启动希望重点讨论的主题。

Documentation

极狐GitLab-Figma 插件

我们的 Figma 插件允许您将 Figma 中的框架和组件上传到极狐GitLab 议题中。

Documentation

Application performance monitoring

GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can determine the impact of a merge and keep an eye on their production systems, without leaving GitLab.

Learn more about monitoring deployed apps

Application performance alerts

GitLab allows engineers to seamlessly create service level indicator alerts and be notified of any desired events, all within the same workflow where they write their code.

Learn more about creating SLI alerts

GitLab Self-monitoring

GitLab comes out of the box enabled for Prometheus monitoring with extensive instrumentation, making it easy to ensure your GitLab deployment is responsive and healthy.

Learn more about GitLab self-monitoring

项目级价值流分析

极狐GitLab 提供了一个仪表板,团队可以通过它度量从项目计划到运行监控所需的时间。极狐GitLab 能够提供这些数据是因为内置了所有相关的工具:从商业想法到持续集成,从代码审查到生产部署。

Learn more about Value Stream Analytics

群组级价值流分析

极狐GitLab 提供的群组仪表板,能让团队衡量从项目计划到运行监控所花费的时间。极狐GitLab 能够提供这些数据是因为内置了所有相关的工具:从商业想法到持续集成,从代码审查到生产部署。

Learn more about Value Stream Analytics

SUPPORT file link

Link from new issues to a SUPPORT file, pointing to support resources.

See the GitLab issue to implement this

Built-in Container Registry

GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management. (Codefresh will be ending their support for private docker registries as of May 1, 2020

Documentation on Container Registry

Review Apps 预览更改

在使用极狐GitLab CI/CD 的时候,您可以为每条分支新建一个运行环境,从而加速您的开发过程。为您的合并请求创建的动态环境,能够实现在真实的运行环境中预览您的分支内容。Review Apps 同时支持静态和动态 URL。

Learn more about Review Apps

环境自动停止

环境自动停止支持用户配置可选的到期日,并为 Review Apps 的环境设置该日期。

Learn more about Environments auto-stop

New features every month

GitLab is updated with new features and improvements every month on the 22nd.

One integrated tool

Other tools require the integration of multiple 3rd party tools to complete the software development lifecycle. GitLab has a completely integrated solution that covers the entire development lifecycle.

Access to the server

You have complete control of the server/instance, so you can install additional software (intrusion detection, performance monitoring, etc.) and view log files on the server itself. GitLab’s advanced log system means everything gets logged and provides you with easy access to a wealth of log file information.

Learn more about logging

Runs on metal

GitLab can run on bare metal servers where you can have control of the disk I/O, CPU, RAM, etc. Scale horizontally without an issue.

Read about the different ways to install GitLab

Run your own software on your instance

You are free to run your own software on the instance that GitLab is running on. Have your own intrusion detection system? No problem.

Read about the different ways to install GitLab

Use your configuration management software

You can use your choice of configuration management software, from Puppet, Chef, Ansible for quick and straightforward implementation.

Read about the different ways to install GitLab

Use standard Unix tools for maintenance and monitoring

Use the tools you know for monitoring and maintenance, whether they’re standard or your own. GitLab doesn’t restrict you.

Read about the different ways to install GitLab

IPv6 ready

Both GitLab.com and GitLab Self-manages support IPv6.

Read the docs on configuring IPv6

AD / LDAP integration

Sync groups, manage SSH-keys, manage permissions, authentication and more. You can manage an entire GitLab instance through the LDAP / AD integration.

More information about AD / LDAP integration

多重 LDAP / AD 服务器支持

连接多重 LDAP 服务器支持极狐 GitLab 的授权与认证。

Advanced LDAP configuration

Ease of migration from other providers

GitLab lets you easily migrate all repos, issues and merge request data from your previous provider.

Learn how to migrate your projects to GitLab

Access to and ability to modify source code

GitLab is publicly readable, meaning you can scan or modify the code to meet your security and development needs. The code used by most other providers is proprietary, meaning you cannot edit or view the source code.

Read the GitLab license.

事件审核

为维护代码的完整性,极狐GitLab 专业版可支持管理员在高级事件审核系统中查看极狐GitLab 服务器内所做的所有修改,因此您可以管控、分析和跟踪每个变更。

Learn more about Audit Events

Granular user roles and flexible permissions

Manage access and permissions with five different user roles and settings for external users. Set permissions according to people’s role, rather than either read or write access to a repository. Don’t share the source code with people that only need access to the issue tracker.

Learn more about User Roles

Merge conflict resolution

Preview merge conflicts in the GitLab UI and tell Git which version to use.

Learn more about the merge conflict resolution UI

Merge when pipeline succeeds

When reviewing a merge request that looks ready to merge but still has one or more CI/CD jobs running, you can set it to be merged automatically when the jobs pipeline succeeds with a single click. No configuration required.

Learn more about Merge when pipeline succeeds

Revert specific commits or a merge request from the UI

Revert any commit or a single merge request from GitLab’s UI, with a click of a button.

Learn how to revert a commit or a merge request from the GitLab UI.

Inline commenting and discussion resolution

Code or text review is faster and more effective with inline comments in merge requests. Leave comments and resolve discussions on specific lines of code. In GitLab, Merge Request inline comments are interpreted as a discussion and can be left on any line, changed or unchanged. You can configure your project to only accept merge requests when all discussions are resolved.

Learn more about resolving discussions

Subgroups: groups within groups

Create groups within groups to easily manage large numbers of people and projects.

Learn more about Subgroups

Container debugging with an integrated web terminal

Easily debug your containers 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.

Learn more about the web terminal

Scheduled triggering of pipelines

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

Learn how to trigger pipelines on a schedule in GitLab

极狐GitLab Pages 免费发布静态网站

极狐GitLab Pages 提供了一套简便的系统,用于使用极狐GitLab 仓库和极狐GitLab CI 托管静态网站。该系统具有完备的自定义域名,访问控制和 HTTPS 支持等功能。

Learn more about GitLab Pages

使用极狐GitLab Release 跟踪版本发布

极狐GitLab Release 功能支持您跟踪项目中可交付物,将它们视为来源、构建产出,以及与代码已发布版本关联的相关元数据或工件的时间快照。并在您跟进的项目有可用的新版本时接收到通知,包括项目的访客也会收到该通知。

Learn more about GitLab Releases

群组级发布分析

查看在群组级别下属于此群组的发布数量以及发布相关联的项目百分比。

Learn more about GitLab Release Analytics

Publish your website from a private project for free

With GitLab Pages, you can create a private repository to hold your site content, and keep only the page source (HTML) available online.

Visit GitLab Pages Documentation.

Custom domains for GitLab Pages

With GitLab Pages websites, you can use a custom domain or subdomain.

Learn how to apply custom domains to GitLab Pages websites

Multiple custom domains for GitLab Pages

GitLab Pages allows you to add as many custom domains (known as domain aliases) pointing to a single website. A domain alias is like having multiple front doors to one location.

Learn how to add custom domains to your GitLab Pages website

Secure custom domains (HTTPS) with GitLab Pages

Install a SSL/TLS certificate, at no cost, on a website set up with a custom domain served by GitLab Pages.

Learn how to add an SSL/TLS certificate to your GitLab Pages website

GitLab Pages custom domains verification

When adding a new custom domain, users must add an associated TXT record in order to verify they are the owner of the domain. That mechanism is used to prevent users from claiming domains they do not own.

Visit GitLab Pages Documentation.

GitLab Pages support all Static Site Generators

With GitLab, you can build any SSG, and also choose specific SSGs’ versions you want your site to build with (e.g. Middleman 4.1.1).

Learn how to build any SSG with GitLab Pages

GitLab Pages example projects

Choose an example project to fork and get started with GitLab Pages.

Watch a 3-min video tutorial on how to get started with GitLab Pages by forking a project

GitLab Pages Templates for Static Site Generators

For those not interested in forking a project, GitLab Pages also offers templates for Gitbook, Hugo, Jekyll, Gatsby, and PlainHTML to start your Pages site from a template.

Watch a 2-minute video on getting your Pages site running with a GitLab template

GitLab Pages supports all Jekyll plugins

Besides building any Jekyll version you want, with GitLab Pages you can use all Jekyll plugins available.

Visit GitLab Pages Documentation.

Access control for GitLab Pages

GitLab Pages allows you to set up custom access control for your site.

Learn how to setup access control on GitLab Pages websites

Deploy Boards

Deploy Boards offer a consolidated view of the current health and status of each CI/CD environment running on Kubernetes. The status of each pod of your latest deployment is displayed seamlessly within GitLab without the need to access Kubernetes.

Learn more about Deploy Boards

Control

Take control of maintenance downtime, don’t be at the mercy of your hosting provider. Control how and where your code is backed up and stored.

You decide when you upgrade

GitLab releases a new version each month and lets you choose when to upgrade.

Learn how to upgrade your GitLab instance

Easy upgrade process

Using our official Linux repositories or the official Docker image, upgrading GitLab is a breeze.

Learn how to upgrade your GitLab instance

Ability to edit all fields of a merge request

GitLab Merge Requests are editable by the author, the project’s owners and users with master access. Every field is editable, as well as the target branch.

Read through GitLab Merge Request's Documentation

Automatically close issue(s) when a merge request is merged

With GitLab, you can use specific keywords to close one or more issues as soon as a merge request is merged.

Learn more about automatically closing issues

Configurable issue closing pattern

Define your own specific keywords to close one or more issues as soon as a merge request is merged.

Learn more about automatically closing issues

Draft merge requests

Prevent merge requests from accidentally being accepted before they’re completely ready by marking them as Draft. This gives you all the code review power of merge requests, while protecting unfinished work.

Learn more about Draft MRs

Responsive-first design

GitLab is built with a responsive-first design approach. Be it on a desktop, tablet or smartphone, GitLab is optimized to be viewed for the best result.

Community based, users can help shape the product

GitLab has open issue trackers for almost all of its operations. From GitLab itself to infrastructure and marketing, you can help shape the product.

View all GitLab contributors

Various authentication mechanisms

GitLab can integrate with most of the authentication and authorization providers.

Read more about GitLab's authentication integration

静态应用安全测试

极狐GitLab支持在 CI/CD 流水线中轻松地运行静态应用安全测试 (SAST),检查易受攻击的源代码或应用程序包含的库中的已知安全问题,并将结果显示在合并请求和流水线视图中。此特性作为 Auto DevOps 的一部分来提供缺省的安全。

Learn more about Static Application Security Testing

limited to public repos

密钥检测

极狐GitLab 允许您在流水线中运行密钥检测,检查是否有包含未察觉的密钥和证书代码提交。检查结果将被展示在合并请求和流水线中。这一特性将作为 Auto DevOps 的一部分来提供默认安全策略。

Learn more about Secret Detection

依赖项扫描

极狐GitLab 自动检测该应用所包含的库中已知的安全问题,从而保护您的应用在动态使用依赖项时免遭漏洞影响。检测结果会显示在合并请求和流水线视图中,此特性作为 Auto DevOps 一部分来提供缺省的安全性。

Learn more about Dependency Scanning

动态应用安全测试

在应用运行后,极狐GitLab 支持在 CI/CD 流水线中运行动态应用安全测试(DAST),通过扫描您的应用以确保诸如 XSS 或无效身份验证之类的威胁不会影响到它。检测结果会显示在合并请求和流水线视图中,此特性作为 Auto DevOps 一部分来提供缺省的安全性。

Learn more about application security for containers

Interactive Application Security Testing

IAST combines elements of static and dynamic application security testing methods to improve the overall quality of the results. IAST typically uses an agent to instrument the application to monitor library calls and more. GitLab does not yet offer this feature.

安全仪表板

“安全仪表板汇报每个项目默认分支的最新安全状态。可通过单个视图查看、分流和管理项目、群组或实例级别的漏洞。可深入到各个漏洞细节,也可从更高层面查看的趋势和潜在问题点。”

Learn more about Security Dashboards

容器扫描

在为您的应用程序构建 Docker 镜像时,极狐GitLab 可以运行安全扫描以确保它没有任何已知的代码交付环境中的漏洞。结果随后显示在合并请求和流水线视图中。此功能作为 Auto DevOps 的一部分来提供缺省的安全策略。

Learn more about container scanning

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.

Learn more about Repeat failed test notification

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.

Learn more about Graphing Code Coverage in GitLab

Create projects with Git push

Push new projects to the desired location and a new private project will automatically be created.

Learn more about creating Projects

Kubernetes Cluster Monitoring

Monitor key metrics of your connected Kubernetes cluster.

Learn more about Cluster Monitoring

ChatOps

Execute common actions directly from chat, with the output sent back to the channel.

Learn more about ChatOps

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.

Learn more about Deploy Tokens

企业 SAML SSO 支持

将极狐GitLab 连接到企业的 SAML 身份提供者中,以统一管理身份验证。

Learn more about LDAP group synchronization

View Kubernetes pod logs

The monitoring of servers, application, network and security devices via generated log files to identify errors and problems for analysis. GitLab makes it easy to view the logs of running pods in connected Kubernetes clusters. By displaying the logs directly in GitLab, developers can avoid having to manage console tools or jump to a different interface.

Learn more about viewing Kubernetes pod logs

定位感知 DNS 支持

拥有 GEO 复制服务器可以使本地拉取更快,但如果不支持定位感知 DNS,开发人员需要手动重新配置他们的工具以指向最近的复制服务器。使用地理定位感知 DNS 的用户可以直接定向到最近的可用服务器,并可以更快地访问存储库数据。

Learn more about GitLab Geo

Groups dropdown in navigation

Searching for a group is directly available behind a lightweight dropdown menu, removing the need to navigate away from your work into a separate view when you’re looking for a hard-to-remember group.

Learn more about Groups

GitLab Flavored Markdown with CommonMark

GitLab Flavored Markdown is now rendered using CommonMark, a modern standard, for new Markdown content.

Learn more about GitLab Flavored Markdown

Initialize README on project creation

A repository can be initialized with an example README when creating a new project. If this option is checked, a project repository is initialized with a default master branch which can be cloned right away.

Learn more about Project creation

Allow SAML assurance level to bypass 2FA

it is now possible to honor the SAML provider’s assurance level, allowing to disable the two-factor authentication on GitLab side via a new SAML configuration option

Learn more about SAML OmniAuth Provider

Enforced Two-factor Authentication (2FA)

Two-factor authentication secures your account by requiring a second confirmation, in addition to your password. That second step means your account stays secure even if your password is compromised. The ability to enforce 2FA provides further security by making sure all users are using it.

Learn more about Enforced GitLab 2FA

Unit Test Report

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

Learn more about unit test reports

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.

Learn more about unit test summaries in the merge request widget

User status message

Define and show your personal status message via an Emoji and text message, exposed on your profile page and on any comment and author line.

Learn more about Status messages

Private profile page

In certain situations, when privacy is of concern, users might not want to show their activity, contributions and personal projects. Activity-related information can be disabled in the profile settings.

Learn more about Private profiles

Repository languages on project overview

A code languages bar on the project overview shows all relevant languages the GitLab repository consists of, including relative quantity.

Learn more about Projects

Terraform plan output summary in Merge Requests

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

Learn more about our Infrastructure as Code features

Interactive Web Terminals

Interactive web terminals allow you to connect to a running or completed Kubernetes, Docker, or Shell runner job and manually run commands to better understand what’s happening in the system.

Learn more about Interactive Web Terminals

环境保护

指定允许在给定环境中执行部署的个人、组或帐户,对敏感环境配备更进一步的防护和安全。

Learn more about Protected Environments

Leverage virtual package registries to simplify package management workflows.

A virtual registry is a collection of local, remote and other virtual registries accessed through a single logical URL.

GitLab Epic detailing the issues required to add this functionality.

Forward requests for packages not found in GitLab to npmjs.com

By default, when an NPM package is not found in the GitLab NPM Registry, the request is forwarded to npmjs.com

Check out the docs to learn more

Conan (C/C++) Repository

Conan is an open source, decentralized and multi-platform C/C++ Package Manager for developers to create and share native binaries.

Documentation on the Conan Repository

Maven (Java) Repository

GitLab’s Maven repository makes it easier to publish and share Java libraries across an organization, and ensure dependencies are managed correctly. It is fully integrated with GitLab, including authentication and authorization.

Documentation on the Maven Repository

NPM (node) Registry

GitLab’s NPM repository makes it easier to publish and share NPM packages across an organization, and ensure dependencies are managed correctly. It is fully integrated with GitLab, including authentication and authorization.

Documentation on the NPM Registry

NuGet (.NET) Repository

GitLab’s NuGet Repository allows C#/.NET developers to create, publish and share packages using the NuGet client or visual studio.

Documentation on the NuGet Repository

PyPI (Python) Repository

Python developers can set up GitLab as a remote PyPI repository and build, publish, and share packages using the PyPI client or GitLab CI/CD.

Documentation for the PyPI Repository

RPM (Linux) Repository

This planned feature will enable Linux developers to build, publish and share RPM packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

Debian (Linux) Repository

This planned feature will enable Linux developers to build, publish and share Debian packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

RubyGems (Ruby) Repository

This planned feature will enable Ruby developers to setup GitLab as a remote RubyGems repository and to build, publish and share packages using the command line or GitLab CI/CD. This will also be a valuable feature for GitLab and help with dogfooding

Check out the issue for additional details on implementation and timing

Go Proxy

This feature helps Go developers to publish and share their packages right alongside their source code and pipelines. This will also be a valuable feature for GitLab and help with dogfooding

Read the Go Proxy docs

Composer (PHP) Repository

This feature helps PHP developers to build, publish and share their packages right alongside their source code and pipelines.

Check out the docs

Use the Package Registry through REST API

Enables support for automation and integration of the GitLab Package Registry through a REST API.

Documentation on API

Works with multiple repository types

Supports more than one repository type, such as Git, Subversion, Perforce, CVS, Mercurial.

Learn about migrating from other SCMs

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.

Learn more about our infrastructure as code features

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.

Docs on GitLab triggerable events

Supports 90 event triggers
Supports 21 event triggers

Trigger pipeline on any event in code repository app eco-system

Enables pipelines/workflows to be started based on when any defined event is executed in the code repository or in any app extension of that repository’s eco-system. For example, when an event happens in the Slack integration, update a repo work item.

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.

Any platform, any language, and cloud

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

No configuration, infrastructure setup, or patching necessary

As a SaaS offering, can provide software development and delivery services without the need to set up the tool itself, infrastructure to run it, and to maintain it by patching.

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.

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.

Documentation

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.

Auto Devops runs a pipeline, not just suggest one

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.

Learn more about the CI YAML linter

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.

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.

Run shared Linux runners

Ability to run runners on a pool of shared Linux systems from the SaaS offering.

Run shared Windows runners

Ability to run runners on a pool of shared Windows systems from the SaaS offering.

in beta

Run shared macOS runners

Ability to run runners on a pool of shared macOS systems from the SaaS offering.

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.

Live streaming of logs from running pipeline

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

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.

browser search within the log at a time

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.

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.

Read more about child/parent pipelines

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.

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.

Documentation

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.

Documentation

静态网站编辑器

极狐GitLab 的静态网站编辑器提供了一种在HTML内容上进行协作的简便方式。协作者不需要建立本地环境,也不需要对基础模板语言、站点架构乃至 Git 有任何知识储备来为内容做贡献。静态站点编辑器目前是通过 Middleman 项目模板交付的。

Learn more about the Static Site Editor

按需动态应用安全测试

一直等待下一次 CI 流水线的运行来检查您的站点是否存在漏洞,或是重现以前发现的漏洞是不合理的。极狐GitLab 提供了按需动态应用安全测试(DAST)来扫描正在运行的应用,它可以独立于代码更改和合并请求执行。

Learn more about On-demand DAST

按需 DAST 扫描的站点配置文件

通过按需 DAST 扫描快速重用配置文件,而不是每次需要运行时重新配置。将不同的扫描配置文件与站点配置文件混合,以快速执行涵盖应用程序和 API 不同区域或不同深度的扫描。

Learn more about application security for containers

维护模式

维护模式允许系统管理员在尽可能不干扰终端用户的情况下去执行维护操作,例如定期故障转移。

Learn more about maintenance mode