GitLab Community Edition Git Repository and Version Control Site
GitLab CE is an open source, cloud-based Git repository and version control system used by thousands of organizations worldwide.
Written in Ruby, GitLab CE includes a host of features that enable software development teams to consolidate source code, track and manage releases, increase code quality, deploy code changes, and track the evolution of software over time.
Also included in the GitLab CE stack is a fully functional Continuous Integration and Delivery (CI/CD) system that can build, test, and deploy software updates as your team produces new code.
Supporting the CI/CD functionality of GitLab is a private registry for Docker containers, enabling teams to streamline updates for production deployments that are running on a microservices architecture.
* Admin Package included: OpenVPN, SSH, SFTP, OS root access
Get your best ideas into development
Whether you use Waterfall, Agile, or Conversational Development, GitLab streamlines your collaborative workflows.
Visualize, prioritize, coordinate, and track your progress your way with GitLab’s flexible project management tools.
- Efficiently manage repositories with forking, conflict resolution for merges, quick commit-reverts, and groups consisting of multiple people sharing a namespace for projects
- Issue board for managing, organizing, and visualizing agile software projects
- Fully functional CI/CD, with versioned build script, build pipelines, container registry for Docker images, and deployment to multiple environments Mattermost-based messaging built in for chat-ops
- GitLab Web Editor enables editing of merge requests, files, and directories from the web interface
- Secure authentication with LDAP and Active Directory, two-factor auth, and CAS integration
- Deep integration with existing tools like JIRA, and the ability to configure an external PostgreSQL database using the Omnibus package
Regardless of your process, GitLab provides powerful planning tools to keep everyone synchronized.
Create and manage milestones across projects, to work towards a target date from the group level.
View all the issues for the milestone you’re currently working on across multiple projects.
Powerful Issue Tracker
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.
Due dates for individual issues
In GitLab, you can set a due date for individual issues.
This is very convenient if you have small tasks with a specific deadline.
Move issues between projects
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.
GitLab has Issue Boards, each list of an Issue Board is based on a label that exists in your issue tracker.
The Issue Board will therefore match the state of your issue tracker in a user-friendly way.
Group Issue Board
Issue board scoped at the group level, so that you can view issues in all projects of that group.
Create new issues from the Issue Board
With GitLab Issue Boards, you can create issues directly from the board and assign multiple labels allowing them to appear on multiple boards.
Construct Issue Boards around issue labels
An 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.
Add multiple issues to the board
From an Issue Board, you can add multiple issues to lists in the board by selecting one or more existing issues.
Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests.
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.
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.
Enriched Markdown support
GitLab uses ‘GitLab Flavored Markdown’ (GFM).
It extends the standard Markdown in a few significant ways to add some useful functionality.
Issues and merge requests templates
By adding a description template to your MRs, users who create a new issue or merge request can select a template to help them to communicate effectively.
Create issue from email
Create an issue from email by sending in the issue title and description.
Create, search and view issues from chat
Quickly create, view and search for issues straight from chat.
Labels provide an easy way to categorize issues or merge requests based on descriptive titles as ‘bug’, or ‘documentation’.
Create, view, and manage code and project data through powerful branching tools.
Commit graph and reporting tools
GitLab provides commit graphs and reporting tools about collaborators’ work.
Preview your changes with Review Apps
With GitLab CI/CD you can create a new environment for each one of your branches, speeding up your development process.
Spin up dynamic environments for your merge requests with the ability to preview your branch in a live environment.
Search files with fuzzy file finder
GitLab provides a way to search a file in your repository in one keystroke.
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.
Squash and merge
Combine commits into one so that main branch has a simpler to follow and revert history.
Create merge requests and @mention team members to review and safely merge your changes.
Merge conflict resolution
Preview merge conflicts in the GitLab UI and tell Git which version to use.
Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a specific commit.
View a list of the latest commits, merges, comments, and team members on your project.
Be notified by email, Slack, or ToDos anytime there are changes to an issue or merge request.
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.
A branch in Git contains the entire history that precedes it.
It’s also created or moved towards instantly and easily shared.
Granular permissions for branches you want to protect.
Granular permissions for tags you want to protect.
Integrated Git-powered wikis
A separate system for documentation called Wiki, is built right into each GitLab project.
Every Wiki is a separate Git repository.
When creating a new project, you can choose to kickstart your project from a predefined template that already has some working example code and CI pre-configured.
Contribute to projects faster by using the Web IDE to avoid context switching in your local development environment.
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.
Allow edits from upstream maintainers in branch
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.
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.
Merge Request Commit Discussions
Comment on a commit within the context of a merge request itself
Create merge request from email
Create a merge request from email by sending in the merge request title, description, and source branch name.
Lock down continued discussion in an issue or merge request as a Master role or higher, to prevent further abuse, spam, or unproductive collaboration.
First time contributor badge
Highlight first-time contributors in a project.
Ease of migration from other providers
GitLab lets you easily migrate all repos, issues and merge request data from your previous provider.
Merge request versions
View and compare merge request diffs from the merge request 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.
You can configure your project to only accept merge requests when all discussions are resolved.
GPG Signed Commits
Sign commits and prove that a commit was performed by a certain user.
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.
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.
Work in Progress merge requests (WIP)
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.
Git has smaller size requirements
A single repository in Git is typically a number of times smaller than the same repository in SVN.
Create projects with Git push
Push new projects to the desired location and a new private project will automatically be created.
First-class support for badges that are commonly added to a Project’s README, so that they are shown with the project description.
Store and share code snippets to engage in a conversation about that piece of code.
You can embed snippets on any blog or website using a single line of code.
Open Xcode projects in Xcode directly from GitLab.
Starting in Xcode 10, you can also sign in to GitLab in Xcode and access projects directly from the Xcode interface.
Keep strict quality standards for production code with automatic testing and reporting.
GitLab CI/CD Horizontal Autoscaling
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.
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.
Comprehensive pipeline graphs
Pipelines can be complex structures with many sequential and parallel jobs.
To make it a little easier to see what is going on, you can view a graph of a single pipeline and its status.
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.
Customizable path for CI/CD configuration
You can define a custom path into your repository for your CI/CD configuration file.
Show code coverage rate for your pipelines
GitLab is able to parse job output logs and search, via a customizable regex, any information created by tools like SimpleCov to get code coverage.
Data is automatically available in the UI and also as a badge you can embedd in any HTML page or publish using GitLab Pages.
Minimal CI/CD configuration
GitLab CI/CD requires less configuration for your pipelines than other similar setups like Jenkins.
Deploy quickly at massive scale with integrated Docker Container Registry
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.
GitLab's integrated CI/CD allows you to ship code quickly, 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.
Publish static websites for free with GitLab Pages
GitLab Pages provides an easy system for hosting static sites using GitLab repositories and GitLab CI, complete with custom domains and HTTPS support.
Deploy from Chat
Deploy from one environment (e.g. staging) to any other (e.g. production) from Chat
Online visualization of HTML artifacts
Access your test reports, code quality and coverage information directly from your browser, with no need to download them locally.
With GitLab CI you can upload your job artifacts in GitLab itself without the need of an external service.
Because of this, artifacts are also browsable through GitLab’s web interface.
Scheduled triggering of pipelines
You can make your pipelines run on a schedule in a cron-like environment.
Environments and deployments
GitLab CI is capable of not only testing or building your projects, but also deploying them in your infrastructure, with the added benefit of giving you a way to track your deployments.
Environments are like tags for your CI jobs, describing where code gets deployed.
Protected Runners allow you to protect your sensitive information, for example deployment credentials, by allowing only jobs running on protected branches to access them.
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.
Custom domains for GitLab Pages
With GitLab Pages websites, you can use a custom domain or subdomain.
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.
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.
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.
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).
GitLab Pages example projects
Choose an example project to fork and get started with GitLab Pages.
GitLab Pages supports all Jekyll plugins
Besides building any Jekyll version you want, with GitLab Pages you can use all Jekyll plugins available.
Custom Error Pages (404) for GitLab Pages
GitLab Pages allows you to create custom error pages.
Automatic Retry for Failed CI Jobs
You can specify a retry keyword in your .gitlab-ci.yml file to make GitLab CI/CD retry a job for a specific number of times before marking it as failed.
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.
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.
Configure your applications and infrastructure.
Easy Deployment of Helm, Ingress, and Prometheus on Kubernetes
Install Helm Tiller, Nginx Ingress, Prometheus and GitLab Runner directly into your cluster from the GitLab Web UI with one click.
You can mark a variable as “protected” to make it available only to jobs running on protected branches, therefore only authorized users can get access to it.
Define variables at the group level and use them in any project in the group.
Auto DevOps brings DevOps best practices to your project by automatically configuring software development lifecycles by default.
It automatically detects, builds, tests, deploys, and monitors applications.
Easy integration of existing Kubernetes clusters
Add your existing Kubernetes cluster to your project, and easily access it from your CI/CD pipelines to host Review Apps and to deploy your application.
Easy creation of Kubernetes clusters on GKE
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.
Automatically monitor metrics so you know how any change in code impacts your production environment.
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.
GitLab server 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.
GitLab has been battle-tested to scale to over 1,000,000 users on GitLab.com.
Subgroups: groups within groups
Create groups within groups to easily manage large numbers of people and projects.
Comply with licensing, legal, and other requirements using tools built into GitLab.
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.
The power and advantages of open source within your organization, without giving away your source code.
Organize your repository into private, internal, or public projects.
Internal projects in GitLab allow you to promote innersourcing of your internal repositories.
Global Search API
Search globally through the API
Integrate with GitLab using a comprehensive API and built-in integrations with other services.
GitLab allows you to export your project to other systems.
A comprehensive API
GitLab provides APIs for most features, allowing developers to create deeper integrations with the product.
Remote repository push mirroring
Mirror a repository from your local server to elsewhere.
Built for containers and Docker
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.
GitLab and its CI/CD is Cloud Native, purpose built for the cloud model.
GitLab ships with Red Hat OpenShift and Kubernetes support out of the box.
Run CI/CD jobs on Windows
GitLab Runner supports Windows and can run jobs natively on this platform.
You can automatically build, test, and deploy Windows-based projects by leveraging PowerShell or batch files.
Run CI/CD jobs on macOS
GitLab Runner supports macOS and can run jobs natively on this platform.
You can automatically build, test, and deploy for macOS based projects by leveraging shell scripts and command line tools.
Run CI/CD jobs on Linux ARM
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.
Run CI/CD jobs on FreeBSD
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.
GitLab can integrate with Authentication and Authorization (LDAP / AD) mechanisms, multiple 3rd party services, CI/CD, and other tools such as ALM, PLM, Agile and Automation tools.
To ensure that developers in GitLab and project managers in JIRA remain in tune, GitLab integrates with JIRA and provides the necessary tooling to fill that gap.
Git LFS 2.0 support
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.
GitLab is 'open-core', which provides users with access to the source code and the ability to modify it as they wish.
The GitLab Community Forum is an active and vibrant place for all GitLab users to share and seek support.
New features every month
GitLab is updated with new features and improvements every month on the 22nd.
Choice and flexibility
GitLab CE/EE can be installed on physical servers, virtualized servers (dedicated or shared), purpose-built appliances and virtualized appliances.
These aren’t available with hosted solutions.
Likewise, most on-premises servers can be deployed on a variety of operating systems and there’s more choice of on-premises solutions in general.
In good company
GitLab is the most adopted on-premises solution for developer collaboration, deployed at over 100,000 organizations worldwide.
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.
GitLab helps you get more done, faster with a deeply integrated feature set.
GitLab provides a dashboard that lets teams measure the time it takes to go from planning to monitoring.
GitLab can provide this data because it has all the tools built-in: from the idea, to the CI, to code review, to deploy to production.
When a user is mentioned in or assigned to a merge request it will be included in the user Todos, making the development workflow faster and easier to track.
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.
GitLab provides a convenient way to change metadata of an issue or merge request without leaving the comment field with slash commands.
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.
If you host GitLab yourself, IPv6 is supported as long as your underlying provider can support it.
GitLab.com on the other hand does not support IPv6 at the moment due to limited provider support.
GitLab Enterprise Edition gives your administrator the ability to automatically sync groups and manage SSH-keys, permissions, and authentication, so you can focus on building your product, not configuring your tools.
Conversational Development Index
Accelerate idea-to-production by identifying areas of improvement in your entire development process.
See how you compare to other organizations using GitLab.
Based on Git, a distributed VCS
Git, on which GitLab is built, is fully distributed.
Every user has a complete copy of the repository, allowing for much faster access to history, easier branching and an overall better experience.
Git is fast
Git is really fast.
Performing a diff, viewing history, committing and merging changes, obtaining any revision and any form of branching is very quick.
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.
GitLab's SaaS solution for teams of any size.
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 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.
Your Virtual Machine Specs
Your GitLab Community Edition Server will be running on an isolated and secure Virtual Machine with the following configuration 1 :
- CPU: 1 vCPU on 7th Generation Intel® Core™ i5-7260U Physical Processor(s)
- Base Frequency: 2.20 GHz
- Max Turbo Frequency: 3.40 GHz
- Memory: 4096 MB on 32 GB DDR4-2133 Physical Memory Chip(s)
- DDR4-2133 1.2V SO-DIMM
- Max Memory Bandwidth: 34.1 GB/s
- Disk Size: 19.06 GB on 1TB M.2. SSD Physical Storage Chip(s)
- M.2 Solid-State Drive (SSD)
- Sequential Read: 530 MB/s
- Sequential Write: 510 MB/s
- Random Read IOPS: 92 K
- Random Write IOPS: 83 K
Note 1 : Virtual Machine Resources are already optimized for performance. Under extreme usage or circumstances, more resources can be easily acquired via our Add-ons section.