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

企业代理环境下Jenkins中执行Curl命令失败求助

解决Jenkins容器内Curl命令Exit Code 7的问题

你遇到的exit code 7是curl的典型错误,代表无法建立到目标服务器的连接。结合你在无代理环境正常、企业代理环境失败的情况,问题根源是Jenkins容器内的curl进程没有使用企业代理配置。下面是几个针对性的解决方案:

方案一:启动Jenkins容器时配置全局代理环境变量

直接在docker run命令中添加代理相关的环境变量,让容器内所有进程(包括curl、docker命令)默认走代理:

修改你的启动命令,添加代理配置(替换成你的企业代理地址和端口):

docker run -d -u root --privileged \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
-e JENKINS_OPTS="--prefix=/jenkins" \
# 添加代理配置
-e http_proxy="http://your-proxy-host:proxy-port" \
-e https_proxy="http://your-proxy-host:proxy-port" \
# 排除内部服务不走代理(比如你的镜像仓库)
-e no_proxy="registry.***.com.ar,localhost,127.0.0.1" \
--group-add 997 \
-p 8080:8080 -p 50000:50000 \
--name jenkins jenkinsci/blueocean

注意:如果你的企业代理需要用户名密码认证,可以写成http://username:password@your-proxy-host:proxy-port

方案二:在Jenkinsfile的Curl命令中直接指定代理

如果不想全局配置代理,仅让curl走代理,可以在curl命令中添加--proxy参数:

修改Push Notification阶段的脚本:

stage('Push Notification') {
    steps {
        script{
            withCredentials([string(credentialsId: 'telegramToken', variable: 'TOKEN'), string(credentialsId: 'telegramChatId', variable: 'CHAT_ID')]) {
                sh '''
                    curl -s -X POST \
                    # 添加代理参数
                    --proxy http://your-proxy-host:proxy-port \
                    https://api.telegram.org/bot${TOKEN}/sendMessage \
                    -d chat_id=${CHAT_ID} \
                    -d parse_mode="HTML" \
                    -d text=" <b>Jenkins CI:</b> <b>Iniciando build $BUILD_DISPLAY_NAME</b> $JOB_NAME"
                '''
            }
        }
    }
}

若代理需要认证,追加--proxy-user username:password即可

方案三:在Jenkins系统中配置全局代理

通过Jenkins Web界面配置代理,让Jenkins本身(拉取Git代码、访问外部服务)和容器内进程都走代理:

  1. 登录Jenkins,进入Manage Jenkins → Configure System
  2. 找到HTTP Proxy Configuration区域:
    • 勾选「Use proxy server」
    • 填写代理服务器地址和端口
    • 在「No Proxy Hosts」中添加你的内部镜像仓库地址(registry.***.com.ar)、localhost等不需要走代理的地址
    • 若代理需要认证,填写用户名和密码
  3. 保存配置后,重启Jenkins容器生效

额外排查建议

  • 确认企业代理允许访问api.telegram.org:部分企业代理会屏蔽外部聊天工具API,需要联系IT部门确认是否放行该域名
  • 测试容器内的连通性:进入Jenkins容器docker exec -it jenkins bash,直接执行带代理参数的curl命令,验证是否能正常连接Telegram API,快速定位问题
  • 检查变量解析:可以在sh脚本中先echo $TOKEN $CHAT_ID,确认凭证变量是否正确注入

内容的提问来源于stack exchange,提问作者juan ocho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:03:09