# GitLab Package Registry

> 原文：[https://docs.gitlab.com/ee/user/packages/](https://docs.gitlab.com/ee/user/packages/)

*   [View packages](#view-packages)
*   [Use GitLab CI/CD to build packages](#use-gitlab-cicd-to-build-packages)
*   [Download a package](#download-a-package)
*   [Delete a package](#delete-a-package)
*   [Disable the Package Registry](#disable-the-package-registry)
*   [Package workflows](#package-workflows)
*   [Suggested contributions](#suggested-contributions)

# GitLab Package Registry[](#gitlab-package-registry "Permalink")

借助 GitLab 软件包注册表，您可以将 GitLab 用作各种常见软件包管理器的私有或公共存储库. 您可以构建和发布程序包，这些程序包可以很容易地作为下游项目中的依赖项使用.

GitLab 充当以下内容的存储库：

| 软件库 | Description | 在 GitLab 版本中可用 |
| --- | --- | --- |
| [Container Registry](container_registry/index.html) | GitLab 容器注册表使 GitLab 中的每个项目都有自己的空间来存储[Docker](https://www.docker.com/)映像. | 8.8+ |
| [Dependency Proxy](dependency_proxy/index.html) | GitLab 依赖代理为经常使用的上游映像/软件包设置了本地代理. | 11.11+ |
| [Conan Repository](conan_repository/index.html) | GitLab 柯南存储库使 GitLab 中的每个项目都有自己的空间来存储[柯南](https://conan.io/)软件包. | 12.6+ |
| [Maven Repository](maven_repository/index.html) | GitLab Maven 存储库使 GitLab 中的每个项目都有自己的空间来存储[Maven](https://maven.apache.org/)软件包. | 11.3+ |
| [NPM Registry](npm_registry/index.html) | GitLab NPM 注册表使 GitLab 中的每个项目都有自己的空间来存储[NPM](https://s0www0npmjs0com.icopy.site/)软件包. | 11.7+ |
| [NuGet Repository](nuget_repository/index.html) | GitLab NuGet 存储库将使 GitLab 中的每个项目都有自己的空间来存储[NuGet](https://www.nuget.org/)软件包. | 12.8+ |
| [PyPi Repository](pypi_repository/index.html) | GitLab PyPi 存储库将使 GitLab 中的每个项目都有自己的空间来存储[PyPi](https://s0pypi0org.icopy.site/)软件包. | 12.10+ |
| [Go Proxy](go_proxy/index.html) | GitLab 的 Go 代理使 GitLab 中的每个项目都可以通过[Go 代理协议](https://proxy.golang.org/)获取. | 13.1+ |
| [Composer Repository](composer_repository/index.html) | GitLab Composer 存储库将使 GitLab 中的每个项目都有自己的空间来存储[Composer](https://s0getcomposer0org.icopy.site/)软件包. | 13.2+ |

## View packages[](#view-packages "Permalink")

您可以查看项目或组的软件包.

1.  转到项目或组.
2.  去 **程序包和注册表>程序包注册表** .

您可以在此页面上搜索，排序和过滤软件包.

有关如何创建和上传软件包的信息，请查看您的软件包类型的 GitLab 文档.

## Use GitLab CI/CD to build packages[](#use-gitlab-cicd-to-build-packages "Permalink")

您可以使用[GitLab CI / CD](./../../ci/README.html)来构建软件包. 对于 Maven 和 NPM 软件包以及 Composer 依赖项，可以使用`CI_JOB_TOKEN`向 GitLab 进行身份验证.

CI / CD 模板，你可以用它来上手，在[此回购](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates) .

了解有关[使用 CI / CD 构建 Maven 软件包](maven_repository/index.html#creating-maven-packages-with-gitlab-cicd)和[NPM 软件包的更多信息](npm_registry/index.html#publishing-a-package-with-cicd) .

如果使用 CI / CD 构建软件包，则在查看软件包详细信息时会显示扩展的活动信息：

[![Package CI/CD activity](img/5d1d35707b32fd37e1e218e8b1df1771.png)](img/package_activity_v12_10.png)

您可以查看哪个管道发布了程序包，以及触发该程序包的提交和用户.

## Download a package[](#download-a-package "Permalink")

要下载软件包：

1.  去 **程序包和注册表>程序包注册表** .
2.  单击您要下载的软件包的名称.
3.  在" **活动"**部分中，单击要下载的程序包的名称.

## Delete a package[](#delete-a-package "Permalink")

在程序包注册表中发布程序包后，您将无法对其进行编辑. 相反，您必须删除并重新创建它.

*   您无法从组视图中删除软件包. 您必须改为从项目视图中删除它们. 有关详细信息，请参[见此问题](https://gitlab.com/gitlab-org/gitlab/-/issues/227714) .
*   您必须具有适当的[权限](../permissions.html) .

您可以使用[API](../../api/packages.html#delete-a-project-package)或 UI 删除软件包.

要在用户界面中删除程序包：

1.  去 **程序包和注册表>程序包注册表** .
2.  查找您要删除的程序包的名称.
3.  Click **Delete**.

该软件包将被永久删除.

## Disable the Package Registry[](#disable-the-package-registry "Permalink")

程序包注册表自动启用.

如果您使用的是 GitLab 的自我管理实例，则管理员可以删除菜单项， **软件包和注册表** ，位于 GitLab 侧边栏. 有关更多信息，请参阅[管理文档](../../administration/packages/index.html) .

您还可以专门删除项目的 Package Registry：

1.  在您的项目中，转到 **设置>常规** .
2.  展开" **可见性"，"项目功能"，"权限"**部分，并禁用" **软件包"**功能.
3.  Click **Save changes**.

的 **Packages＆Registries> Package Registry**条目已从侧栏中删除.

## Package workflows[](#package-workflows "Permalink")

了解如何使用 GitLab 软件包注册表来构建自己的自定义软件包工作流程.

*   [使用项目作为程序包注册表](./workflows/project_registry.html)将所有[程序包](./workflows/project_registry.html)发布到一个项目.
*   从一个[monorepo 项目](./workflows/monorepo.html)发布多个不同的软件包.

## Suggested contributions[](#suggested-contributions "Permalink")

考虑为 GitLab 做贡献. 此[开发文档](../../development/packages.html)将指导您完成该过程. 或者查看社区的其他成员如何添加对[PHP](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17417)或[Terraform 的](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18834)支持.

| Format | 用例 |
| --- | --- |
| [Cargo](https://gitlab.com/gitlab-org/gitlab/-/issues/33060) | Cargo 是 Rust 的包裹经理. 构建，发布和共享 Rust 包 |
| [Chef](https://gitlab.com/gitlab-org/gitlab/-/issues/36889) | 使用 Chef 的配置管理，利用存储库管理器的所有优点. |
| [CocoaPods](https://gitlab.com/gitlab-org/gitlab/-/issues/36890) | 使用 Xcode 和 CocoaPods 加快开发速度. |
| [Conda](https://gitlab.com/gitlab-org/gitlab/-/issues/36891) | 安全和私有的本地 Conda 存储库. |
| [CRAN](https://gitlab.com/gitlab-org/gitlab/-/issues/36892) | 部署和解析 R 语言的 CRAN 软件包. |
| [Debian](https://gitlab.com/gitlab-org/gitlab/-/issues/5835) | 托管和设置 Debian 软件包. |
| [Opkg](https://gitlab.com/gitlab-org/gitlab/-/issues/36894) | 使用 Opkg 存储库优化 OpenWrt 的工作. |
| [P2](https://gitlab.com/gitlab-org/gitlab/-/issues/36895) | 将所有 Eclipse 插件托管在自己的 GitLab P2 存储库中. |
| [Puppet](https://gitlab.com/gitlab-org/gitlab/-/issues/36897) | 配置管理通过 Puppet 存储库满足存储库管理. |
| [RPM](https://gitlab.com/gitlab-org/gitlab/-/issues/5932) | 直接从 GitLab 分发 RPM. |
| [RubyGems](https://gitlab.com/gitlab-org/gitlab/-/issues/803) | 使用 GitLab 托管您自己的宝石. |
| [SBT](https://gitlab.com/gitlab-org/gitlab/-/issues/36898) | 运行 SBT 构建时，解析来自 SBT 存储库的依赖性并将构建输出部署到 SBT 存储库. |
| [Vagrant](https://gitlab.com/gitlab-org/gitlab/-/issues/36899) | 将您的 Vagrant 盒子安全地托管在本地存储库中. |