VSO NuGet发布服务器生成步骤失败



我正在使用Visual Studio Online-Package Manager预览版以及新的构建系统。包管理器预览添加了许多构建步骤,包括"NuGet Publisher"步骤,该步骤应将包推送到Visual Studio Online托管的专用提要。

现在这里的文档有点不协调。关于身份验证和个人访问令牌的文档也是如此。有一些迹象表明,只要您设置了权限(生成服务帐户对服务端点和包管理器扩展具有权限),就不需要在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:a1sEventViewerbinReleaseProject.Name.1.1.12.0.nupkg -s https://example.pkgs.visualstudio.com/DefaultCollection/_packaging/example/nuget/v3/index.json usfusmx4ez6mlfqwpp2abzc7e37denfcp7bxsep2hqij3tp4qwvq on C:a1sEventViewerbinReleaseProject.Name.1.1.12.0.nupkg
2015-11-18T08:35:24.5688946Z C:LRMMSServicesMmsTaskAgentProvisionerToolsagentsdefaultagentworkertoolsNuGet.exe push C:a1sEventViewerbinReleaseProject.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

我还试图使用个人访问令牌,但没有成功。

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

框内NuGet-Publish任务有两个选项:"外部"提要和"内部"提要。外部提要用于第三方服务,如NuGet.org、Artifactory,并期望使用API密钥进行服务连接。

内部提要是由Team Services托管的提要。您添加提要的NuGet端点的URL,而不是服务连接。生成系统依赖于项目集合生成服务(对于集合范围的生成定义)或项目生成服务(用于"此项目"范围的生成defs)作为提要的读取器或参与者。此处提供的所有文档。

UPDATE:现在已经全部修复了,所以您可以在vNext中使用标准的打包步骤,它们就像一个魅力。

目前,我正在用PowerShell构建步骤代替NuGet Publisher步骤。

这将在"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

我之所以来到这里,是因为我正在研究/配置一个内部部署——在那里我运行自己的NuGetServer(NuGet.Server,而不是visualstudio online)。错误相同(或具有相似的文本):

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

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

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

最新更新