在 Web 代理后面运行自托管代理

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

自托管代理需要 Web 代理时,可以在配置期间向自托管代理告知有关 Web 代理的信息。 此操作允许自托管代理通过 Web 代理连接到 Azure Pipelines 或 TFS。 这样一来,自托管代理便可获取源和下载工件。 最后,此过程会将自托管代理详细信息传递给任务,这些任务还需要获得此代理设置才能访问 Web。

Azure Pipelines,TFS 2018 RTM 及更新版本

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

若要使自托管代理能够在 Web 代理后面运行,请在配置自托管代理期间传递 --proxyurl--proxyusername--proxypassword

例如:

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

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

注意

TFS 2018 RTM 随附的自托管代理版本 122.0 在 Windows 上配置为服务时存在已知问题。 由于 Windows Credential Store 是每用户存储库,因此必须使用运行服务的同一用户来配置自托管代理。 例如,若要配置为以 mydomain\buildadmin 身份运行自托管代理服务,必须以 mydomain\buildadmin 身份启动 config.cmd。 为此,可以使用该用户登录计算机或在 Windows Shell 中使用 Run as a different user

自托管代理如何处理生成或发布作业中的 Web 代理

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

由于生成中的 Get Source 任务和发布中的 Download Artifact 任务的代码也会在自托管代理中生成,因此这些任务将遵循 .proxy 文件中的自托管代理配置。

自托管代理通过环境变量公开 Web 代理配置,以执行每项任务。 任务作者需要使用 azure-pipelines-task-lib 方法来检索 Web 代理配置并在任务中处理该代理

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

指定绕过 Web 代理的 URL

在自托管代理的根目录中创建 .proxybypass 文件,该文件可指定正则表达式(采用 ECMAScript 语法编写),以匹配应绕过 Web 代理的 URL。 例如:

github\.com
bitbucket\.com