【发布时间】:2019-05-01 20:31:47
【问题描述】:
在 Windows 2016 服务器上配置本地构建代理时,我使用以下代理配置设置:
.\config.cmd --proxyurl http://192.3.4.5:8080 --sslskipcertvalidation
这使构建服务器可以毫无问题地连接到代理后面的 Azure DevOps,但是 Powershell 构建在连接到 Internet 时遇到问题。我通过在构建命令的开头设置一个环境变量来解决这个问题:
$env:http_proxy = "192.3.4.5:8080"
最后一个问题是构建中的一个步骤,需要 winrm 到直接托管在构建服务器上的 VM,但它无法连接。我试过这样配置代理的 .proxybypass 文件:
localhost
192\.3\.4\.*
然而,这未能解决问题。关于如何在构建步骤中设置代理绕过的任何想法?我可以设置另一个 powershell env 变量吗?
【问题讨论】:
-
代理设置确保代理可以呼叫。这些任务依赖于许多不同的技术,并且每种技术都使用不同的代理配置、IP 掩码和白名单。因此,如果您的代理在代理后面,您可能需要在该机器上配置许多不同的代理设置。这是一种痛苦。即使对于像我这样的任务作者,他们也不能只获取代理配置并将其一对一地复制到每个任务所依赖的技术中。
-
Powershell 依赖于运行任务的用户的 Windows Internet 设置代理配置。您还可以覆盖 .NET 代理配置 Powershell 依赖于 .NET 代理设置,此处列出了如何即时更改这些设置:stackoverflow.com/a/209072/736079
-
上面的评论帮助解决了这个问题。只需要在 powershell 构建中使用 .NET 类 - 例如; [net.webrequest]::defaultwebproxy = new-object net.webproxy "http://$env:proxy_ip" 然后添加 [system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true
标签: azure powershell azure-devops azure-pipelines