在没有代理设置的情况下在VSTS中运行nuget任务

时间:2017-10-17 14:17:18

标签: proxy nuget azure-devops azure-pipelines

所以我认为我想要的是这篇文章的反面:VSTS NuGet restore fails (proxy?)

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

然后我尝试使用内置的nuget任务进行nuget恢复,但我想要访问的提要是在本地工件实例上。要访问此Feed,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,它将按预期工作。

1 个答案:

答案 0 :(得分:1)

VSTS代理应该能够从struct Args { int a; float f; char msg[10]; }; ... static void* callback(void* userData) { Args* a = (Args*) userData; /* use args here */ } ... Args mArgs = {10, 2.0, "message"}; pthread_create(&thread,NULL, callback, (Args*)&mArgs); enter code here 文件中获取代理排除设置:

.proxybypass

enter image description here

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

我猜测如果您使用我的VSTS Set Variable Task临时将echo http://local.nuget.server >> .proxybypass 的值设置为空字符串并在调用nuget任务后将其恢复,那么它现在应该可以正常工作。

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