You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins部署的Golang应用无法访问Temporal IO Server问题咨询

问题排查及解决步骤
  • 优先排查Jenkins环境变量覆盖问题
    Makefile中定义的变量优先级低于外部传入的环境变量,Jenkins全局配置、任务构建环境配置中如果注入了代理相关变量,会覆盖你Makefile中写的配置,特别是no_proxy如果缺失.domain.com规则,会导致访问server2.domain.com:11111时走了公网代理,而公网代理无法转发内网Temporal端口的请求,直接导致连接失败。
    你可以在Jenkins任务配置页的「构建环境」板块、Jenkins全局系统配置页查看是否有强制注入的代理变量。

  • 验证运行时代理配置实际值
    在Makefile的run目标中添加环境变量打印命令,执行Jenkins构建后查看输出的代理配置是否符合预期:

run:
  env | grep -E "(proxy|PROXY)" | sort
  ./App $(TEMPORAL_SERVER)

如果输出的no_proxy/NO_PROXY值和Makefile中定义的不一致,即可确认是环境变量覆盖问题。

  • 修复Go应用的代理变量识别问题
    Go标准库、Temporal底层依赖的gRPC库会同时兼容大小写两种格式的代理环境变量,你当前Makefile中只定义了小写的http_proxy/no_proxy,如果Jenkins执行环境中没有自动同步大写变量,会导致应用没有读取到NO_PROXY规则,仍然走代理请求Temporal服务。
    修改Makefile同时声明大小写变量并导出到子进程:
http_proxy=http://myproxy.domain.com:80
HTTP_PROXY=http://myproxy.domain.com:80
https_proxy=http://myproxy.domain.com:80
HTTPS_PROXY=http://myproxy.domain.com:80
no_proxy=".domain.com,127.0.0.0/8,localhost"
NO_PROXY=".domain.com,127.0.0.0/8,localhost"
# 导出变量确保传递给Go应用子进程
export http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY

TEMPORAL_SERVER=server2.domain.com:11111

run:
  ./App $(TEMPORAL_SERVER)
  • 排查Jenkins运行用户的网络限制
    如果上述配置都正常,需验证Jenkins运行用户的网络权限:Jenkins服务通常使用独立的jenkins系统用户运行,部分环境会对该用户配置iptables规则、网络ACL限制,禁止访问非标准端口。你可以在run目标中添加端口连通性测试命令验证:
run:
  nc -zv server2.domain.com 11111 || echo "Jenkins运行用户无法访问Temporal服务端口"
  ./App $(TEMPORAL_SERVER)

如果测试连通失败,联系运维人员放开Jenkins运行用户对server2.domain.com:11111的访问权限即可。

内容的提问来源于stack exchange,提问作者Eduardo A EDUARDO Fernandez Di

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:24:03