为 Linux 和 Windows 运行器配置代理服务器
如果运行程序需要通过代理服务器进行通信,则可以使用环境变量或系统级配置来配置代理设置。
| Variable | Description | Example |
|---|---|---|
https_proxy | HTTPS 流量的代理 URL。 如果需要,可以包括基本身份验证。 | http://proxy.localhttp://192.168.1.1:8080http://username:password@proxy.local |
http_proxy | 用于 HTTP 流量的代理 URL。 如果需要,可以包括基本身份验证。 | http://proxy.localhttp://192.168.1.1:8080http://username:password@proxy.local |
no_proxy | 以逗号分隔的主机或 IP 地址列表,这些主机或 IP 地址应绕过代理。 某些客户端只在直接连接到 IP 地址而不是主机名时才接受 IP 地址。 | example.comexample.com,myserver.local:443,example.org |
运行程序应用程序启动时会读取代理环境变量,因此在配置或启动运行程序应用程序之前,必须设置环境变量。 如果代理配置发生更改,则必须重启运行器应用。
在 Windows 计算机上,代理环境变量名称不区分大小写。 在 Linux 和 macOS 机器上,建议环境变量全部小写。 如果 Linux 或 macOS 上的环境变量具有小写和大写形式(例如 https_proxy 和 HTTPS_PROXY),自托管运行程序应用程序会使用小写环境变量。
自托管运行器和 GitHub 通过 HTTPS(端口 443)建立连接。
示例配置
注意
为了避免问题,无论所用操作系统和 shell 的行为为何,最好将环境变量视为区分大小写。
Linux 和 macOS
为运行器设置代理环境变量。
export https_proxy=http://proxy.local:8080 export http_proxy=http://proxy.local:8080 export no_proxy=example.com,localhost,127.0.0.1
export https_proxy=http://proxy.local:8080
export http_proxy=http://proxy.local:8080
export no_proxy=example.com,localhost,127.0.0.1
Windows操作系统
在 Windows 上,可以通过设置环境变量或使用 netsh 命令来配置代理设置。 netsh 方法适用于依赖于 WinHTTP API 的应用程序和服务。
使用专用网络的运行程序仍需要设置环境变量。 是否需要配置 netsh 取决于工作流中使用的应用程序。
netsh winhttp set advproxy setting-scope=machine settings={\"Proxy\":\"proxy.local:8080\",\"ProxyBypass\":\"168.63.129.16;169.254.169.254\",\"AutoconfigUrl\":\"\",\"AutoDetect\":false}
netsh winhttp set advproxy setting-scope=machine settings={\"Proxy\":\"proxy.local:8080\",\"ProxyBypass\":\"168.63.129.16;169.254.169.254\",\"AutoconfigUrl\":\"\",\"AutoDetect\":false}
在自定义映像生成期间配置此配置时,用于 setting-scope=machine 确保在重新启动后和 VM 映像期间保留代理设置。
使代理设置持久化
在自定义映像生成过程中设置这些环境变量时,请确保配置在重新启动或映像重新生成期间保持。
Linux 和 macOS
将变量写入/etc/environment。
echo 'http_proxy=http://proxy.local' >> /etc/environment
Windows操作系统
设置系统范围的环境变量。
[Environment]::SetEnvironmentVariable("http_proxy", "http://proxy.local", "Machine")
[Environment]::SetEnvironmentVariable("http_proxy", "http://proxy.local", "Machine")
为 Azure 运行器配置代理
如果运行程序托管在 Azure 中,可以是自承载运行程序,要么是使用专用网络部署的 GitHub 托管的大型运行程序,则可能需要配置代理,以允许与 GitHub 服务的出站连接,同时保持网络隔离。
应将 Azure 元数据和管理 IP 添加到 no_proxy 列表中,以确保运行程序可以访问所需的 Azure 服务。 这些终结点允许 Azure 虚拟机检索正常运行所需的配置和标识信息。
这两个 Azure IP 包括:
- 168.63.129.16(请参阅 Azure IP 地址 168.63.129.16 概述)
- 169.254.169.254(请参阅 Azure 实例元数据服务)
使用 .env 文件设置代理配置
注意
在 GitHub 托管的运行程序上无法使用 .env 文件来设置代理配置。
在自托管运行程序上,可以通过将变量添加到自托管运行应用程序目录(即下载并解压该运行程序软件的目录)中的 .env 文件来配置代理设置。 当运行程序配置为在系统帐户下作为服务运行时,此方法非常有用。 运行器启动时,它会读取在.env中设置的用于代理配置的变量。
.env 代理配置示例
https_proxy=http://proxy.local:8080 no_proxy=example.com,myserver.local:443
https_proxy=http://proxy.local:8080
no_proxy=example.com,myserver.local:443
设置 Docker 容器的代理配置
如果你在工作流中使用 Docker 容器操作或服务容器,则除了设置上述环境变量外,可能还需要配置 Docker来使用代理服务器。
有关所需 Docker 配置的信息,请参阅 Docker 文档中的配置 Docker 以使用代理服务器。