通过 Web 代理运行自托管代理

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

当自承载代理需要 Web 代理时,可以在配置过程中通知代理有关代理的信息。 这允许你的代理程序通过代理服务器连接到 Azure Pipelines 或 TFS。 这反过来又允许代理获取源并下载工件。 最后,它将代理详细信息传递到还需要代理设置才能访问 Web 的任务。

Azure Pipelines、TFS 2018 RTM 和更新版

(适用于代理版本 2.122 及更新。

若要使代理在网络代理后运行,请在代理配置期间传递 --proxyurl--proxyusername--proxypassword

例如:

./config.cmd --proxyurl http://127.0.0.1:8888 --proxyusername "myuser" --proxypassword "mypass"

我们负责地将代理凭据存储在每个平台上,以防止意外泄露。 在 Linux 上,凭据使用基于计算机 ID 的对称密钥进行加密。 在 macOS 上,我们使用密钥链。 在 Windows 上,我们使用凭据存储。

注释

代理版本 122.0 随 TFS 2018 RTM 一起提供,在 Windows 上配置为服务时存在已知问题。 由于 Windows 凭据存储是特定于每个用户,因此必须使用与该服务运行相同的用户来配置代理。 例如,要将代理服务配置为mydomain\buildadmin来运行,必须以config.cmd方式启动mydomain\buildadmin。 为此,可以使用该用户登录到计算机或在 Windows shell 中使用 Run as a different user

代理程序如何在生成或发布作业中处理代理问题

代理将通过文件中指定的 .proxy Web 代理与 Azure DevOps/TFS 服务通信。

Get Source由于构建中的任务代码和Download Artifact发布中的任务也已烘焙到代理中,这些任务将遵循文件中的.proxy代理配置。

代理通过环境变量公开每个任务执行的代理配置。 任务作者需要使用 azure-pipelines-task-lib 方法检索代理配置并在其任务中 处理代理

请注意,许多工具不会自动使用代理配置的代理设置。 例如,curldotnet等工具可能还需要在计算机上设置代理环境变量http_proxy

指定代理旁路 URL

在代理的根目录中创建一个 .proxybypass 文件,指定正则表达式(在 ECMAScript 语法中)以匹配应绕过代理的 URL。 例如:

github\.com
bitbucket\.com

为代理设置启用基本身份验证

代理配置可能与使用默认 NTLM 身份验证的某些公司代理设置不兼容,你可能会得到 407 authentication errors。 在这种情况下,可以通过在代理配置期间添加 --usebasicauthforproxy 标志来为代理启用基本身份验证,前提是代理支持回退到基本身份验证。

例如:

./config.cmd --proxyurl http://proxy.company.com:port --proxyusername <userNamePlaceholder> --proxypassword <passwordPlaceholder> --usebasicauthforproxy