为啥克隆的时候和视频的的不一样啊

为啥克隆的时候和视频的的不一样啊

http://img1.sycdn.imooc.com//climg/5da16ef6095de73c10650229.jpg

这个地方开始就导致jenkins和Gitlab不通了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
辻目 2020-05-30 22:23:08

写了份小结,希望能帮助到部分人,见链接:搭建 Jenkins 与 GitLab 的持续集成环境

  • Brian #1
    真心不错,可以把markdown的版本分享给小助手,我们会评选一些优秀的小结进行公示
    2020-05-30 22:51:07
辻目 2020-05-30 22:21:24

写了份小结,希望能帮助到部分人[搭建 Jenkins 与 GitLab 的持续集成环境](https://www.yuque.com/bianguilong/mn9mkv/acrqqa)

慕仔5105086 2020-05-23 00:44:11

这里有几个坎,以下两种错误都会导致本地能ssh git,jenkins和gitlab之间不行:


1. 找不到服务器,这个主要是对docker和docker-compose的网络安排不熟悉,可以参看https://docs.docker.com/engine/reference/commandline/network/ 和 https://docs.docker.com/compose/networking/,这个坎也分两种情况:

    1)如果是用docker run命令起来打两个container,他们会在同一个docker默认的bridge网络下,但两个container不能够通过设定的hostname相互访问到,只能够通过设定的container name,或者containerID或者ip地址访问到,可以在源码管理git的页面把仓库URL的git地址里的域名换成容器名或者用docker inspect 容器名查看容器ip,改成ip,这样其实不方便,不如直接把gitlab容器名和Host name都起成域名的这种形式,这里就不用改任何东西了。

    2)如果gitlab和jenkins是两个docker-compose构建的,他们就会在两个不同的网络,gitlab_default和jenkins_default内(_default前面的部分是docker-compose文件所在的文件夹名字,会因为文件夹的不同而改变),所以域名无法相互解析,无法相互通讯,解决办法是:一种,在容器都在运行的状态下,用docker network connect命令(具体参看前面的docker DOC链接)把其中一个容器连入另一个容器的网络,然后把gitURL域名改成容器名或者能识别的ip地址;第二种比较简单的办法是:把两个docker-compose合并成一个,把两个service的名字和Hostname都改成域名的形式,删除之前的两个容器,重新docker-compose,这样仓库URL这里就不用改任何东西了

2. 习惯了宿主机上进jenkins服务用11005端口,进gitlab用13800端口,所以这里写gitURL的时候也把ssh映射的端口13822也加进去了,就会出现第二个坎,端口拒绝访问,这是一个概念性的错误,docker设定的端口映射是映射到宿主机的端口的,如果是两台container之间通讯的话,还要写原始端口,所以这里不用写13822,也不用写22.默认Jenkins会去22端口访问。

顺便也说明一下,后面webhook的时候,gitlab填Jenkins任务的地址的时候,也一样要考虑是否在一个网络,域名是否能被解析,端口号用原来的8080,而不是映射端口号11005这几个问题

建议老师在教程里加一段docker networking的讲解,应该会解决大家的大部分问题

  • Brian #1
    这是我觉得理解最清晰的一个同学了~~~你会就是群里那个 运维小能手吧!?
    2020-05-23 12:32:27
  • 慕仔5105086 回复 Brian #2
    谢谢Brian老师!我不是运维小能手,就是比较喜欢尝试^_^
    2020-05-23 23:52:09
  • Brian #3
    我跟你一样,我平时如果一个事情没有搞明白,会找时间就试一下,然后找资料,找办法,尝试多种方案
    2020-05-25 21:52:10
慕运维7587644 2019-11-17 21:39:19

老师这个问题我也碰到了,我现在gitlab密钥也配置了,本地能通过gitlab的ssh方式拉代码,但还是有ssh://的问题?jenkins也发生报错了

  • Brian #1
    是不是ssh的端口没有开放防火墙?还有阿里云需要放行端口规则? gitlab如果需要使用ssh端口进行clone的前题: 1. 配置了ssh端口服务,即docker把22端口进行了映射 2. ssh端口服务防火墙放行 3. 使用Git clone测试可以进行下载,即ssh服务正常 4. 配置jenkins ssh密钥
    2019-11-18 08:42:02
  • 谢谢老师啊,总算搞定了,关键还是不能配错啊,感觉gitlab hook plugin, gitlab plugin要安装的,还有gitlab与本地的ssh克隆以及对应公私钥连接在课前一定要先调试好才行
    2019-11-18 22:02:58
  • 使用清华源,可以快速的安装,jenkins非常智能,你只用选择gitlab插件,它会自动的把相关的依赖插件安装。
    2019-11-19 13:10:22
提问者 AngeloBurt 2019-10-12 14:26:25

配置公钥和私钥也是按照视频上的步骤配置的,那么问题还会出在哪呢

另外:

1.服务器的防火墙也关了,

2.安全组也放行了22,13822,13800,11005端口

http://img1.sycdn.imooc.com//climg/5da171090902916514840395.jpg

  • Brian #1
    你本地有没有测试上面的路径? 能不能通过ssh这个路径,clone到本地?
    2019-10-13 00:08:07
  • Brian #2
    通过错误的提示,应该是gitlab的密钥没有配置正确!可以明天白天在群里联系我,我远程给你看一下,你配置一下teamviewer
    2019-10-13 00:08:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师