在单个 GitLab 项目中存储所有包
- Tier: 免费版、高级版、旗舰版
- Offering: GitLab.com、GitLab 自托管、GitLab 专用
在单个项目的包注册表中存储来自多个源的包,并配置您的远程仓库指向 GitLab 中的此项目。
当您想要:
- 将包发布到与代码存储位置不同的 GitLab 项目中。
- 将包分组到一个项目中(例如,所有 npm 包、特定部门的所有包,或同一项目中的所有私有包)。
- 在为其他项目安装包时使用一个远程仓库。
- 将包从第三方包注册表迁移到 GitLab 中的单个位置。
- 让 CI/CD 管道将所有包构建到一个项目中,以便您可以在同一位置管理包。
示例 walkthrough
使用每个包管理系统在同一位置发布不同类型的包。
在单个 GitLab 项目中存储不同类型的包
让我们看看如何创建一个项目来托管您的所有包:
-
在 GitLab 中创建一个新项目。该项目不需要任何代码或内容。
-
在左侧边栏,选择项目概览,并记下项目 ID。
-
创建用于身份验证的访问令牌。包注册表中的所有包类型都可以通过以下方式发布:
- 一个个人访问令牌。
- 一个组访问令牌或项目访问令牌。
- CI/CD 作业中的CI/CD 作业令牌(
CI_JOB_TOKEN)。 项目的作业令牌允许列表应列出任何向此项目注册表发布的项目。
如果项目是私有的,下载包也需要身份验证。
-
配置您的本地项目并发布包。
您可以将所有包类型上传到同一项目,或根据包类型或可见性级别拆分包。
npm
对于 npm 包:
- 创建一个
.npmrc文件来配置注册表 URL。 - 使用项目
package.json文件中的publishConfig选项为您的包设置作用域。 - 使用
npm publish发布包。
有关更多信息,请参阅包注册表中的 npm 包。
Maven
对于 Maven 包:
- 使用
repository和distributionManagement部分更新您的pom.xml文件以配置注册表 URL。 - 添加一个
settings.xml文件并包含您的访问令牌。 - 使用
mvn deploy发布包。
有关更多信息,请参阅包注册表中的 Maven 包。
Conan 1
对于 Conan 1:
-
将 GitLab 包注册表添加为 Conan 注册表远程仓库。
-
使用加号分隔(
+)的项目路径作为您的 Conan 用户创建您的 Conan 1 包。例如,如果您的项目位于https://gitlab.com/foo/bar/my-proj,则使用conan create . foo+bar+my-proj/channel创建您的 Conan 包。channel是包通道,例如beta或stable:CONAN_LOGIN_USERNAME=<gitlab-username> CONAN_PASSWORD=<personal_access_token> conan upload MyPackage/1.0.0@foo+bar+my-proj/channel --all --remote=gitlab -
使用
conan upload或您的包配方发布您的包。
有关更多信息,请参阅包注册表中的 Conan 1 包。
Conan 2
对于 Conan 2:
- 将 GitLab 包注册表添加为 Conan 注册表远程仓库。
- 创建您的 Conan 2 包。
- 使用
conan upload或您的包配方发布您的包。
有关更多信息,请参阅包注册表中的 Conan 2 包。
Composer
您无法在其项目外发布 Composer 包。支持在其他项目中发布 Composer 包的提议在问题 250633中。
所有其他包类型
GitLab 支持的所有包类型都可以发布到同一个 GitLab 项目中。在之前的版本中,并非所有包类型都可以发布到同一个项目中。