在 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 到直接托管在构建服务器上的虚拟机,但它无法连接。我尝试按如下方式配置代理的 .proxybypass 文件:
localhost
192\.3\.4\.*
但这并不能解决问题。关于如何在构建步骤中设置代理旁路有什么想法吗?我可以设置另一个 powershell 环境变量吗?
最佳答案
代理设置确保代理可以调用。这些任务依赖于许多不同的技术,并且每个任务都使用不同的代理配置、IP 掩码和白名单。因此,如果您的代理位于代理后面,您可能需要在所述计算机上配置许多不同的代理设置。很痛苦。即使对于像我这样的任务作者来说,他们也不能只获取代理配置并将其一对一复制到每个任务所依赖的技术。
Powershell 依赖于运行任务的用户的 Windows Internet 设置代理配置。您还可以覆盖 .NET 代理配置 Powershell 依赖于 .NET 代理设置,此处列出了如何动态更改这些设置:https://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 Pipelines 代理代理设置未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942362/