Skip to content
OpenSourceSoftware.ai

GitHub stars

24,551
—Awaiting first sync

Awaiting first sync

No measured star history yet

What is GitLab?

GitLab puts source code, code review, CI/CD and issue tracking in one application. The Community Edition is the MIT-licensed part of GitLab that you can run yourself at no cost. Many planning, compliance and security features belong to the paid Premium and Ultimate tiers, so this profile covers only what the free edition includes.

GitLab Community Edition is the free, MIT-licensed edition of GitLab that you run on your own servers. It hosts Git repositories with access controls, handles code review in merge requests and runs CI/CD pipelines. Each project also gets an issue tracker, issue boards, a wiki and its own container and package registries.

Core capabilities

  • Review code in merge requests and run CI/CD pipelines defined in a .gitlab-ci.yml file.
  • Give every project an issue tracker, issue boards, a wiki and a static site on GitLab Pages.
  • Keep container images and npm, Maven, PyPI or NuGet packages next to the code.

Code, review and pipelines

Repositories come with fine-grained access controls, and changes are proposed and discussed in merge requests. In the free edition any developer can approve a merge request, but approvals are optional; required approval rules and code owners are Premium features. CI/CD pipelines are written in a .gitlab-ci.yml file as stages and jobs, start on commits, merge requests, schedules or by hand, and run on runners you host on your own machines or containers.

  • Git hosting
  • Merge requests
  • CI/CD

Issues, boards, wiki and registries

Each project can have an issue tracker, issue boards and a wiki. Free boards let you filter issues and move them between label lists, and a project can have several boards; assignee and milestone lists, swimlanes and work-in-progress limits need Premium. Projects also get a container registry, a package registry for formats such as npm, Maven, PyPI and NuGet, and GitLab Pages for publishing static websites straight from a repository.

  • Issue tracking
  • Wiki
  • Container registry
  • Package registry

Running it yourself and the licence

The recommended install is the Linux package, also called Omnibus, with gitlab-ce packages for Ubuntu, Debian, Red Hat Enterprise Linux, AlmaLinux, SUSE and other distributions. Docker, Helm and self-compiled installs are also documented. GitLab is a Ruby on Rails application that uses PostgreSQL and Redis. The code is open core: everything outside the ee/ and jh/ folders is MIT licensed, the documentation is CC BY-SA 4.0, and ee/ holds the proprietary Enterprise Edition code. The GitHub mirror listed here carries only the MIT-licensed Community Edition.

  • Self-hosted
  • Linux package
  • Docker
  • MIT
  • Open core

Where it fits

Use cases

  1. 01

    Move repositories off GitHub

    Use the GitHub importer to bring over a repository with its branches, issues, pull requests, review comments, milestones, releases and wiki pages. Branch protection rules and collaborators are mapped to GitLab settings and roles.

  2. 02

    Test and deploy every change

    Add a .gitlab-ci.yml file that defines build and test stages, then register a runner on a machine you control. GitLab starts a pipeline on each commit or merge request, and pipelines can also run on a schedule or be started by hand.

  3. 03

    Share internal packages and images

    Push Docker images to a project's container registry and publish npm, Maven or PyPI packages to its package registry. Other projects and deployments then pull them from the same server that holds the code.