1. cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

报错信息:ERROR: Registering runner... failed runner=xxxxxxx status=couldn't execute POST against https://x.x.x.x/api/v4/runners: Post https://x.x.x.x/api/v4/runners: x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

原因:gitlab使用自签名证书时,注册时需要使用对应的ca根证书验证。

解决方案:注册时,使用"--tls-ca-file"参数,指定自签名的ca根证书。

2. certificate signed by unknown authority

报错信息:Post https://x.x.x.x/api/v4/runners: x509: certificate signed by unknown authority

原因:注册runner时,如果设置了"--tag-list",则"--run-untagged"默认为"false",同时间.gitlab-ci.yml中的job未指定tag触发此报错。

解决方案:注册时,"--run-untagged"参数设置为"true";或者在已注册的runner中修改勾选" Indicates whether this runner can pick jobs without tags";或者.gitlab-ci.yml中的job指定tag。

3. Peer's Certificate issuer is not recognized.

报错信息:fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.x.com/root/cmop.git/': Peer's Certificate issuer is not recognized.

原因:gitlab-runner拉取代码时,使用https协议访问gitlab,需要验证。

解决方案

# 参考:https://www.jianshu.com/p/fa71d97dcde0
# 因runner运行时的执行者是gitlab-runner账户,需要在gitlab-runner账号下设置访问https类网站时,免验证
[root@gitlab-runner ~]# su - gitlab-runner
[gitlab-runner@gitlab-runner ~]$ git config --global http."sslVerify" false# 查看
[gitlab-runner@gitlab-runner ~]$ cat /home/gitlab-runner/.gitconfig
[http]sslVerify = false

4. dial unix /var/run/docker.sock: connect: permission denied

报错信息:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.27/info: dial unix /var/run/docker.sock: connect: permission denied

原因:gitlab-runner账号权限不足,不能访问/var/run/docker.sock。

解决方案

# 将gitlab-runner用户加入docker组
[root@gitlab-runner ~]# usermod -aG docker gitlab-runner# 查看
[root@gitlab-runner ~]# groups gitlab-runner 

5. Couldn't resolve host 'xxxxxx'

报错信息:fatal: unable to access 'https://gitlab-ci-token:[MASKED]@registry.allen.com:10443/AllenLeung/springboottest.git/': Could not resolve host: registry.allen.com

原因:executor = "docker"时,执行环境是1个容器,由于验证用的gitlab域名不能被dns解析,导致无法连接。

解决方案

  • 在注册时使用"--docker-volumes /etc/hosts:/etc/hosts",将运行gitlab-runner服务主机的hosts文件映射到执行容器内;(实际上使用这个成功!)。完整例子:
gitlab-runner register \--non-interactive \--executor="docker" \--docker-image=maven:latest \--url="https://registry.allen.com:10443/" \--registration-token="irZcvm_BzJzQzJPrH1Tw" \--description="allen-devolop-runner" \--tag-list="allen-devolop-tag" \--run-untagged="true" \--locked="false" \--tls-ca-file="/etc/gitlab-runner/certs/registry.allen.com.crt" \--docker-volumes="/etc/hosts:/etc/hosts"
  • 注册时还可使用参数"--clone-url https://x.x.x.x",ip地址覆盖域名,执行容器使用ip地址直接访问gitlab。参考:https://docs.gitlab.com/runner/configuration/advanced-configuration.html#how-clone_url-works

PS:使用ip覆盖域名时,可能会带来其他问题,如果使用的是自签名的证书,需要明确ip地址是否也被自签名的ca机构认证。

6. SSL certificate problem: unable to get local issuer certificate

报错信息:fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@100.64.135.200/root/cmop.git/': SSL certificate problem: unable to get local issuer certificate

原因:注册时,为使执行容器可访问不能被dns解析的gitlab域名,使用了参数"--clone-url https://x.x.x.x"覆盖了原域名,但ca机构(自签名的ca证书)只对域名做了认证,导致使用ip访问时不能认证。

解决方案:注册时,将运行gitlab-runner服务主机的hosts映射到执行容器内,使其可通过被ca机构认证的域名访问gitlab,而非ip地址。参考:https://gitlab.com/gitlab-org/gitlab-runner/issues/3477

