GitLab自托管CI上传Jacoco制品报308永久重定向错误求助
检查GitLab外部URL与Runner配置一致性
登录GitLab管理后台,确认Settings > General > Visibility and access controls下的External URL为完整可访问的URL(含http/https,无末尾斜杠)。同时检查GitLab Runner的config.toml文件中url字段是否与该外部URL完全匹配,URL不匹配会触发重定向。验证反向代理的重定向规则
若GitLab前端有Nginx、Apache等反向代理,检查代理配置中HTTP转HTTPS的规则是否正确处理CI制品上传的API路径(如/api/v4/jobs/:id/artifacts)。避免代理将POST请求错误重定向为GET,这会导致上传请求失效。确保GitLab与Runner版本兼容
GitLab实例与Runner的版本必须完全匹配(如均为16.x系列),版本不兼容会引发API交互异常,进而导致重定向错误。调整CI配置中的制品上传规则
确认.gitlab-ci.yml里artifacts:paths使用正确的相对路径,避免绝对路径。可尝试添加reports字段明确指定覆盖率报告类型,示例配置:coverage: stage: test script: - ./gradlew testDebugUnitTestCoverage artifacts: paths: - ./app/build/reports/jacoco/testDebugUnitTestCoverage/testDebugUnitTestCoverage.xml reports: junit: ./app/build/reports/jacoco/testDebugUnitTestCoverage/testDebugUnitTestCoverage.xml检查制品存储配置
进入GitLab管理后台Settings > CI/CD > Artifacts,确认本地存储路径或对象存储的配置正确,存储服务需可正常访问。若用对象存储,核对访问密钥、桶名、端点URL是否无误。临时禁用HTTP强制重定向排查
若怀疑是HTTPS重定向导致问题,可在GitLab配置文件gitlab.rb中设置nginx['redirect_http_to_https'] = false,执行gitlab-ctl reconfigure后重新测试上传,验证是否因重定向规则引发错误。
内容的提问来源于stack exchange,提问作者Rod Elias

