如何设置nuget源api密钥,以便它与TFS Build一起运行“网络服务”?
我有TFS构建服务器和构建定义,它作为“网络服务”执行。
在构建期间我正在尝试发布nuget包:
<Exec Command='"nuget.exe" push "mypackages\*.nupkg" -source http://mynugetserver/'/>
但是,我不知道如何为我的nuget服务器设置apikey。
nuget setapi "myapikey" -source http://mynugetserver/
当我登录构建服务器并运行runthis命令它保存当前用户的apikey,并在作为网络服务运行的TFS构建中被忽略。 build.proj在手动执行时发布包,因为为当前用户保存了密钥,但是当我对新的tfs构建进行排队时它不起作用。
我试图在我的TFS项目构建'C:\ Builds \ 1 \ MyProject \ nuget.config`的根目录中创建自定义nuget.config并运行
nuget setapi "myapikey" -source http://mynugetserver/ -ConfigFile "C:\Builds\1\MyProject\nuget.config"
但构建以消息结束:
“密钥无法在指定状态下使用”
答案 0 :(得分:1)
您可以使用push命令直接设置apiKey,如下所示:
nuget push <packages> <apiKey> -source <nuget server url>
您还可以使用以下内容创建单独的proj文件,然后创建构建定义以构建它一次:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="SetApiKey">
<Exec Command='nuget.exe setapikey xxxxx -source '/>
</Target>
</Project>
在此之后,你应该可以在“网络服务”下推送没有apikey的软件包,你可以删除构建定义和proj文件。我只是在我的环境下尝试过它并且有效。