doc/user/packages/package_registry/_index.md
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
With the GitLab package registry, you can use GitLab as a private or public registry for a variety of supported package managers. You can publish and share packages, which can be consumed as a dependency in downstream projects.
Learn how to use the GitLab package registry to build your own custom package workflow:
Use a project as a package registry to publish all of your packages to one project.
Publish multiple different packages from one monorepo project.
You can view packages for your project or group:
You can search, sort, and filter packages on this page. You can share your search results by copying and pasting the URL from your browser.
You can also find helpful code snippets for configuring your package manager or installing a given package.
When you view packages in a group:
To learn how to create and upload a package, follow the instructions for your package type.
You can use GitLab CI/CD to build or import packages into a package registry.
You can authenticate with GitLab by using the CI_JOB_TOKEN.
To get started, you can use the available CI/CD templates.
For more information about using the GitLab package registry with CI/CD, see:
If you use CI/CD to build a package, extended activity information is displayed when you view the package details:
You can view which pipeline published the package, and the commit and user who triggered it. However, the history is limited to five updates of a given package.
If you already have packages built in a different registry, you can import them into your GitLab package registry with the package importer.
For a list of supported packages, see Importing packages from other repositories.
For information on reducing your storage use for the package registry, see Reduce package registry storage use.
The package registry is automatically turned on.
On a GitLab Self-Managed instance, your administrator can remove the Packages and registries menu item from the GitLab sidebar. For more information, see GitLab package registry administration.
You can also remove the package registry for your project specifically:
The Deploy > Package registry entry is removed from the sidebar.
Project permissions determine which members and users can download, push, or delete packages.
The visibility of the package registry is independent of the repository and can be controlled from your project's settings. For example, if you have a public project and set the repository visibility to Only Project Members, the package registry is then public. Turning off the Package registry toggle turns off all package registry operations.
| Project visibility | Action | Minimum role required |
|---|---|---|
| Public | View package registry | N/A. Anyone on the internet can perform this action. |
| Public | Publish a package | Developer |
| Public | Pull a package | N/A. Anyone on the internet can perform this action. |
| Internal | View package registry | Guest |
| Internal | Publish a package | Developer |
| Internal | Pull a package | Guest (1) |
| Private | View package registry | Reporter |
| Private | Publish a package | Developer |
| Private | Pull a package | Reporter (1) |
{{< history >}}
{{< /history >}}
To allow anyone to pull from the package registry, regardless of project visibility:
Anyone on the internet can access the package registry for the project.
Prerequisites:
To hide the Allow anyone to pull from package registry toggle globally:
package_registry_allow_anyone_to_pull_option to false.Anonymous downloads are turned off, even for projects that turned on the Allow anyone to pull from Package Registry toggle.
Several known issues exist when you allow anyone to pull from the package registry:
conan search does not work.{{< details >}}
{{< /details >}}
{{< history >}}
package_registry_audit_events. Disabled by default.package_registry_audit_events removed.{{< /history >}}
Create audit events when a package is published or deleted. Namespace Owners can turn on the audit_events_enabled setting through the GraphQL API.
You can view audit events:
The following table lists package formats that are not supported. Consider contributing to GitLab to add support for these formats.
<!-- vale gitlab_base.Spelling = NO -->| Format | Status |
|---|---|
| Conda | #36891 |
| CRAN | #36892 |
| RPM | #5932 |
| Swift | #12233 |