VSO NuGet Publisher 构建步骤失败
VSO NuGet Publisher Build Step Fails
我正在使用 Visual Studio Online - Package Manager Preview,以及新的构建系统。包管理器预览添加了一些构建步骤,包括一个 "NuGet Publisher" 步骤,该步骤应将包推送到由 Visual Studio Online 托管的私人提要。
现在documentation is a little out of step here. As is the documentation on auth and personal access tokens。有一些迹象表明,只要您设置了权限(构建服务帐户对服务端点和包管理器扩展具有权限),您就不需要在 VSO 和包管理器之间进行身份验证。实际构建步骤要求您从服务端点列表中 select,这就是我尝试过的。
当我没有在服务端点上放置凭据时,出现错误:
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\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\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\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
我也曾尝试使用个人访问令牌,但无济于事。
如何使发布步骤正常工作?
更新:现在一切都已修复,因此您可以在 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
内置 NuGet 发布任务有两个选项:"external" 提要和 "internal" 提要。外部提要用于 NuGet.org、Artifactory 等第 3 方服务,并期望与 API 密钥的服务连接。
内部提要是由 Team Services 托管的。添加提要的 NuGet 端点的 URL 而不是服务连接。构建系统依赖于项目集合构建服务(用于集合范围的构建定义)或项目构建服务(用于 "this project" 范围的构建定义)作为提要的 Reader 或贡献者。所有可用的文档 here.
我来到这里是因为我是 researching/configuring 内部部署 -- 我是 运行 我自己的 NuGet 服务器(nuget.server,而不是 visual studio在线的)。错误是相同的(或具有相似的文本):
Object reference not set to an instance of an object
事实证明,我的解决方案是 URL 不正确。
正确的版本是:http://server-name/NuGet/api/v2/package
为了完整起见,我有:http://server-name/NuGet/
这是错误的。
我正在使用 Visual Studio Online - Package Manager Preview,以及新的构建系统。包管理器预览添加了一些构建步骤,包括一个 "NuGet Publisher" 步骤,该步骤应将包推送到由 Visual Studio Online 托管的私人提要。
现在documentation is a little out of step here. As is the documentation on auth and personal access tokens。有一些迹象表明,只要您设置了权限(构建服务帐户对服务端点和包管理器扩展具有权限),您就不需要在 VSO 和包管理器之间进行身份验证。实际构建步骤要求您从服务端点列表中 select,这就是我尝试过的。
当我没有在服务端点上放置凭据时,出现错误:
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\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\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\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
我也曾尝试使用个人访问令牌,但无济于事。
如何使发布步骤正常工作?
更新:现在一切都已修复,因此您可以在 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
内置 NuGet 发布任务有两个选项:"external" 提要和 "internal" 提要。外部提要用于 NuGet.org、Artifactory 等第 3 方服务,并期望与 API 密钥的服务连接。
内部提要是由 Team Services 托管的。添加提要的 NuGet 端点的 URL 而不是服务连接。构建系统依赖于项目集合构建服务(用于集合范围的构建定义)或项目构建服务(用于 "this project" 范围的构建定义)作为提要的 Reader 或贡献者。所有可用的文档 here.
我来到这里是因为我是 researching/configuring 内部部署 -- 我是 运行 我自己的 NuGet 服务器(nuget.server,而不是 visual studio在线的)。错误是相同的(或具有相似的文本):
Object reference not set to an instance of an object
事实证明,我的解决方案是 URL 不正确。
正确的版本是:http://server-name/NuGet/api/v2/package
为了完整起见,我有:http://server-name/NuGet/
这是错误的。