所以我认为我想要的是这篇文章的反面:VSTS NuGet 恢复失败(代理?) https://stackoverflow.com/questions/45369334/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,一切都会按预期工作。
VSTS 代理应该能够从代理获取代理排除设置.proxybypass
file:
echo http://local.nuget.server >> .proxybypass
我不确定 Nuget 任务是否会接受这个(看起来还没有 https://github.com/Microsoft/vsts-tasks/blob/b40609448d1e4d409b6a83fbe2ba19a6a9ebd9ec/Tasks/Npm/npmtoolrunner.ts#L68-L82),但至少可以通过这种方式告诉代理忽略某些主机。这是在最近的代理版本中添加的,所以你可能需要升级你的代理 https://github.com/Microsoft/vsts-agent/issues/1064.
我猜如果你用我的VSTS 设置变量任务 https://marketplace.visualstudio.com/items?itemName=jessehouwing.jessehouwing-vsts-variable-tasks临时设置值agent.proxyurl
到一个空字符串并在调用 nuget 任务后恢复它,它现在应该可以工作。
PS 新配置不再使用环境变量来设置代理 https://learn.microsoft.com/en-us/vsts/build-release/actions/agents/v2-windows#qa,新的默认值是将其放入.proxy
文件也在代理根目录中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)