【发布时间】:2020-04-24 11:58:54
【问题描述】:
看来我的队友已经关闭了他们的 nuget 服务器并去度假了。 我需要临时解决,以便在还原 nuget 包时我的 Azure Dev Ops 构建不会失败。
我有一个包的本地副本
C:\Users\kirst.nuget\packages\mypackagetemp
我想发布到临时提要。
我阅读了on publishing a package from the command line 的说明,但对第 6 步感到困惑 当然我不需要设置项目和恢复包,因为我已经有了 .nupkg
我试过命令
c:\nuget\nuget.exe push -Source "TempFeed" -ApiKey az mypackagetemp.nupkg
但出现错误
无法加载源的服务索引 https://pkgs.dev.azure.com/mycompany/myproject/_packageing/TempFeed/nuget/v3/index.json
当我重复该命令时,我收到一个凭据请求 当我输入凭据时,我连接到 Azure Dev Ops,但它们不起作用。
[更新]
我被提示输入凭据……阅读它……太混乱了。
[更新]
我将 nuget.exe 从 5.1.0.6013 升级到最新版本 5.4.0.6315 这次我有一个 UI 可以登录和消息
您的包裹已推送
但是,当 devops 管道构建运行时,我收到一条消息
unable to load the service index for source
https://pkgs.dev.azure.com/mycompany/myproject/_packageing/TempFeed/nuget/v3/index.json
我想我需要以某种方式创建一个 index.json 文件。
我的项目正在使用 mynuget.config,它在 packagesources 中有以下内容
<add key="TempPackage" value="https://pkgs.dev.azure.com/mycompany/_packaging/myfeed/nuget" />
[更新]
我把 mynuget.config 改成了有
<add key="TempPackage" value="https://pkgs.dev.azure.com/mycompany/_packaging/myfeed/nuget/v3/index.json" />
现在开发操作构建显示消息
未能检索到有关“Serilog.Enrichers.Thread”的信息 从远程来源 'https://pkgs.dev.azure.com/mycompany/_packaging/myfeed/nuget/FindPackagesById()?id="Serilog.Enrichers.Thread'', 响应状态码不表示成功:404(未找到)。)
我的解决方案确实使用了 Serilog。我不认为 3rd 方包使用它。
[更新]
下一次构建时,我在寻找 WindowsAzure.Storage 时遇到了另一个错误
每次构建管道时,我似乎都会得到一个不同的文件导致错误。
我的项目工件确实有 2 个提要。所需文件位于未选择的提要中。
[更新]
我尝试编辑 mynuget.config 以使用 index.json 但是我得到一个构建错误
nuget 命令失败,退出代码 (1) 和错误(无法加载 源的服务索引 https://pkgs.dev.azure.com/mycompany/_packaging/myfeed/nuget/v3/index.json。 响应状态码不表示成功:404(未找到 - ID 为“MyFeed”的 Feed 不存在
[更新]
因为新提要是基于项目的,所以我编辑了 mynuget.config 以拥有
<add key="TempPackage" value="https://pkgs.dev.azure.com/mycompany/myproject/_packaging/myfeed/nuget/v3/index.json" />
现在可以了!
【问题讨论】:
-
见this,如果你使用nuget restore任务或类似任务,我们可以确定
feedstouse,select(使用devops feed+nuget.org)或config(自定义nuget .config 文件)。对于您得到的错误,这意味着 401 Unauthorized。所以这是一个与权限相关的问题。 -
您可以使用
select方式,并导航到 Artifacts=>feed settings=>permissions=>add user/groups=>将您的current projectName build service添加为所有者角色,以确保您的构建具有访问以从您的提要中获取软件包。 -
我的临时提要是项目范围的。我想知道它是否需要在组织范围内进行
-
1.如果您的临时提要和当前构建管道属于同一个项目,那么它应该可以工作。如果您的临时提要属于项目 A 而构建管道属于项目 B,则应确保项目 A 已将
Project B build service account添加为成员,以便项目 B 的构建管道可以访问项目 A 的提要。 2. 并查看我的更新作为回答,您可以在配置还原任务(使用UI)时使用select方式而不是mynuget.config,单击USe packages from Azure Artifacts/tfs feed的下拉列表,如果您可以在那里找到所需的提要? -
我的 tempfeed 属于该项目,但我仍然需要在 mynuget.config 中提及项目名称。也许这是因为该项目还使用了公司范围的包。
标签: azure-devops nuget-package