Gitlab CI/CD 问题处理相关推荐

  1. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

  2. GitLab CI/CD

    GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Continuous Integration (CI)  持续集成 Continuous Delivery ...

  3. GitLab CI/CD 因git凭据踩坑

    GitLab CI/CD 因git凭据踩坑 [TOC] 1. 问题 我在windows上,使用git push到gitlab中的私有项目上(项目是有ci/cd设置的),runner执行时出现403权限 ...

  4. 基于docker-compose的Gitlab CI/CD实践排坑指南

    长话短说 经过长时间实操验证,终于完成基于Gitlab的CI/CD实践,本次实践的坑位很多, 实操过程尽量接近最佳实践(不做hack, 不做骚操作),记录下来加深理解. 看过博客园<docker ...

  5. 带你深入了解 GitLab CI/CD 原理及流程

    作者:狂乱的贵公子 cnblogs.com/cjsblog/p/12256843.html GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Continuo ...

  6. gitlab项目中启用或禁用 GitLab CI/CD Pipeline

    默认情况下,GitLab CI/CD 在新安装上会默认启用,要关闭的话,有两种方式: 需要在每个项目下单独关闭. 通过修改源安装和 Omnibus 安装中的设置.(未验证) 1.每个项目单独关闭 要在 ...

  7. gitlab CI/CD 知识点查阅

    1.GitLab CI/CD 基础教程(一) 2.gitlab runner 遇到的几个坑 3.Gitlab-runner 安装和配置 4.使用gitlab runner 进行CI(二):gitlab ...

  8. winform 项目 发布后比本地运行慢_前端团队基于 GitLab CI/CD 的自动化构建、发布实践,快来学习吧...

    在公司搭建内部 GitLab 平台后,前端活动项目从 SVN 迁移到 GitLab.本文介绍如何基于 GitLab CI/CD 实现自动化构建及发布. 在从 SVN 迁移到 GitLab 和接入 Gi ...

  9. git原理详解与实操指南_基于dockercompose的Gitlab CI/CD实践amp;排坑指南

    长话短说 经过长时间实操验证,终于完成基于Gitlab的CI/CD实践,本次实践的坑位很多, 实操过程尽量接近最佳实践(不做hack, 不做骚操作),记录下来加深理解. 看过博客园<docker ...

  10. 【GitLab】GitLab CI/CD 模型部署自动化超详细介绍

    文章目录 一.GitLab 二.GitLab-CI/CD 2.1 gitlab-ci.yml 2.1.1 基础概念 2.1.2 创建 yml 文件 2.1.3 yml 文件中的关键字 2.2 GitL ...

最新文章

  1. Selenium的延迟等待
  2. UA MATH571B 试验设计 QE练习题 平衡非完全区组设计BIBD
  3. 可能是全网写特征工程最通透的...
  4. [IE9] 开发IE9上的屏幕取词功能
  5. 日志OLAP:在SQL中使用UDF, lambda函数使用案例
  6. wordpress 调整段落空两,段落间的距离
  7. c语言字符串英文,C语言字符串函数大全(国外英文资料).doc
  8. 机器学习应用量化投资没啥用?那是你方法不对!
  9. mysql handlersocket_HandlerSocket介绍
  10. 443端口拦截原理浅析
  11. d3d透视逆向篇:第8课 通过虚表函数的获取D3D9函数指针
  12. R语言epiDisplay包cox.display函数获取cox回归模型汇总统计信息(风险率HR、调整风险率及其置信区间、模型系数t检验的p值、Wald检验的p值和似然比检验的p值)、保存结果到csv
  13. 性价比高的蓝牙耳机排行榜,推荐200内最好用蓝牙耳机品牌
  14. LDA的python实现之模型参数训练
  15. 看完《硅谷之谜》,马上登机
  16. uiview 渐变_UIView的背景渐变
  17. Invalid default value for ‘updated_at‘
  18. 金蝶K3采购暂估案例教程3差额调整
  19. “百度杯”CTF比赛 九月场Upload 之菜刀的使用
  20. 五年级计算机课总结,2015秋信息技术五年级上册工作总结

热门文章

  1. Matlab编写乐曲
  2. 拜占庭鲁棒随机聚合的分布式学习方法
  3. kafka文档(2)----kafka API(java版本)
  4. H.264/H.265/H.266音视频编码基础
  5. 【原创】彼得德鲁克《管理的实践》札记(五)
  6. FriendFeed openAPI
  7. Unity 横屏、竖屏多分辨率自适应
  8. C语言c89(c90)的所有的32个关键字分类
  9. 2021.5.10 《致橡树》
  10. JavaScript核心之Document对象详解(document属性,方法)