Docker 私有化部署 gitlab gitlab-runner
引言
需求的现状
现在讨论很多的一个词是CI/CD: CI是持续集成,通过持续集成,开发人员能够频繁地将其代码集成到公共代码仓库的主分支中,开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交;CD是持续部署,持续部署扩展了持续交付.
开发的现状
目前越来越多的服务器部署都是用docker镜像去部署,无论是用docker-compose去部署还是用kubernetes部署,都给我们开发者带来了极大的便利,喜忧参半也带来了一些不便,在我自己开发和部署的日常开发中(很多公司的开发和运维都是一个人),发现了一些需要解决的问题.之前github就退出了github action的方式 支持用户自定义ci文件,但是去调查了一下github的私有化部署,遇到了一些问题,所以就去调查和实践了gitlab + gitlab-runner 的私有化部署方案.
问题
基于CI/CD的现状,开发者在提交代码后还需要去构建镜像,上传镜像到镜像仓库,频繁的修改就需要频繁的构建,两个尖锐的小问题
用户每次写完代码要本地构建,需要本地有docker运行的环境,docker本身是不支持windos的(非专业版本,专业版本有专门的安装包),环境问题在日常开发中经常出现.
本地构建、推送到仓库后本地就残留了镜像文件,因为仓库会保存镜像,本地镜像就会浪费本地的存储空间.
其他问题
有一些其他问题需解决,但是本文并不主要解决这些矛盾,但是在gitlab-ci.yml文件可以配合其他社区方案得以解决
代码需要通过代码检测平台的检测,比如社区的一些优秀解决方案 : SonarQube等
push完代码后(或者push之前)代码需要有一些自动化测试
安装
安装需求
1.需要一台linux服务器,本文是一台debian9.6的服务器
2.需要安装docker和docker-compose(docker安装和docker-compose社区有大量的文章,本文不做说明)
开始安装
环境确认
确认本地已经安装好docker和docker-compose,登陆到服务器后输入以下命令确认环境
下载镜像
搜索并下载gitlab gitlab-runner的镜像
通过下面的命令搜索镜像
通过下面的命令将镜像pull到本地
确认本地拉取镜像成功
列表中出现对应的镜像说明拉取镜像成功
用docker-compose启动
使用docker-compose启动gitlab 以及 gitlab-runner 其中涉及到文件的映射
新建并保存好docker-compose.yml文件后 在当前目录运行命令
<br />gitlab 初始化运行的时候需要一定的时间,需要耐心等待,用下面的命令查看正在运行的镜像
可以看到 当gitlab的status 变成 healthy的时候说明 gitlab启动完成
开始你的第一个runner
打开你的gitlab服务器地址-->注册账号-->创建仓库 这一系列的步骤就不一一赘述了
注册runner
确定仓库的配置
进入仓库的用户设置-->CI/CD<br />
展开Runner后拉到最下面就能看到你当前仓库是否拥有Runner,如果没有的话我们来进行注册
我们能看到红色部分包括两个配置 一个是服务器地址 一个是本仓库的token,在后面注册的时候会用到
注册
进入到正在运行的gitlab-runner容器,方法如下
<br />依次输入服务器地址、token(在前面的图片中能找到) description(描述)可以随意些 tags后面会配合到.gitlab-ci.yml文件<br />Please enter the executor: docker+machine, kubernetes, docker, shell, ssh, virtualbox, docker-ssh+machine, custom, docker-ssh, parallel<br />这一步我摸索了很久,其实就是问docker运行的时候用什么docker源,因为我的宿主机已经安装了docker(并且在docker-compose文件中我映射的bin文件) 所以输入shell 然后我们就注册成功了!
检测
这个时候我们再回到gitlab页面上,就能看到刚才我们最新注册的runner(我之前注册过所以这边显示两个)<br />
至此我们的注册步骤已经结束了 当我们再向仓库push代码的时候 就会根据我们的仓库根目录的gitlba-ci.yml文件运行我们的CI,下面我将贴一下一个最简单的gitlba-ci.yml文件
简单的.gitlab-ci.yml
一些坑和一些总结的小问题
本文不赘述.gitlab-ci.yml文件,不是本文的主要说明内容,社区有大量的优秀文档大家可以查阅,但是有一些坑我会在下面列出来
.gitlab-ci.yml文件必须在仓库文件的根目录
.gitlab-ci.yml文件前面有一个点
关于tags runner默认是必须要用才能运行runner的 请点击
<br />!image.png<br />勾线第三个设置<br />
<br />都配置ok后就可以看到自己项目的CI,持续集成之日可待
<a name="8dmsW"></a>
<a name="Cw8e1"></a>
写在最后
本文主要讲了如何私有化部署以及一些简单的注册、配置, 如果文档有问题,请及时指正,如果还有问题的话可以去社区寻找其他方案,或者📧huang93223@126.com<br />
<br />然后等你push完代码后 可以来杯 ☕️ 等待自动化任务的完成,enjoy!!!<br />
<br />
评论