BaGet服务之基础搭建(下)

简介: BaGet服务之基础搭建(下)

1、添加推送秘钥凭证

配置上述配置文档appsettings.json中的 ApiKey,此处设置为 ggcyadmin@@,用于演示操作。

{
    "ApiKey":"ggcyadmin@@"
}

2、生成nuget

创建一个项目 NugetTool,并切换到项目目录下,通过执行指令dotnet pack生成库对应的Nuget包。

>dotnet pack
用于 .NET 的 Microsoft (R) 生成引擎版本 17.0.0+c9eb9dd64
版权所有(C) Microsoft Corporation。保留所有权利。
  正在确定要还原的项目…
  所有项目均是最新的,无法还原。
  已成功创建包“物理路径\NugetTool\bin\Debug\NugetTool.1.0.0.nupkg”。

该路径下生成对应版本的nuget包。

NugetTool.1.0.0.nupkg

3、发布nuget

不带apikey配置时,执行如下指令

>dotnet nuget push -s http://localhost:5000/v3/index.json NugetTool.1.0.0.nupkg

输出:

>dotnet nuget push -s http://localhost:5000/v3/index.json NugetTool.1.0.0.nupkg
warn : 未提供 API 密钥,找不到 'http://localhost:5000/api/v2/package' 的 API 密钥。要保存源的 API 密钥,请使用 "setApiKey" 密钥。
正在将 NugetTool.1.0.0.nupkg 推送到 'http://localhost:5000/api/v2/package'...
  PUT http://localhost:5000/api/v2/package/
  Unauthorized http://localhost:5000/api/v2/package/ 322 毫秒
error: Response status code does not indicate success: 401 (Unauthorized).

apikey配置时,需要携带apikey进行发布

>dotnet nuget push -s http://localhost:5000/v3/index.json NugetTool.1.0.0.nupkg -k "ggcyadmin@@"

输出:

>dotnet nuget push -s http://localhost:5000/v3/index.json NugetTool.1.0.0.nupkg -k "ggcyadmin@@"
正在将 NugetTool.1.0.0.nupkg 推送到 'http://localhost:5000/api/v2/package'...
  PUT http://localhost:5000/api/v2/package/
  Created http://localhost:5000/api/v2/package/ 460 毫秒
已推送包。

5、查看发布结果

发布成功后,刷新页面出现如下结果:

Vs中配置Nuget包源,包源地址,为Baget对应地址http://localhost:5000/v3/index.json

http://localhost:5000/v3/index.json

相关配置如下:

配置后,打开任意解决方案,查看Vs中顶部菜单中的【工具】-【Nuget包管理器】-【管理解决方案的Nuget包】,切换数据源,可以看到当前Baget对应的包,代表服务搭建成功

五、删除特定包

卸载默认情况下,不会直接删除对应版本的包,只是在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 "ggcyadmin@@"

输出:

>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。

查看服务端,对应已经没有该版本包显示

如果需要彻底清除该版本,删除本地数据库中,对应历史记录以及,默认的nuget包文件服务端存储文件,也可以采用修改配置文件,允许包文件版本覆盖操作,用于更新同版本包,默认服务对应的 Nuget 包存储路径为解压路径的根目录packages

六、常见问题

删除 nuget 包后,同版本号 nuget 包无法进行安装。

>dotnet nuget push -s http://localhost:5000/v3/index.json NugetTool.1.0.0.nupkg -k "ggcyadmin@@"
正在将 NugetTool.1.0.0.nupkg 推送到 'http://localhost:5000/api/v2/package'...
  PUT http://localhost:5000/api/v2/package/
  Conflict http://localhost:5000/api/v2/package/ 400 毫秒
要跳过已发布的包,请使用 --skip-duplicate 选项
error: Response status code does not indicate success: 409 (Conflict).

对应 nuget 默认目录中 packages,文件仍然存在。

Enable package hard deletions

To prevent the “left pad” problem, BaGet’s default configuration doesn’t allow package deletions. Whenever BaGet receives a package deletion request, it will instead “unlist” the package. An unlisted package is undiscoverable but can still be downloaded if you know the package’s id and version. You can override this behavior by setting the PackageDeletionBehavior

{
    "PackageDeletionBehavior": "HardDelete",
}

Enable package overwrites

Normally, BaGet will reject a package upload if the id and version are already taken. You can configure BaGet to overwrite the already existing package by setting AllowPackageOverwrites

{
    "AllowPackageOverwrites": true,
}

重启服务后,再次进行上传操作,提示成功。

七、参考链接

[1]基础配置:https://loic-sharma.github.io/BaGet/configuration/

相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
548 10
|
C++
BaGet服务之基础搭建(上)
BaGet服务之基础搭建
532 0
|
消息中间件 XML 网络协议
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
📣读完这篇文章里你能收获到 - Nlog输出至文件/RabbitMQ/远程网络Tcp配置文档 - Nlog配置参数详解 - .NET CORE项目接入
5970 0
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
|
9月前
|
人工智能 算法 数据安全/隐私保护
《AI 造梦:解锁虚拟场景与角色逼真丰富密码》
生成式人工智能正以前所未有的态势席卷各领域,尤其在虚拟世界构建中展现惊人潜力。通过生成对抗网络(GANs)和变分自编码器(VAEs),AI能创建逼真的虚拟场景与角色。GANs通过生成器与判别器的对抗训练生成真实数据,而VAEs则通过潜在空间编码解码生成多样化角色。AI学习海量数据,雕琢细节,模拟自然现象,提升场景真实感。同时,AI从多维度构建虚拟角色,赋予其情感与行为逻辑。尽管面临技术瓶颈和伦理挑战,生成式AI正为游戏、影视等领域带来革命性变革。
333 14
|
缓存 编译器 API
聊一聊 C#中有趣的 SourceGenerator生成器
【10月更文挑战第1天】SourceGenerator 是 C# 中的一项强大功能,允许在编译时动态生成源代码,减少手动编写重复代码的工作量,并可在编译时进行优化和错误检查。它与 Roslyn 编译器紧密集成,可根据预定义逻辑生成新代码。应用场景包括自动生成接口实现和优化计算逻辑等。虽然能显著提升生产力和代码一致性,但开发和调试 SourceGenerator 本身较为复杂,维护成本较高。
456 7
|
Kubernetes iOS开发 Docker
Docker系列.Docker Desktop中如何启用Kubernetes
Docker系列.Docker Desktop中如何启用Kubernetes
1488 5
|
Linux Docker 容器
journalctl 命令使用总结
journalctl 命令使用总结
418 1
|
监控
查看服务器/IIS日志、log、访问信息基本方法
除了手动查看,你也可以使用日志分析工具,如Log Parser、AWStats等,这些工具可以帮助你更方便地分析日志数据。
2357 1
|
JavaScript 前端开发 API
Chrome插件实现问题之 content_script.js能做什么
Chrome插件实现问题之 content_script.js能做什么