GitLab Package Registry
GitLab Packages allows organizations to utilize GitLab as a private repository for a variety of common package managers. Users are able to build and publish packages, which can be easily consumed as a dependency in downstream projects.
The Packages feature allows GitLab to act 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 (PREMIUM) | The GitLab Dependency Proxy sets up a local proxy for frequently used upstream images/packages. | 11.11+ |
Conan Repository (PREMIUM) | The GitLab Conan Repository enables every project in GitLab to have its own space to store Conan packages. | 12.6+ |
Maven Repository (PREMIUM) | The GitLab Maven Repository enables every project in GitLab to have its own space to store Maven packages. | 11.3+ |
NPM Registry (PREMIUM) | The GitLab NPM Registry enables every project in GitLab to have its own space to store NPM packages. | 11.7+ |
NuGet Repository (PREMIUM) | The GitLab NuGet Repository will enable every project in GitLab to have its own space to store NuGet packages. | 12.8+ |
PyPi Repository (PREMIUM) | The GitLab PyPi Repository will enable every project in GitLab to have its own space to store PyPi packages. | 12.10+ |
Enable the Package Registry for your project
If you cannot find the {package} Packages & Registries > Package Registry entry under your project's sidebar, ensure that:
- The GitLab Package Registry has been enabled by your administrator (following this documentation); and
- The Package Registry has been enabled for your project.
Once an administrator has enabled the GitLab Package Registry for your GitLab instance, to enable Package Registry for your project:
- Go to your project's Settings > General page.
- Expand the Visibility, project features, permissions section and enable the Packages feature on your project.
- Press Save changes for the changes to take effect. You should now be able to see the Packages & Registries > Package Registry link in the sidebar.
View Packages for your project
Navigating to your project's {package} Packages & Registries > Package Registry will show a list of all packages that have been added to your project.
On this page, you can:
- View all the packages that have been uploaded to the project.
- Sort the packages list by created date, version or name.
- Filter the list by package name.
- Change tabs to display packages of a certain type.
- Remove a package (if you have suitable permissions).
- Navigate to specific package detail page.
View Packages for your group
You can view all packages belonging to a group by navigating to {package} Packages & Registries > Package Registry from the group sidebar.
On this page, you can:
- View all the packages that have been uploaded to each of the groups projects.
- Sort the packages list by created date, version, name or project.
- Filter the list by package name.
- Change tabs to display packages of a certain type.
- Navigate to specific package detail page.
View additional package information
Additional package information can be viewed by browsing to the package details page from the either the project or group list.
On this page you can:
- See the extended package information, including metadata. This is unique to each package type and will display different information for different types.
- View quick installation and registry setup instructions. These are a shortcut for users who have already set up the Package Registry and just want quick installation instructions.
- View the package activity, including when and how a package was published.
- View and download the contents of the package. Outside of installing a package via a manager, you can also download the files individually.
- Delete the package (if you have suitable permissions).
Build packages via GitLab CI/CD
Some of the supported packages can be built via GitLab CI/CD
using the CI_JOB_TOKEN
. If a package is built this way, then extended activity
information is displayed on the package details page:
You can view which pipeline published the package, as well as the commit and user who triggered it. To see if a package type supports being built via CI/CD, check the specific documentation for your package type.
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. |
Go | Resolve Go dependencies from and publish your Go packages to GitLab. |
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. |
Package workflows
Learning how to use the GitLab Package Registry will help you build your own custom package workflow.
- Use a project as a package registry to publish all of your packages to one project.
- Working with a monorepo: Learn how to publish multiple different packages from one monorepo project.