所以我认为我想要的是这篇文章的反面: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,它将按预期工作。
答案 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
我不确定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
文件中。