GitLab 包注册表 Nuget 包每组

Posted

技术标签:

【中文标题】GitLab 包注册表 Nuget 包每组【英文标题】:GitLab package registry Nuget packages per group 【发布时间】:2021-04-30 04:46:43 【问题描述】:

在我的 GitLab 中,我有一个名为 Plugins 的组下的多个 dotnet 核心项目(插件),在每个项目中,我添加了一个 CI 步骤以将它们打包到 nuget 包中并将它们推送到 GitLab包注册表。我遵循了文档:https://docs.gitlab.com/ee/user/packages/nuget_repository/index.html 并在.gitlab-ci.yaml 中放置了这个配置:

image: mcr.microsoft.com/dotnet/sdk:5.0

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - dotnet pack -c Release
    - dotnet nuget add source "$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text
    - dotnet nuget push "bin/Release/*.nupkg" --source gitlab
  only:
    - master

但不是添加项目级别的源代码(这对我有用)"$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/packages/nuget/index.json" 我将其替换为组级端点"$CI_SERVER_URL/api/v4/groups/group-id/-/packages/nuget/index.json",并使用部署令牌进行身份验证,因为我希望该组下的所有项目都有一个源,每次 nuget cmd 尝试推送包时都会显示此错误

错误:错误:此版本的 nuget.exe 不支持将包更新到包源 my-source

有什么想法吗?

【问题讨论】:

【参考方案1】:

我也遇到过。我找到了这个链接https://docs.gitlab.com/ee/user/packages/workflows/project_registry.html

链接中建议的想法是在组中创建一个项目,将所有包推送到该项目。这并不理想,直接推送到组会更好,但这是一种不需要 Visual Studio 中的多个 Nuget 源的解决方法。 (截至 2021 年 2 月,希望将来支持组级推送)

【讨论】:

【参考方案2】:

当推送到项目级别时,源包也将显示在组级别。

但请注意,gitlab 在 nuget 集成方面存在一些基本问题 - 如果有人无权访问组中的一个项目,他将无法从该组下载任何包。 所以最好为包创建单独的项目并在那里推送/使用包。

【讨论】:

以上是关于GitLab 包注册表 Nuget 包每组的主要内容,如果未能解决你的问题,请参考以下文章

从私有 gitlab 注册表安装多个 npm 包

如何使用 Poetry 将 Python 包部署到 Gitlab 包注册表?

`pipenv install` 从 GitLab 项目的 PyPI 注册表中成功安装了一个包,但随后在锁定步骤中失败

引用的库使用 VS 2017 在 Nuspec 中注册为其他 nuget 引用

npm 发布因 GitLab NPM 注册表而失败

找不到从 gitlab 私有注册表安装的模块 pip