GitLab is the first single application for the entire DevOps lifecycle. Only GitLab enables Concurrent DevOps, unlocking organizations from the constraints of the toolchain. GitLab provides unmatched visibility, higher levels of efficiency, and comprehensive governance. This makes the software lifecycle 200% faster, radically improving the speed of business.
Watch the demoGain visibility and insight into how your business is performing.
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.
Documentation
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.
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
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.
Documentation
IP Whitelisting defines safe IP network addresses from which clients can access and interact with the repository server. This helps prevent unwanted third parties from accessing your account even if they have acquired a team member’s email address and password.
Issue detailsRegardless of your process, GitLab provides powerful planning tools to keep everyone synchronized.
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.
Documentation
Tracking, managing and reporting on the budget and actual costs of the project. Able to allocate costs to OPex or CAPex depending on specific organization reporting rules. Time tracking information used to determine labor cost allocations. Specific features would include: budget, spend, time tracking, resource cost, Capex/Opex.
Large companies often have hundreds of different projects, all with different moving parts at the same time. GitLab Enterprise Edition allows for multiple Issue Boards for a single project so you can to plan, organize, and visualize a workflow for a feature or product release. Multiple Issue Boards are particularly useful for large projects with more than one team or in situations where a repository is used to host the code of multiple products.
DocumentationAn Issue Board is based on its project’s label structure, therefore, it applies the same descriptive labels to indicate placement on the board. GitLab issues can appear on multiple issues and they still have meaning without the context of a particular board.
Documentation
Issue boards/dashboards reflect an organizations flow for processing work items. These boards can reflect individualized workflow or follow established patterns. Issue board types with established patterns (such as Scrum and Kanban) can make setup of new boards easier.
Issue details
Able to capture and track future features, capabilities, and work in a consolodated and organized list which enables the team to organize, prioritize, accept, plan and start work on relevant items. The backlog is where future work is captured, defined, evaluated, and planned. Specific features would include: Backlog, user stories, issues, effort estimate, priority, backlog board.
Able to define and manage project RISK and ISSUE status and workflow to identify, track, mitigate and resolve potential risks and active issues facing the project. Risk/Issue status and resolution managed through online workfow that tracks assignment and actions to address the specific item. Specific features would include: workflow, risk severity, risk priority, Assigning Risk/Issue for action, Risk/Issue status.
Establishing strategic priorities and direction in order to govern the allocation of corporate resources to support specific business/IT initiatives. Strategic planning evaluates in-flight projects and proposed future initiatives to shape and govern the ongoing investment in projects and discretionary work. Able to model and optimize different portfolio investment scenarios to determine the ideal funding combinations to meet strategic priorities. Specific features would include: Proposals, epics, backlog, strategic alignment, estimation, prioritization, what-if, monte-carlo simulation, optimization.
Tracks and reports on the overall status and health (scope, schedule, budget) of projects and programs within the portfolio to enable executives to support project execution. Specific features would include: forecasting, status tracking, release planning, roadmap, milestones, project/program hierarchy.
Able to support the key principles and practices of the Essential SAFe configuration., Agile Release Train, (a combined CD pipeline where multiple projects align to release), Planning Increment (PI) Planning (cadence driven project planning/ vision)
Tracking, managing and reporting on the budget and actual spend of projects and programs within specific portfolios. Able to allocate costs to OPex or CAPex depending on specific organization reporting rules. Time tracking information used to determine labor cost allocations. Specific features would include: budget, spend, time, resource cost.
Tracks and manages the availability of team members by skill, experience, location, and cost, so they can support both planned and unplanned work. Specific features would include: individual capacity, individual skills, individual assignments, labor cost.
Able to define, schedule and assign specific tasks to team members and manage the sequence and interdependency of tasks with each other. This form of structured planning is needed when tasks are clearly defined and sequence of execution is critical. Specific features would include: WBS, Gantt Chart, Task Assignment, Scheduling, task sequence, task relationships.
Teams have access to more than a dozen out-of-the-box reports with real-time, actionable insights into how their team is performing sprint over sprint. Example reports are sprint burndown, epic burndown, cumulative flow diagram, velocity chart, burn up chart, and sprint report.
Documentation
Establishing the product vision and strategy to organize, govern and shape the effort of the multi-disciplinary team building specific business services. The Product Roadmap is based on specific business goals and objectives, manages high level requirements, prioritizes future features, allocates resources, tracks progress and measures business results linked to the business strategy. Specific features would include: Product Strategy, Idea Gathering, Requirements Management, Resource Management, Feedback Collection, Milestone Tracking, Release Management, Workflow Management, Feature Tracking/Deviation, Roadmap Analytics, Centralized Notes, Report Generation, Imports, API/SDK, Conflict Management, and Customized Alerting.
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.
Issue details
Able to gather, document, refine and track approval of business and system requirements. Managing and tracking the relationships between requirements and other requirements, requirements and code, requirements and test cases for each version of requirements. Specific features would include: definition, traceability, requirement hierarchy, dependency.
Issue details
Able to support test planning, definition of test cases, results of test execution and corresponding backlog of work resulting from failed tests. Specific features would include: Test case planning, test execution, defect tracking (backlog), severity, priority.
Issue detailsCreate, view, and manage code and project data through powerful branching tools.
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.
DocumentationWhen a project requires multiple sign-offs, GitLab Enterprise Edition enables you to make sure every merge request is approved by one or more people. Merge request approvals allow you to set the number of necessary approvals and predefine a list of approvers that will need to approve every merge request in a project, and in-turn improve your code’s quality.
DocumentationWorking with multiple people on the same file can be a risk. Conflicts when merging a non-text file are hard to overcome and will require a lot of manual work to resolve. With GitLab Enterprise Edition Premium, File Locking helps you avoid merge conflicts and better manage your binary files by preventing everyone, except you, from modifying a specific file or entire directory.
Feature detailsWhen creating a new project, you can choose to kickstart your project from a predefined template that already has some working example code and CI preconfigured. In addition, you can define a custom project templates by assigning a group. Child projects of this group are available as templates when creating a new project.
DocumentationA 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.
DocumentationWhen 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.
DocumentationDraft 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
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.
Documentation
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.
Documentation
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.
Documentation
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.
Documentation
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
When development teams are spread across two or more geographical locations, but their GitLab instance is in a single location, fetching and cloning large repositories can take a long time. Built for distributed teams, GitLab Geo allows for read-only mirrors of your GitLab instance, reducing the time it takes to clone and fetch large repos and improving your collaboration process.
Feature details
Prevent merge requests from accidentally being accepted before they’re completely ready by marking them as Work In Progress (WIP). This gives you all the code review power of merge requests, while protecting unfinished work.
Documentation
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.
Documentation
Manage large files such as audio, video and graphics files with the help of Git LFS. Git LFS 2.0 file locking support helps large teams work with binary assets and is integrated with our native file locking feature.
Documentation
Assign Code Owners to files to indicate the team members responsible for code in your project using a CODEOWNERS file. Code owners are assigned automatically as merge request approvers, can be set as required and shown when viewing files.
GitLab is meant to be the best place for any software project. The team behind GitLab is addressing issues that maintainers and contributors to large open source projects are facing, to make it easier to do both.
Blog post
Having Geo replicated server(s) can make local pulls go more quickly, but without support for Geolocation-aware DNS, developers need to reconfigure their tools manually to point to their nearest geo replicated server. Users using Geolocation-aware DNS can be transparently directed to the closest server available and can access repository data faster.
Documentation
IP Whitelisting defines safe IP network addresses from which clients can access and interact with the repository server. This helps prevent unwanted third parties from accessing your account even if they have acquired a team member’s email address and password.
Issue detailsWhen a project requires multiple sign-offs, GitLab Enterprise Edition enables you to make sure every merge request is approved by one or more people. Merge request approvals allow you to set the number of necessary approvals and predefine a list of approvers that will need to approve every merge request in a project, and in-turn improve your code’s quality.
Documentation
In GitLab, to ensure strict code review, you can require a specific number of approvals on a merge request by different users before being able to merge it. You can undo an approval by removing it after the fact.
Documentation
Make sure the right people review merge requests with approval rules by specifying lists of eligible approvers and minimum number of approvals for each. This makes it easy to request review from different teams like Engineering, UX and Product.
Documentation
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.
Documentation
Assign Code Owners to files to indicate the team members responsible for code in your project using a CODEOWNERS file. Code owners are assigned automatically as merge request approvers, can be set as required and shown when viewing files.
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 GitLabContribute 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.
DocumentationKeep strict quality standards for production code with automatic testing and reporting.
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.
Feature detailsWhen creating a new project, you can choose to kickstart your project from a predefined template that already has some working example code and CI preconfigured. In addition, you can define a custom project templates by assigning a group. Child projects of this group are available as templates when creating a new project.
DocumentationEasily detect performance regressions for web apps, prior to merging into master. Browser Performance Testing is included in Auto DevOps, providing automatic performance analytics of the root page with zero configuration.
Documentation
GitLab.com has shared Runners that allow you to use GitLab CI/CD completely free up to 2000 build minutes for private projects and unlimited 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
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 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 embedd in any HTML page or publish using GitLab Pages.
Blog post
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
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
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.
Deleting a pipeline is possible using the API, which 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
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.
Issue details
While GitLab has multi-project piplines that give you a view accross projects, each pipleine definition live in a YAML file tied to a specific project. Today, GitLab lacks the ability to define multiple pipelines in a single YAML file.
Issue detailsCreate a consistent and dependable software supply chain with built-in universal package management.
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.
Documentation
A binary repository is a software repository for packages, artifacts and their corresponding metadata. It can be used to store binary files produced by an organization itself, such as product releases and nightly product builds, or for third party binaries which must be treated differently for both technical and legal reasons.
A binary repository is a software repository for packages, artifacts and their corresponding metadata. It can be used to store binary files produced by an organization itself, such as product releases and nightly product builds, or for third party binaries which must be treated differently for both technical and legal reasons.
Security capabilities, integrated into your development lifecycle.
GitLab allows easily running Static Application Security Testing (SAST) in CI/CD pipelines; checking for vulnerable source code or well known security bugs in the libraries that are included by the application. Results are then shown in the Merge Request and in the Pipeline view. This feature is available as part of Auto DevOps to provide security-by-default.
DocumentationOnce your application is online, GitLab allows running Dynamic Application Security Testing (DAST) in CI/CD pipelines; your application will be scanned to ensure threats like XSS or broken authentication flaws are not affecting it. Results are then shown in the Merge Request and in the Pipeline view. This feature is available as part of Auto DevOps to provide security-by-default.
Documentation
GitLab automatically detects well known security bugs in the libraries that are included by the application, protecting your application from vulnerabilities that affect dependencies that are used dynamically. Results are then shown in the Merge Request and in the Pipeline view. This feature is available as part of Auto DevOps to provide security-by-default.
DocumentationWhen building a Docker image for your application, GitLab can run a security scan to ensure it does not have any known vulnerability in the environment where your code is shipped. Results are then shown in the Merge Request and in the Pipeline view. This feature is available as part of Auto DevOps to provide security-by-default.
DocumentationGitLab's integrated CD solution allows you to ship code with zero-touch, be it on one or one thousand servers.
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.
Feature detailsWith 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.
Feature detailsThis feature gives you the ability to configure, audit, 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 in the field via the feature flag within GitLab itself.
Documentation
GitLab.com has shared Runners that allow you to use GitLab CI/CD completely free up to 2000 build minutes for private projects and unlimited 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
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
With multi-project pipeline graphs you can see how upstream and downstream pipelines are linked together for projects that are linked to others via triggers as part of a more complex design, as it is for micro-services architecture.
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
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 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 Premium ships with Deploy Boards offering 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.
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
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
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
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.
Issue details
While GitLab has multi-project piplines that give you a view accross projects, each pipleine definition live in a YAML file tied to a specific project. Today, GitLab lacks the ability to define multiple pipelines in a single YAML file.
Issue detailsGitLab’s Releases 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.
DocumentationConfigure your applications and infrastructure.
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.
Issue detailsAutomatically monitor metrics so you know how any change in code impacts your production environment.
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.
Documentation
The ability to monitor websites using Web browser emulation or scripted recordings of Web transactions. Creating behavioral scripts to simulate an action or path performed by a customer/end-user that would be taken on an application
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.
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.
To maintain the integrity of your code, GitLab Enterprise Edition Premium gives admins the ability to view any modifications made within the GitLab server in an advanced audit log system, so you can control, analyze and track every change.
Documentation
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.
DocumentationDefend your apps and infrastructure from security intrusions.