【问题标题】:VSO NuGet Publisher Build Step FailsVSO NuGet Publisher 构建步骤失败
【发布时间】:2015-11-18 09:51:36
【问题描述】:

我正在使用 Visual Studio Online - 包管理器预览版以及新的构建系统。包管理器预览添加了许多构建步骤,包括“NuGet Publisher”步骤,该步骤应将包推送到 Visual Studio Online 托管的私有源。

现在是documentation is a little out of step heredocumentation on authpersonal access tokens 也是如此。有一些迹象表明,只要您设置了权限(构建服务帐户对服务端点和包管理器扩展具有权限),就不需要在 VSO 和包管理器之间进行身份验证。实际的构建步骤要求您从服务端点列表中进行选择,这就是我所尝试的。

当我在服务端点上没有放置凭据时,我收到错误:

Server Key must be set, set the password on the generic service

当我尝试将 API 密钥放在服务端点上时,它似乎在保存时被丢弃......并且错误变为:

2015-11-18T08:35:24.5678951Z Invoking nuget with push C:\a\1\s\EventViewer\bin\Release\Project.Name.1.1.12.0.nupkg -s https://example.pkgs.visualstudio.com/DefaultCollection/_packaging/example/nuget/v3/index.json usfusmx4ez6mlfqwpp2abzc7e37denfcp7bxsep2hqij3tp4qwvq on C:\a\1\s\EventViewer\bin\Release\Project.Name.1.1.12.0.nupkg
2015-11-18T08:35:24.5688946Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\default\agent\worker\tools\NuGet.exe push C:\a\1\s\EventViewer\bin\Release\Project.Name.1.1.12.0.nupkg -s https://example.pkgs.visualstudio.com/DefaultCollection/_packaging/Example/nuget/v3/index.json usfusmx4ez6mlfqwpp2abzc7e37denfcp7bxsep2hqij3tp4qwvq
2015-11-18T08:35:25.3467312Z Please provide credentials for: https://example.pkgs.visualstudio.com/DefaultCollection/_packaging/Example/nuget/v3/index.json
2015-11-18T08:35:25.3667189Z ##[error]Object reference not set to an instance of an object.
2015-11-18T08:35:25.3677179Z UserName: Password: 
2015-11-18T08:35:25.4647059Z ##[error]Unexpected exit code 1 returned from tool NuGet.exe

我也尝试过使用个人访问令牌,但无济于事。

如何使发布步骤正常工作?

【问题讨论】:

  • 我认为我的问题是“项目构建服务”没有对提要的权限。坏消息是自动完成功能只显示前 20 个结果,而我需要的 GUID 不在前 20 个中(从该列表中添加一些并不会阻止它们显示)。
  • 您的第一个文档链接已过期 - 入口点现在是 visualstudio.com/get-started/package/what-is-packaging。另外,关于 20 个身份的问题,我们有一个错误跟踪。

标签: azure-devops azure-pipelines azure-artifacts


【解决方案1】:

内置 NuGet 发布任务有两个选项:“外部”订阅源和“内部”订阅源。外部提要适用于 NuGet.org、Artifactory 等 3 方服务,并期望与 API 密钥建立服务连接。

内部提要是由 Team Services 托管的。添加源的 NuGet 终结点的 URL,而不是服务连接。构建系统依赖于项目集合构建服务(对于集合范围的构建定义)或项目构建服务(对于“此项目”范围的构建定义)作为提要的读者或贡献者。所有可用的文档here

【讨论】:

  • 嗨,马特,不用担心 - 工作正常的部分(提要和打包步骤)同时 PowerShell 脚本正在为轮子加油 :)
  • 嗨,马特,知道什么时候会部署它吗? powershell 和 Nuget Publisher 目前都没有工作:(
  • 它于 11 月 24 日部署。确保选择“内部”提要,并复制提要的 NuGet 端点的 URL。您可以单击 Web UI 中的 Connect to feed 按钮来获取它。
  • 我做到了,不幸的是它不起作用。 Feed 还会将 ApiKey 生成为 VSTS,其中 NugetPublisher 使用 VssSessionKey。我不确定它们是否相关。你可以在这里找到详细的登录stackoverflow.com/questions/34079593/…
  • 好的,我必须明确设置项目构建服务而不是集合才能拥有发布权限
【解决方案2】:

更新:现在一切都已修复,因此您可以使用 vNext 中的标准打包步骤,它们的工作原理就像一个魅力。

暂时我是substituting the NuGet Publisher step with a PowerShell build step

这会在“NuGet Packager”步骤之后插入构建,并允许我通过在压缩包之前设置包源来指定所有凭据。

$feedUrl = "https://example.pkgs.visualstudio.com/DefaultCollection/_packaging/Example/nuget/v3/index.json"

$packagePath =  $ENV:BUILD_REPOSITORY_LOCALPATH + "\YourOrg.YourComponent." + $ENV:BUILD_BUILDNUMBER + ".nupkg"

Write-Host "Adding package Source"
$addSourceCommand = $ENV:BUILD_REPOSITORY_LOCALPATH + "\nuget sources add -name ""Example"" -source " + $feedUrl + " -username ""your.username"" -password ""yourpassword"""
Invoke-Expression -Command $addSourceCommand

Write-Host "Pushing package to NuGet"
$pushCommand =  $ENV:BUILD_REPOSITORY_LOCALPATH + "\nuget push $packagePath -Source " + $feedUrl + " -ApiKey Example"
Invoke-Expression -Command $pushCommand

【讨论】:

    【解决方案3】:

    我来到这里是因为我正在研究/配置一个内部部署——我在其中运行我自己的 NuGet 服务器(nuget.server,而不是 Visual Studio Online)。错误是相同的(或具有相似的文本):

    对象引用未设置为对象的实例

    结果证明,我的解决方案是 URL 不正确。 正确的版本是:http://server-name/NuGet/api/v2/package

    为了完整起见,我有:http://server-name/NuGet/ 这是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多