Gitlab hero border pattern left svg Gitlab hero border pattern right svg

Category Direction - Package Registry

Package Registry

As part of our overall vision for packaging at GitLab, we want to provide a single interface for managing dependencies, registries, and package repositories. Whether C/C++, Java, Ruby, or any other language, our vision is that you can store your binaries and dependencies in the GitLab Package Registry. There are a few key package/language types on our radar that we want to support as part of this category:

Available now

Coming soon

Planned

Because there are many great solutions out there in the market for package registries, our plan is to provide a single, consistent interface to whichever package manager you're using. We want you to be able to take advantage of the great features each of these tools offer, but at the same time, we want there to be a consistent experience that's well integated with the rest of your workflow at GitLab.

This page is maintained by the Product Manager for Package, Tim Rizzi (E-mail)

What's Next & Why

We have a lot of exciting features currently in progress. Our current plan is to add support for several new package manager formats, redesign the user interface and improve our existing integrations.

First up is gitlab-#20050, the MVC for the GitLab NuGet Repository, which will help .NET/C# developers by allowing them to publish and share dependencies to a private, GitLab-hosted repository.

Once the NuGet Repository is complete, we will begin working on gitlab-#10483, which will allow developers to setup a private, GitLab hosted PyPi Repository.

Maturity Plan

This category is currently at the "Viable" maturity level, and our next maturity target is "Complete" (see our definitions of maturity levels). Key deliverables to achieve this are:

Competitive Landscape

  GitLab Artifactory Nexus GitHub JetBrains
Conan ✔️ ✔️ ☑️ - -
Debian - ✔️ ✔️ - -
Maven ✔️ ✔️ ✔️ ️✔️ ️ ✔️
NPM ✔️ ✔️ ✔️ ✔️ -
NuGet - ✔️ ✔️ ✔️ -
PyPi - ✔️ ✔️ - -
RPM - ✔️ ✔️ - -
RubyGem - ✔️ ✔️ ✔️ -

☑️ indicates support is through community plugin or beta feature

Historically, we've provided access to the GitLab container registry for free, but limited access to package registries to our paid tier. However, in an effort to drive more community contributions, any community contributed package manager will be added to GitLab Core.

Top Customer Success/Sales Issue(s)

Top Customer Issue(s)

Top Internal Customer Issue(s)

Top Vision Item(s)

A lot of moving our vision forward is integrating MVC support for new languages and package types:

C/C++

Our vision begins with implementing the gitlab-#8248, which will allow us to kick off support. Beyond the initial MVC implementation, our focus will be on improving consistency and core features across all of our repository types rather than providing C/C++ specific features. This may change as we begin to get customer feedback from real-world users of the new repository.

.NET

For .NET, the Microsoft-supported mechanism for sharing code is NuGet, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. By integrating with NuGet, GitLab will provide a centralized location to store and view those packages, in the same place as their source code and pipelines. gitlab-#20050 details the first steps in adding NuGet support to the GitLab Package Registry.

Linux Packages

gitlab-#5835 and gitlab-#5932, which relate to adding support for Debian and RPM respectively.

RubyGems

gitlab-#803 which will add support for a RubyGem registry.