五.遇到的问题

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 'gitlab.x.com'

报错信息:fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.cmop.chinamcloud.com/root/cmop.git/': Couldn't resolve host 'gitlab.x.com'

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

解决方案

  1. 在注册时使用"--docker-volumes /etc/hosts:/etc/hosts",将运行gitlab-runner服务主机的hosts文件映射到执行容器内;
  2. 注册时还可使用参数"--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

转载于:https://www.cnblogs.com/netonline/p/9800159.html

Gitlab CI-3.遇到的问题相关推荐

  1. GitLab CI流水线配置文件.gitlab-ci.yml详解(三)

    GitLab CI流水线配置文件.gitlab-ci.yml详解 - contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <con ...

  2. Gitlab CI更多内容学习(二)

    文章目录 1 CI含义 2.1 多平台统一发布 2.2 平台解耦单一发布 3. CI job按需触发 4. Gitlab CI/CD管道配置 5. Job和Runner 6. Gitlab CI预定义 ...

  3. Gitlab CI(一)

    Gitlab CI流程设计与思考 repo添加ci完整流程 新增Repo CI注册需要开发者提供的信息和我们这边需要反馈的信息. CI注册需要提供的信息: 1. Repo url 2. 需要注册哪些C ...

  4. 指定的网络文件夹目前是以其他用户名和密码进行映射的_使用 GitLab CI 与 Argo CD 进行 GitOps 实践

    在现在的云原生世界里面 GitOps 不断的被提及,这种持续交付的模式越来越受到了大家的青睐,我们前面也有文章详细讲解了 GitOps 的相关概念,在网上也可以找到很多关于它的资源,但是关于 GitO ...

  5. Gitlab CI 持续集成的完整实践

    来源:https://dwz.cn/mWyVHoSm 借着公司代码库迁移到私有Gitlab的契机,我接下持续集成的工作,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持续集成.总体 ...

  6. gitlab介绍、安装及gitlab CI、与jenkins的对比

    gitlab介绍.安装及gitlab CI.与jenkins的对比

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

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

  8. iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布

    一.Gitlab CI/CD 简介 ① GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或 ...

  9. GitLab CI/CD

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

  10. 使用GitLab CI和Docker进行容器应用自动化部署

    容器 Docker 越来越受开发者和运维人员的喜爱,更是作为实践 DevOps 的一个中要工具.同时 Gitlab 提供了免费的代码管理服务,其 gitlab-ci 更是提供了强大的自动化 CI/CD ...

最新文章

  1. 【POJ】3268 Silver Cow Party (将有向图的边反转)
  2. android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...
  3. MathType如何保存常用公式
  4. 域用户绑定计算机批量设置,Windows 2008 AD域账户与计算机名批量绑定
  5. 【Linux】一步一步学Linux——telinit命令(144)
  6. (Matrix3D)坑爹的flash帮助文档
  7. 乱谈数学--我理解的函数极限运算
  8. css rem 大屏开发_px/em/rem的区别与应用
  9. 领域驱动设计,让程序员心中有码(四)
  10. pythonsql注入_python使用mysql,sql注入问题
  11. Python是什么?有那些用途?
  12. 计算机桌面删除,如何删除计算机桌面上的冗余“ IE”浏览器_IT / computer_资料
  13. B站一键BV号转AV号PHP单页源码
  14. pyspark读取csv_手把手教你实现PySpark机器学习项目——回归算法
  15. 微软:攻击者利用SolarWinds Serv-U 0day发动 Log4j 攻击
  16. matlab中input输入多个数_python怎么一次输入两个数
  17. 2016310Exp4 恶意代码及分析
  18. ES6之你应该知道的知识(一)
  19. python众数_169. 求众数(Python)
  20. 听云java探针_性能监控工具的配置及使用 - 听云-Server

热门文章

  1. 零美术基础逆袭成为动画师!你需要怎么做?
  2. HALCON学习之旅(一)
  3. TensorFlow中的多线程
  4. windows 安装tensorflow
  5. 机器学习(十五)隐马尔科夫模型-未完待续
  6. Python-cvxopt库的使用(2)(解决QP问题)
  7. 村庄规划用途管制的相关内容
  8. ajax顺序请求你,ajax请求之返回数据的顺序问题分析
  9. 精通unix下c语言与项目实践,《精通Unix下C语言编程与项目实践》读书笔记(2)...
  10. 查看本地oracle密码是多少钱,Oracle 本地验证和密码文件