使用GitLab Runner部署Rancher时无法克隆仓库问题求助
问题根因梳理
- openssl诊断命令存在拼写错误:你实际要访问的GitLab域名是
git.myservice.demo.com,但执行的openssl命令里写的是git.myserives.demo.com(多了字母r),拼写错误直接导致连接超时报错,需要先修正拼写再重新做网络诊断。 - 流水线核心报错是自签SSL证书不被信任:你的GitLab实例用的是私有CA签发的SSL证书,CI Job运行的terraform官方容器内没有内置该私有CA根证书,所以Git克隆阶段证书验证失败。
- 凭证配置代码时机错误:GitLab CI默认会在执行你定义的
.gitlab-ci.yml脚本之前,先执行克隆代码的前置步骤,你写的Git凭证配置属于脚本执行阶段,根本没机会生效,也不需要这两行配置,CI_JOB_TOKEN默认会被GitLab Runner自动注入用于克隆代码。
修复步骤
1. 解决SSL证书信任问题
有两个可选方案,按需选择即可:
方案A:临时跳过SSL证书验证(仅调试用,不推荐生产环境)
在.gitlab-ci.yml文件顶部添加全局变量,该变量会在CI克隆代码的前置阶段直接生效:
variables: GIT_SSL_NO_VERIFY: "true"
方案B:配置Docker执行器信任私有CA证书(生产环境推荐)
在运行GitLab Runner的Linux宿主机上操作:
- 首先创建证书存储目录(如果不存在):
mkdir -p /etc/gitlab-runner/certs - 将GitLab实例的SSL根证书保存到路径
/etc/gitlab-runner/certs/git.myservice.demo.com.crt - 重启GitLab Runner服务生效:
gitlab-runner restart
配置完成后,Runner启动任务容器时会自动将证书注入到容器内,所有Job都会信任该私有CA证书,无需单独修改每个CI配置。
2. 验证网络连通性
执行修正后的openssl命令确认网络可达:
openssl s_client -connect git.myservice.demo.com:443
如果还是报连接超时,需要检查Runner宿主机的防火墙规则、代理配置,确认443端口的出站访问权限正常,你CI中配置了HTTP_PROXY变量,也需要确认代理服务可以正常访问GitLab域名。
3. 清理无效配置
删除你之前添加的两行Git凭证相关配置,GitLab Runner会自动处理CI_JOB_TOKEN的克隆权限,手动配置凭证存储反而可能带来权限泄露风险。
内容的提问来源于stack exchange,提问作者Satyam Pandey
相关产品推荐
相关产品推荐

