GitLab Package Registry

Moved to GitLab Core in 13.3.

With the GitLab Package Registry, you can use GitLab as a private or public repository for a variety of common package managers. You can build and publish packages, which can be easily consumed as a dependency in downstream projects.

GitLab acts as a repository for the following:

Software repository Description Available in GitLab version
Container Registry The GitLab Container Registry enables every project in GitLab to have its own space to store Docker images. 8.8+
Dependency Proxy The GitLab Dependency Proxy sets up a local proxy for frequently used upstream images/packages. 11.11+
Conan Repository The GitLab Conan Repository enables every project in GitLab to have its own space to store Conan packages. 12.6+
Maven Repository The GitLab Maven Repository enables every project in GitLab to have its own space to store Maven packages. 11.3+
NPM Registry The GitLab NPM Registry enables every project in GitLab to have its own space to store NPM packages. 11.7+
NuGet Repository The GitLab NuGet Repository will enable every project in GitLab to have its own space to store NuGet packages. 12.8+
PyPi Repository The GitLab PyPi Repository will enable every project in GitLab to have its own space to store PyPi packages. 12.10+
Go Proxy The Go proxy for GitLab enables every project in GitLab to be fetched with the Go proxy protocol. 13.1+
Composer Repository The GitLab Composer Repository will enable every project in GitLab to have its own space to store Composer packages. 13.2+

View packages

You can view packages for your project or group.

  1. Go to the project or group.
  2. Go to Packages & Registries > Package Registry.

You can search, sort, and filter packages on this page.

For information on how to create and upload a package, view the GitLab documentation for your package type.

Use GitLab CI/CD to build packages

You can use GitLab CI/CD to build packages. For Maven and NPM packages, and Composer dependencies, you can authenticate with GitLab by using the CI_JOB_TOKEN.

CI/CD templates, which you can use to get started, are in this repo.

Learn more about using CI/CD to build Maven packages and NPM packages.

If you use CI/CD to build a package, extended activity information is displayed when you view the package details:

Package CI/CD activity

You can view which pipeline published the package, as well as the commit and user who triggered it.

Download a package

To download a package:

  1. Go to Packages & Registries > Package Registry.
  2. Click the name of the package you want to download.
  3. In the Activity section, click the name of the package you want to download.

Delete a package

You cannot edit a package after you publish it in the Package Registry. Instead, you must delete and recreate it.

  • You cannot delete packages from the group view. You must delete them from the project view instead. See this issue for details.
  • You must have suitable permissions.

You can delete packages by using the API or the UI.

To delete a package in the UI:

  1. Go to Packages & Registries > Package Registry.
  2. Find the name of the package you want to delete.
  3. Click Delete.

The package is permanently deleted.

Disable the Package Registry

The Package Registry is automatically enabled.

If you are using a self-managed instance of GitLab, your administrator can remove the menu item, Packages & Registries, from the GitLab sidebar. For more information, see the administration documentation.

You can also remove the Package Registry for your project specifically:

  1. In your project, go to Settings > General.
  2. Expand the Visibility, project features, permissions section and disable the Packages feature.
  3. Click Save changes.

The Packages & Registries > Package Registry entry is removed from the sidebar.

Package workflows

Learn how to use the GitLab Package Registry to build your own custom package workflow.

Suggested contributions

Consider contributing to GitLab. This development documentation will guide you through the process. Or check out how other members of the community are adding support for PHP or Terraform.

Format Use case
Cargo Cargo is the Rust package manager. Build, publish and share Rust packages
Chef Configuration management with Chef using all the benefits of a repository manager.
CocoaPods Speed up development with Xcode and CocoaPods.
Conda Secure and private local Conda repositories.
CRAN Deploy and resolve CRAN packages for the R language.
Debian Host and provision Debian packages.
Opkg Optimize your work with OpenWrt using Opkg repositories.
P2 Host all your Eclipse plugins in your own GitLab P2 repository.
Puppet Configuration management meets repository management with Puppet repositories.
RPM Distribute RPMs directly from GitLab.
RubyGems Use GitLab to host your own gems.
SBT Resolve dependencies from and deploy build output to SBT repositories when running SBT builds.
Vagrant Securely host your Vagrant boxes in local repositories.