GitLab 管理 NuGet 包

打印 上一主题 下一主题

主题 576|帖子 576|积分 1728

1 概览

在服务器上构建项目时,须要引用 nuget.org 之外的包,如公司内部开发的、第三方未发布到 nuget.org 上的。怎么办?
GitLab 提供了 Package Registry 来办理这个题目。
2 上传 NuGet 包到指定项目中


  • 新建或使用一个已有项目,作为存放 NuGet 包的项目,为其他须要引用对应 NuGet 包的项目提供 Nuget 源和源上所有包的依靠。
  • 在该项目的【仓库】设置中,设置【部署令牌(Deploy Token)】
  • 起首设置一个权限为【write_package_registry】的令牌,答应对软件包库举行读取、写入和删除访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。用户名选填。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于上传包。
  • 再设置一个权限为【read_package_registry】的令牌,答应对软件包仓库举行只读访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。必须填写一个合适的用户名,如 DEPLOY_READ。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于添加源。
  • 定位到所需上传的 Nuget 包,如在当地磁盘目次下,实行命令:
    1. dotnet nuget push <待上传的Nuget包> --source https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json --api-key <write_package_registry的令牌密码>
    复制代码
    api-key 还可以是个人访问令牌或者流水线作业令牌,该指令须要 GitLab v16.1 以上的支持
3 添加 GitLab 上的 NuGet 源


  • 构建前,为项目所在构建情况内添加新的 NuGet 源,实行命令:
    1. dotnet nuget add source "https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" --name <源名称> --username <read_package_registry的令牌用户名> --password <read_package_registry的令牌密码>
    复制代码
    源名称可以是恣意合适的名称,如 gitlab-software-group-projects
4 管理 NuGet 包源


  • 在 %APPDATA%/NuGet/ 中找到 NuGet.Config,举行编辑。也可以在如 Visual Studio 这样的 IDE 中找到对应的【NuGet 包管理器设置】,从而在 UI 界面选项中对设置文件举行修改。
  • 使用 CLI 添加过 NuGet 源,可以在设置文件中 packageSources 查看到。
    1. <packageSources>
    2.   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    3.   <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages" />
    4.   <add key="gitlab-software-group-projects" value="https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" />
    5. </packageSources>
    复制代码
  • 出于安全考虑,NuGet 现要求对程序包举行包源映射,告知机器某个程序包应该访问哪个包源举行下载,避免不法分子利用同名的程序包链接到未知的地点。设置文件中编辑 packageSourceMapping 来举行包源映射设置。
    1. <packageSources>
    2.   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    3.   <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages" />
    4.   <add key="gitlab-software-group-projects" value="https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" />
    5. </packageSources><packageSources>
    6.   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    7.   <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages" />
    8.   <add key="gitlab-software-group-projects" value="https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" />
    9. </packageSources><packageSources>
    10.   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    11.   <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages" />
    12.   <add key="gitlab-software-group-projects" value="https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" />
    13. </packageSources>  
    复制代码
5 参考资料


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表