晨曦's Blog

This is a window to the soul

记 Gitlab 到 Docker 全过程 CI/CD

前记

很久都没有写博客了,不是没时间,可能就是纯粹的懒吧。

背景

公司内部版本管理一直以来都是用的 Gitlab,而系统早在前年的时候就已经全部上了 Dockergitlab-runner 发布过后就一直想利用 gitlab-runner 进行 CI/CD 自动化的部署。

Gitlab && Gitlab-Runner

基于原生原方案

关于 gitlab && gitlab-runner 的安装我这边就不赘述了,不会的可以看官方的文档。

Gitlab

Runner 的安装和注册

我们在物理机或云上部署的时候一个流程图如下:

从上图我们可以看出,当我们的服务器多了之后每个服务器都需要安装 runner 服务,这对于我这样懒的人感觉好麻烦的;受不了。

当然也有可以解决的方案,如:单独用一服务器挂载共享磁盘。

基于 Docker 新方案

今天我们重点来谈谈,gitlab 如何和 docker 完美结合

先看看看架构图,如下:

接下来我们来说明一哈上面这张图的一个工作流程。

1、开发人员通过本地 push 代码到 gitlab
2、gitlab-runner 会根据代码根目录下的 gitlab-ci.yml 文件执行 CIgitlab-ci.yml 使用说明请移步:gitlab-ci 使用说明
3、在 CI 过程中会去读取你在代码下 Dockerfile 文件构建镜像。docker 的使用我们这里不做过多赘述
4、将镜像推送到镜像仓库,可以自建,也可以用像阿里云的仓库
5、docker 拉去镜像对服务进行部署。