为一条 Jenkins Unix shell 命令设置代理
在代理端为一条构建命令覆盖代理环境,而不改动控制器或无关的阶段。
对于 Unix Jenkins 代理上的一条命令,把代理赋值放在该命令上:
node('linux') {
sh 'http_proxy=http://build-proxy.example:8080 https_proxy=http://build-proxy.example:8080 ./build.sh'
}该示例假定仓库中有构建脚本,并且代理上的工具会读取这些环境变量名。赋值会替换该命令及其子进程继承的值。它不会重写机器的持久环境。对于通过允许的路由获取公共制品且不需要代理认证的构建步骤,HTTP 代理列表可以为这些取值提供候选 HTTP 端点。
如果多个 Pipeline 步骤需要共享这次覆盖,请用 withEnv 块包住这些步骤。Jenkins 的文档说明其变量处理不区分大小写,但会保留原有大小写;当某个 Unix 工具要求特定的小写名称时,请检查最终拼写。
普通 export 在一个 sh 步骤里属于该 shell。之后独立的 shell 步骤是新进程,不会继承相邻步骤所做的更改。
请在命令运行的位置应用该设置。Jenkins 控制器的下载与在远程代理上启动的工具是不同的网络使用者。控制器上更新检查成功,并不能证明代理上该命令的路由。