【问题标题】:Run nuget task in VSTS without proxy settings在没有代理设置的 VSTS 中运行 nuget 任务
【发布时间】:2017-10-17 14:17:18
【问题描述】:

所以我想我想要的是这个帖子的反面:VSTS NuGet restore fails (proxy?)

我们有一台运行 VSTS 代理进行构建的本地机器。该机器设置了 http_proxy 变量,因此代理进程可以与云中的 VSTS 对话。

然后我尝试使用内置的 nuget 任务进行 nuget 恢复,但我要访问的提要位于本地工件实例上。要访问此提要,nuget 不需要使用代理所做的代理设置(我们在 Internet 选项中选中了“绕过本地地址代理”选项)。

但是,当我运行 nuget 任务时,我在构建日志中看到以下内容,似乎将 nuget 代理设置为代理代理:

2017-10-17T14:02:14.4961204Z ##[debug]agent.proxyurl=http://X.X.X.X:8080
2017-10-17T14:02:14.4961204Z ##[debug]agent.proxyusername=undefined
2017-10-17T14:02:14.6992455Z ##[debug]agent.proxypassword=undefined
2017-10-17T14:02:14.7773706Z ##[debug]Adding environment variable for NuGet proxy: http://X.X.X.X:8080/
2017-10-17T14:02:14.7773706Z ##[debug]exec tool: C:\vsts-agent\_work\_tool\NuGet\4.0.0\x64\nuget.exe

(真实日志中2组X.X.X.X完全相同)

我尝试设置一个进程变量http_proxy="" 并将这一行添加到我的nuget.config <add key="http_proxy" value="" />,但这没有任何区别。

有没有办法在不拿起代理代理的情况下运行 nuget 任务?

如果我只是从 VSTS 中的命令行任务手动运行 nuget,一切都会按预期工作。

【问题讨论】:

    标签: proxy nuget azure-devops azure-pipelines


    【解决方案1】:

    VSTS 代理应该能够从.proxybypass 文件中获取代理排除设置:

    echo http://local.nuget.server >> .proxybypass
    

    我不确定 Nuget 任务是否会处理此问题 (it looks like it doesn't yet),但至少您可以这样告诉代理忽略某些主机。这是在最近的代理版本so you may need to upgrade your agent 中添加的。

    我猜如果您使用我的VSTS Set Variable Taskagent.proxyurl 的值临时设置为空字符串并在调用nuget 任务后恢复它,它现在应该可以工作。

    PS the new configuration no longer uses the environment variable to set the proxy,新的默认设置也是将其放入代理根目录下的.proxy 文件中。

    【讨论】:

    • 请问.proxybypass 文件应该放在哪里?
    • 在代理文件夹中。
    • 使用设置变量选项 (Write-Host "##vso[task.setvariable variable=agent.proxyurl;]") 并且有效。
    • .proxybypass 不适用于我的代理版本 2.120.2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多