2019-09-17 08:06:48 -04:00
# 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 ](container_registry/index.md ) | The GitLab Container Registry enables every project in GitLab to have its own space to store [Docker ](https://www.docker.com/ ) images. | 8.8+ |
| [Dependency Proxy ](dependency_proxy/index.md ) ** (PREMIUM)** | The GitLab Dependency Proxy sets up a local proxy for frequently used upstream images/packages. | 11.11+ |
2019-12-19 10:07:55 -05:00
| [Conan Repository ](conan_repository/index.md ) ** (PREMIUM)** | The GitLab Conan Repository enables every project in GitLab to have its own space to store [Conan ](https://conan.io/ ) packages. | 12.6+ |
2019-09-17 08:06:48 -04:00
| [Maven Repository ](maven_repository/index.md ) ** (PREMIUM)** | The GitLab Maven Repository enables every project in GitLab to have its own space to store [Maven ](https://maven.apache.org/ ) packages. | 11.3+ |
| [NPM Registry ](npm_registry/index.md ) ** (PREMIUM)** | The GitLab NPM Registry enables every project in GitLab to have its own space to store [NPM ](https://www.npmjs.com/ ) packages. | 11.7+ |
2020-02-20 10:08:44 -05:00
| [NuGet Repository ](nuget_repository/index.md ) ** (PREMIUM)** | The GitLab NuGet Repository will enable every project in GitLab to have its own space to store [NuGet ](https://www.nuget.org/ ) packages. | 12.8+ |
2020-04-15 14:09:36 -04:00
| [PyPi Repository ](pypi_repository/index.md ) ** (PREMIUM)** | The GitLab PyPi Repository will enable every project in GitLab to have its own space to store [PyPi ](https://pypi.org/ ) packages. | 12.10+ |
2019-09-17 08:06:48 -04:00
2020-04-21 11:21:10 -04:00
## Enable the Package Registry for your project
2020-05-11 17:09:40 -04:00
If you cannot find the ** {package}** **Packages & Registries > Package Registry** entry under your
2020-04-21 11:21:10 -04:00
project's sidebar, it is not enabled in your GitLab instance. Ask your
2020-05-06 05:10:02 -04:00
administrator to enable GitLab Package Registry following the [administration
documentation](../../administration/packages/index.md).
2020-04-21 11:21:10 -04:00
Once enabled for your GitLab instance, to enable Package Registry for your
project:
1. Go to your project's **Settings > General** page.
1. Expand the **Visibility, project features, permissions** section and enable the
**Packages** feature on your project.
1. Press **Save changes** for the changes to take effect. You should now be able to
2020-05-11 17:09:40 -04:00
see the **Packages & Registries > Package Registry** link in the sidebar.
2020-04-21 11:21:10 -04:00
### View Packages for your project
2020-05-11 17:09:40 -04:00
Navigating to your project's ** {package}** **Packages & Registries > Package Registry** will show a list
2020-04-21 11:21:10 -04:00
of all packages that have been added to your project.
2020-05-11 17:09:40 -04:00
![Project Packages list ](img/project_packages_list_v13_0.png )
2020-04-21 11:21:10 -04:00
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 ](../permissions.md )).
- Navigate to specific package detail page.
### View Packages for your group
You can view all packages belonging to a group by navigating to ** {package}**
2020-05-11 17:09:40 -04:00
**Packages & Registries > Package Registry** from the group sidebar.
2020-04-21 11:21:10 -04:00
2020-05-11 17:09:40 -04:00
![Group Packages list ](img/group_packages_list_v13_0.png )
2020-04-21 11:21:10 -04:00
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.
2020-05-11 17:09:40 -04:00
![Package detail ](img/package_detail_v13_0.png )
2020-04-21 11:21:10 -04:00
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 ](../permissions.md )).
### Build packages via GitLab CI/CD
Some of the supported packages can be built via [GitLab CI/CD ](./../../ci/README.md )
using the `CI_JOB_TOKEN` . If a package is built this way, then extended activity
information is displayed on the package details page:
![Package CI/CD activity ](img/package_activity_v12_10.png )
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.
2020-01-28 07:08:44 -05:00
## Suggested contributions
Consider contributing to GitLab. This [development documentation ](../../development/packages.md ) will
2020-01-08 22:07:56 -05:00
guide you through the process. Or check out how other members of the community
2020-02-06 10:09:11 -05:00
are adding support for [PHP ](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17417 ) or [Terraform ](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18834 ).
2019-11-21 07:06:40 -05:00
2020-01-28 07:08:44 -05:00
| Format | Use case |
| ------ | ------ |
| [Cargo ](https://gitlab.com/gitlab-org/gitlab/issues/33060 ) | Cargo is the Rust package manager. Build, publish and share Rust packages |
| [Chef ](https://gitlab.com/gitlab-org/gitlab/issues/36889 ) | Configuration management with Chef using all the benefits of a repository manager. |
| [CocoaPods ](https://gitlab.com/gitlab-org/gitlab/issues/36890 ) | Speed up development with Xcode and CocoaPods. |
| [Conda ](https://gitlab.com/gitlab-org/gitlab/issues/36891 ) | Secure and private local Conda repositories. |
| [CRAN ](https://gitlab.com/gitlab-org/gitlab/issues/36892 ) | Deploy and resolve CRAN packages for the R language. |
| [Debian ](https://gitlab.com/gitlab-org/gitlab/issues/5835 ) | Host and provision Debian packages. |
| [Go ](https://gitlab.com/gitlab-org/gitlab/issues/9773 ) | Resolve Go dependencies from and publish your Go packages to GitLab. |
| [Opkg ](https://gitlab.com/gitlab-org/gitlab/issues/36894 ) | Optimize your work with OpenWrt using Opkg repositories. |
| [P2 ](https://gitlab.com/gitlab-org/gitlab/issues/36895 ) | Host all your Eclipse plugins in your own GitLab P2 repository. |
| [Puppet ](https://gitlab.com/gitlab-org/gitlab/issues/36897 ) | Configuration management meets repository management with Puppet repositories. |
| [RPM ](https://gitlab.com/gitlab-org/gitlab/issues/5932 ) | Distribute RPMs directly from GitLab. |
| [RubyGems ](https://gitlab.com/gitlab-org/gitlab/issues/803 ) | Use GitLab to host your own gems. |
| [SBT ](https://gitlab.com/gitlab-org/gitlab/issues/36898 ) | Resolve dependencies from and deploy build output to SBT repositories when running SBT builds. |
| [Vagrant ](https://gitlab.com/gitlab-org/gitlab/issues/36899 ) | Securely host your Vagrant boxes in local repositories. |
2019-12-20 13:07:53 -05:00
## Package workflows
Learning how to use the GitLab Package Registry will help you build your own custom package workflow.
2020-01-24 10:09:00 -05:00
- [Use a project as a package registry ](./workflows/project_registry.md ) to publish all of your packages to one project.
- [Working with a monorepo ](./workflows/monorepo.md ): Learn how to publish multiple different packages from one monorepo project.