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

在GitLab CI/CD运行Pact Gradle项目遇代理问题求助(无法操作Runner)

解决GitLab CI/CD中Gradlew代理拦截问题

针对你遇到的Gradlew因公司代理拦截报错、设置NO_PROXY=127.0.0.1无效且无法修改Runner的情况,可尝试以下几种方案:

1. 在GitLab CI/CD变量中配置代理规则

在项目的GitLab设置里添加全局代理变量,无需修改代码或脚本:

  • 进入项目的Settings > CI/CD > Variables
  • 添加以下变量(根据公司代理信息替换占位符):
    • HTTP_PROXY: http://你的代理地址:端口
    • HTTPS_PROXY: http://你的代理地址:端口
    • NO_PROXY: 127.0.0.1,localhost,*.你的内部域名.com,pact-broker(按需添加所有无需走代理的地址,用逗号分隔)
    • GRADLE_OPTS: -Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=端口 -Dhttp.nonProxyHosts=127.0.0.1|localhost|*.你的内部域名.com

2. 在项目build.gradle中硬编码代理配置

直接修改项目的build.gradle,让Gradle加载代理规则:

allprojects {
    repositories {
        // 针对Maven仓库配置代理
        mavenCentral {
            proxy {
                httpProxyHost = "你的代理地址"
                httpProxyPort = 端口号
                httpsProxyHost = "你的代理地址"
                httpsProxyPort = 端口号
                nonProxyHosts = "127.0.0.1|localhost|*.你的内部域名.com"
            }
        }
    }

    // 全局JVM代理参数
    tasks.withType(JavaExec) {
        jvmArgs = [
            "-Dhttp.proxyHost=你的代理地址",
            "-Dhttp.proxyPort=端口号",
            "-Dhttps.proxyHost=你的代理地址",
            "-Dhttps.proxyPort=端口号",
            "-Dhttp.nonProxyHosts=127.0.0.1|localhost|*.你的内部域名.com"
        ]
    }
}

3. 在.gitlab-ci.yml中直接注入环境变量

在CI脚本阶段直接设置代理相关的环境变量,优先级更高:

stages:
  - build

build_job:
  stage: build
  script:
    - ./gradlew clean build
  variables:
    HTTP_PROXY: "http://你的代理地址:端口"
    HTTPS_PROXY: "http://你的代理地址:端口"
    NO_PROXY: "127.0.0.1,localhost,*.你的内部域名.com"
    GRADLE_OPTS: "-Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=端口 -Dhttp.nonProxyHosts=127.0.0.1|localhost|*.你的内部域名.com"

4. 替换Gradle Wrapper的发行版地址

如果报错是因为Gradlew无法下载Gradle发行版,可修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl为公司内部镜像的地址:

distributionUrl=http://你的内部Gradle镜像/gradle-7.5-bin.zip

为什么修改Gradlew.bat无效?

  • GitLab CI/CD的Runner大概率是Linux环境,执行的是gradlew shell脚本而非Windows的gradlew.bat,修改bat文件对Linux Runner无意义;
  • 仅设置127.0.0.1的NO_PROXY范围可能不足,项目可能需要访问其他内部服务或域名,这些地址也需要加入NO_PROXY列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:25:37