基于CentOS 7搭建GitLab+Docker安装GitLab-Runner笔记

一、背景

  趁着最近手头搬砖任务不重,有点时间学习点新东西,想自己手动搭建GitLab,并简单实践下它强大CICD的功能。关于GitLab和GitLab-Runner的关系,可以自行百度学习,这里主要重点记录下自己遇到的问题。

  1. 正常情况下,出于安全考虑,部署GitLab的服务器和GitLab-Runner是不在同一个服务器上的(具体原因参考这里),但学习目的和条件限制,就不用顾忌这么多了;
  2. 出于学习Docker的目的,尝试了下用Docker安装GitLab-Runner,实际也可以不用Docker,具体也可以参照下方安装步骤相关文档;
  3. 本文的GitLab-Runner注册是针对具体项目的(project-specific runner),实际的GitLab-Runner可以注册成全局共享的(shared runner)或组的(group runner),只是配置的token不一致,其他都是一样的

二、安装步骤

  首先自己要有个已安装CentOS的服务器,一般用虚拟机就好了。我本地用的是VMWare WorkStation 15,使用Xshell 6连接服务器。

  1. 安装GitLab,参照官方文档
  2. 安装Docker,参照官方文档
  3. 基于Docker安装GitLab-Runner,参照官方文档
  4. 注册GitLab-Runner,具体参照官方文档
  5. 配置.gitlab-ci.yml文件,提交代码,触发CI/CD流程

三、总结

  安装过程基本都没什么问题,主要学习点和问题如下:

  1. GitLab安装后,可以通过修改/etc/gitlab/gitlab.rb配置文件修改GitLab的外部访问地址external_url(设置成域名或IP),修改完成后需gitlab-ctl reconfigure && gitlab-ctl restart,如下图:

  

  tips: vim命令编辑时,要查找具体的文件内容,可以输入/或? 进入查找模式,输入要查找的字符串,回车即可

  2. Docker注册GitLab-Runner,按照提示依次输入Runner要绑定的GitLab地址、token等信息,如下图:  

  

  具体要输入的配置查看GitLab下对应项目的Settings -> CI/CD -> Runners(如果设置shared runner或group runner则路径不同,具体查看文档):

  

  3. 如果此前GitLab配置的外部访问地址是域名,则上面Docker注册GitLab-Runner的时候会导致失败,原因是Docker container无法访问GitLab服务(域名是配置的,并通过本地Host映射到本地IP的)。目前个人的解决思路有两种:

  (1)参照本地修改Host方式映射GitLab访问域名指向本地IP方式,找到修改Docker container修改Host的方式,然后再去注册GitLab-Runner。其中一种方式如下,Docker注册命令添加--add-host=domain:ip参数

 

docker run --rm --add-host=domain:ip -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

  

  (2)参照上面第1点,直接修改GitLab的配置,外部访问地址改为IP访问,这样Docker container注册GitLab-Runner的时候,就能通过IP访问方式绑定具体的GitLab配置信息。

  由于第一种方式个人实践后,即使注册成功后,runner并没有真正激活,而是一个灰色的感叹号三角,并提示has not connected yet。警告,导致触发的CI/CD都是pending的状态,所以最终采用的还是第二种方式解决的问题,最终通过IP访问的方式成功触发了GitLab的CI/CD流程。

  

四、后续

  后续有时间在研究研究.gitlab-ci.yml的具体配置,目前对整个GitLab CI/CD的流程相对之前清晰了一些,自己动手还是可以加深认识的,不去实践也没有动力学习新东西了。加油吧!!

 

posted @ 2020-11-24 11:33  sinのstone  阅读(352)  评论(0)    收藏  举报