【问题标题】:How to set nuget server apikey in TFS build server如何在 TFS 构建服务器中设置 nuget 服务器 apikey
【发布时间】:2016-03-14 19:44:42
【问题描述】:

问题

如何设置 nuget 源 api 密钥,使其与运行“网络服务”的 TFS 构建一起使用?

场景

我有作为“网络服务”执行的 TFS 构建服务器和构建定义。

在构建期间,我正在尝试发布 nuget 包:

<Exec Command='"nuget.exe" push "mypackages\*.nupkg" -source http://mynugetserver/'/>

但是,我不知道如何为我的 nuget 服务器设置 apikey。

我尝试了什么

nuget setapi "myapikey" -source http://mynugetserver/

当我登录构建服务器并运行此命令时,它会保存当前用户的 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"

但构建以消息结束:

“密钥在指定状态下无效”

【问题讨论】:

    标签: tfs msbuild nuget tfsbuild


    【解决方案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 文件。刚刚在我的环境下试了一下,效果不错。

    【讨论】:

    • 我知道,但我不想在源代码(build.proj)中有apikey
    • @Liero 我刚刚编辑了我的答案并在其中添加了我的解决方法。
    • Oookey,但是为了在 tfs 构建期间运行目标,我必须将其签入。我将删除它,但它仍然是源代码历史记录。还是我没有正确理解?
    • @Liero 您可以将文件放在构建服务器上,并在构建定义中输入文件的绝对路径。例如,“D:\temp\xxx.proj”
    • 我可以做到,但这真的是最好的方法吗?希望在 TFS2015 中使用新的“Feeds”功能会更容易
    猜你喜欢
    • 2014-04-01
    • 2018-05-28
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多