【问题标题】:Nexus to serve up Chocolately packagesNexus 提供 Chocolatey 套餐
【发布时间】:2017-08-24 17:30:47
【问题描述】:

不是 NuGet 背景,我不明白如何设置 Nexus 来提供 Chocolatey 包。

【问题讨论】:

  • 你不明白哪一部分?能具体点吗?
  • 我不明白“简单服务器”是什么意思,或者如何代理 Chocolatey.org。我试图将example.com/nexus/content/groups/choco-all 用于--source,这当然行不通。
  • 也许链接此答案或将其复制到 chocolatey.org/docs/… 会帮助同一条船上的其他人。

标签: chocolatey


【解决方案1】:

这是你的做法:

  1. 创建一个指向https://chocolatey.org/api/v2/ 的 NuGet 代理存储库。这将允许您缓存来自 Chocolatey.org 的包,如果它在部署期间出现故障,可以派上用场。
  2. 创建一个 NuGet 托管存储库。您将在这里发布您的私有包。
  3. 创建包含上述存储库的组存储库。这是您在安装软件包时设置的 --source 标志。

上面创建的托管存储库下的 NuGet 选项卡将包含包源和个人 API 密钥。

所以如果托管回购有:

Package Source = "https://example.com/nexus/service/local/nuget/choco-releases/"
Personal API Key = "d8471cc1-d350-3e45-a0c2-95d0b938e1d9"

然后对打包和发布您的私有 mypackage 包的调用将如下所示:

choco pack
choco push --source "'https://example.com/nexus/service/local/nuget/choco-releases/'" -k="'d8471cc1-d350-3e45-a0c2-95d0b938e1d9'"

要从私有和公共来源安装软件包,请使用组存储库作为来源。上面创建的组存储库下的 NuGet 选项卡将包含要使用的包源。

所以如果组 repo 有:

Package Source = "https://example.com/nexus/service/local/nuget/choco-all/"

然后,安装您的私有和公开可用包的调用将如下所示:

choco install jdk8 mypackage --source "'https://example.com/nexus/service/local/nuget/choco-all/'" 

jdk8 包不在私有仓库中时; Nexus 将从 Chocolatey.org 中提取它,将其缓存在代理存储库中,然后将其发送到调用 choco install 的位置。

【讨论】:

  • 请记住,由于分发权和公共存储库,社区存储库(公开可用)上的大多数包必须在运行时下载那些不可再分发的二进制文件。将包本地缓存到代理存储库不足以使它们脱机。这就是为什么我们有一个名为 Package Internalizer 的工具,它可以让这些包 100% 脱机且可靠。 chocolatey.org/docs/community-packages-disclaimer 是一本很好的读物。另见chocolatey.org/docs/features-automatically-recompile-packages
  • 你用 Nexus v3 测试过这个吗?我无法让choco push 命令工作...
  • 没关系,我试图上传到组而不是托管存储库!
  • 在 Nexus 3 中,URL 已更改为 http://hostname/repository/reponame/,必须有一个尾随 /
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
相关资源
最近更新 更多