轻量NuGet服务—BaGet
在企业内部,有些库是私有的,专项的,要求非公开,另一方面需要公司内部开发人员共享这些库,这时就要搭建一个私用的NuGet仓库了。
BaGet就是一个优秀的,轻量级的包管理服务。它的github地址是https://github.com/loic-sharma/BaGet,当然也可以不用源码,直接在https://github.com/loic-sharma/BaGet/releases,下载它的zip。
BaGet是.net core写的,所以可以在多平台下部署。
下载后解压运行
dotnet BaGet.dll
访问http://localhost:5000
是不是很眼熟,与NuGet还很像
,下面是NuGet页面。
怎么上传一个nupkg包呢?BaGet提供了四种方法,在upload菜单下可以查看
做个nupkg包,来一把,结果如下:
在上传过程中,会有这样一个提示:
warn : 未提供 API 密钥,找不到 'http://localhost:5000/api/v2/package' 的 API 密钥。要保存源的 API 密钥,请使用 "setApiKey" 密钥。
这里是为了上传时加一层保护,不是谁都可以随便上传,可以在appsetting.json中增加一个密钥 "ApiKey": "NUGET-SERVER-API-KEY",只有密钥的人才能上传包,那上传时,的命令变成:
dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg
dotnet nuget push -s http://112.126.59.41:10008/v3/index.json -k 13434334# ORM.EntityFrameWork.Extension.1.0.2.nupkg
删除特定包
卸载默认情况下,不会直接删除对应版本的包,只是在Nuget
列表中不显示,实际的包文件还存在,同样,删除也分为未配置apikey
和配置apikey
两类,此处仅仅演示配置 apikey
之后的操作。
未携带apikey
dotnet nuget delete -s http://localhost:5000/v3/index.json NugetTool 1.0.0
输出:
>dotnet nuget delete -s http://localhost:5000/v3/index.json NugetTool 1.0.0 warn : 未提供 API 密钥,找不到 'http://localhost:5000/api/v2/package' 的 API 密钥。要保存源的 API 密钥,请使用 "setApiKey" 密钥。 NugetTool 将从 'http://localhost:5000/api/v2/package' 删除 1.0.0。是否继续? (y/N) y warn : 正在从 'http://localhost:5000/api/v2/package' 删除 NugetTool 1.0.0。 DELETE http://localhost:5000/api/v2/package/NugetTool/1.0.0 Unauthorized http://localhost:5000/api/v2/package/NugetTool/1.0.0 81 毫秒 error: Response status code does not indicate success: 401 (Unauthorized).
携带apikey
>dotnet nuget delete -s http://localhost:5000/v3/index.json NugetTool 1.0.0 -k "mima@@"
输出:
>dotnet nuget delete -s http://localhost:5000/v3/index.json NugetTool 1.0.0 -k "ggcyadmin@@" NugetTool 将从 'http://localhost:5000/api/v2/package' 删除 1.0.0。是否继续? (y/N) y warn : 正在从 'http://localhost:5000/api/v2/package' 删除 NugetTool 1.0.0。 DELETE http://localhost:5000/api/v2/package/NugetTool/1.0.0 NoContent http://localhost:5000/api/v2/package/NugetTool/1.0.0 101 毫秒 NugetTool 已成功删除 1.0.0。
查看服务端,对应已经没有该版本包显示