Windows环境下自托管GitLab Runner克隆仓库超时及x509证书未知权威问题排查
问题分析与解决办法
先帮你拆解这个问题,分两个核心点逐一解答:
为什么Runner会自动执行仓库克隆?
这是GitLab Runner的默认内置行为,完全不需要你在.gitlab-ci.yml里手动配置克隆指令。Runner在启动每个job之前,都会自动完成仓库克隆(包括拉取最新代码),目的是确保job始终在干净、同步的代码环境中运行。如果确实需要跳过这个步骤,可以在job里添加变量配置:
variables: GIT_STRATEGY: none
不过除非有特殊的缓存或代码复用需求,一般不建议这么做。
流水线卡顿超时的原因与解决办法
从你提取的日志x509: certificate signed by unknown authority可以直接定位问题:GitLab Runner无法验证GitLab.com的SSL证书,导致Runner和GitLab服务器之间的HTTPS请求失败,无法正常获取job任务,最终流水线因等待超时卡住。
下面是几种可行的解决办法,按安全性优先级排序:
方法1:导入GitLab.com根证书到Windows证书存储(生产环境推荐)
这是最安全的解决方案,步骤如下:
- 打开浏览器访问
https://gitlab.com,点击地址栏的锁形图标,查看证书详情,导出根证书(比如DigiCert Global Root CA,格式选择Base64编码的X.509(.CER))。 - 按下
Win + R,输入certlm.msc打开本地计算机证书管理器。 - 展开「受信任的根证书颁发机构」→「证书」,右键选择「所有任务」→「导入」,按照向导完成刚才导出的根证书导入。
- 重启GitLab Runner服务:
gitlab-runner restart
方法2:临时关闭证书验证(仅测试环境适用)
如果只是测试场景,可以快速跳过证书验证,但存在安全风险,生产环境禁止使用:
- 编辑GitLab Runner的配置文件
config.toml(默认路径一般是C:\GitLab-Runner\config.toml),在[[runners]]区块添加一行:tls_verify = false - 保存后重启Runner服务:
gitlab-runner restart
方法3:检查Runner运行权限
如果之前修改过GitLab Runner服务的运行用户,可能导致它无法访问Windows系统的证书存储。可以尝试将运行用户切换回默认的Local System,或者给当前运行用户授予证书读取权限,再重启服务测试。
完成以上操作后,重新触发流水线,应该就能正常执行了。
内容的提问来源于stack exchange,提问作者user32882
相关产品推荐
相关产品推荐

