1 概览
在服务器上构建项目时,需要引用 nuget.org 之外的包,如公司内部开发的、第三方未发布到 nuget.org 上的。怎么办?
GitLab 提供了 Package Registry 来解决这个问题。
2 上传 NuGet 包到指定项目中
-
新建或使用一个已有项目,作为存放 NuGet 包的项目,为其他需要引用对应 NuGet 包的项目提供 Nuget 源和源上所有包的依赖。
-
在该项目的【仓库】设置中,设置【部署令牌(Deploy Token)】
-
首先设置一个权限为【write_package_registry】的令牌,允许对软件包库进行读取、写入和删除访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。用户名选填。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于上传包。
-
再设置一个权限为【read_package_registry】的令牌,允许对软件包仓库进行只读访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。必须填写一个合适的用户名,如 DEPLOY_READ。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于添加源。
-
定位到所需上传的 Nuget 包,如在本地磁盘目录下,执行命令:
dotnet nuget push --source https://gitlab.example.com/api/v4/projects//packages/nuget/index.json --api-key
api-key 还可以是个人访问令牌或者流水线作业令牌,该指令需要 GitLab v16.1 以上的支持
3 添加 GitLab 上的 NuGet 源
-
构建前,为项目所在构建环境内添加新的 NuGet 源,执行命令:
dotnet nuget add source "https://gitlab.example.com/api/v4/projects//packages/nuget/index.json" --name --username --password
源名称可以是任意合适的名称,如
gitlab-software-group-projects
4 管理 NuGet 包源
-
在
%APPDATA%/NuGet/
中找到NuGet.Config
,进行编辑。也可以在如 Visual Studio 这样的 IDE 中服务器托管找到对应的【NuGet 包管理器设置】,从而在 UI 界面选项中对配置文件进行修改。 -
使用 CLI 添加过 NuGet 源,可以在配置文件中
package服务器托管Sources
查看到。 -
出于安全考虑,NuGet 现要求对程序包进行包源映射,告知机器某个程序包应该访问哪个包源进行下载,避免不法分子利用同名的程序包链接到未知的地址。配置文件中编辑
packageSourceMapping
来进行包源映射设置。
5 参考资料
- NuGet packages in the Package Registry
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
武汉源创会回归,4月20聊聊大模型” 本文分享自华为云社区《解锁物联网数据管理的新境界:华为云OBS助力数据转发与存储【零代码零硬件玩转华为云IoT】》,作者: Y-StarryDreamer。 1. 背景介绍 物联网(IoT)技术的快速发展正在推动服务器托管…