记 Gitlab 到 Docker 全过程 CI/CD
前记
很久都没有写博客了,不是没时间,可能就是纯粹的懒吧。
背景
公司内部版本管理一直以来都是用的 Gitlab
,而系统早在前年的时候就已经全部上了 Docker
,gitlab-runner
发布过后就一直想利用 gitlab-runner
进行 CI/CD
自动化的部署。
Gitlab && Gitlab-Runner
基于原生原方案
关于 gitlab && gitlab-runner
的安装我这边就不赘述了,不会的可以看官方的文档。
我们在物理机或云上部署的时候一个流程图如下:
从上图我们可以看出,当我们的服务器多了之后每个服务器都需要安装 runner
服务,这对于我这样懒的人感觉好麻烦的;受不了。
当然也有可以解决的方案,如:单独用一服务器挂载共享磁盘。
基于 Docker 新方案
今天我们重点来谈谈,gitlab
如何和 docker
完美结合
先看看看架构图,如下:
接下来我们来说明一哈上面这张图的一个工作流程。
1、开发人员通过本地
push
代码到gitlab
上
2、gitlab-runner
会根据代码根目录下的gitlab-ci.yml
文件执行CI
,gitlab-ci.yml
使用说明请移步:gitlab-ci 使用说明。
3、在CI
过程中会去读取你在代码下Dockerfile
文件构建镜像。docker
的使用我们这里不做过多赘述
4、将镜像推送到镜像仓库,可以自建,也可以用像阿里云的仓库
5、docker
拉去镜像对服务进行部署。