Azure Pipelines:设置 NuGet Restore 的代理环境
即使 NuGetAuthenticate 已配置好源凭据,也要为还原进程提供 http_proxy 和 no_proxy。
NuGetAuthenticate 配置的是对包源的认证。认证任务成功,并不会为 dotnet、nuget.exe 或 MSBuild 配置出站代理。
如果凭据设置成功,而接下来的还原需要 HTTP 代理,就要为那个进程提供环境变量。例如:
- task: NuGetAuthenticate@1
- script: dotnet restore
env:
http_proxy: $(proxyUrl)
no_proxy: packages.corp.example,localhost,127.0.0.1proxyUrl 是已有的管道变量,里面存放期望的完整代理 URL。按源的实际路由策略调整绕过列表。对于经由公共中转放行的公共源,HTTP 代理列表可提供无需账号的 proxyUrl 候选;私有源的绕过项应保留。此片段假定项目的包源已经配置好。
在 Linux 和 macOS 上,文档记录的环境变量名是小写。名为 http_proxy 的管道变量在自动导出时可能变成大写。显式的 env 映射可以保留工具所需的键名。
对于自托管代理,另一种做法是把这些值配置到代理进程的环境里,并在修改后重启该代理。其他终端的环境不会更新已经在运行的服务。
NuGet 也支持在自身配置中写入代理项。这些配置要与包源凭据分开,并在以其他账号执行还原时检查实际生效的配置范围。
还原的包可能不止需要源的第一个 URL。如果后续的包下载或认证主机失败,在评估代理和绕过策略时应使用那个真实主机名。