deploy(gitlab CICD) - xiaofangl/hasan GitHub Wiki

date: 2018/4/19

author: xiaofangliu

version: v1.0

status: 设计开发中

技术栈:gitlab-ci + gitlab-runner + python

应用场景: 公司高速发展期,技术部各开发组 代码升级 测试 上线频繁。导致代码发布工作量多,且需有效 直观 简易的操作工具。

实现功能: 每次发布只需要编译构建包一次,可应用于该项目的其他环境,如生产 测试扥;不需要单独触发 构建 发布测试。通过监听分支动作可完成 项目构建 测试发布。

              对生产环境权限, 发布、回滚、主机可控;且构建过程分布式运行在不通的 runner主机上,提高可用性与容错;

             系统上线后,发布流程则无需 重复打包构建,无需单独触发发布测试。只需在hasan的发布模块中,选择线上包 发布即可。。。

gitlab CI/CD简图

原理 自动部署涉及了若干个角色,主要介绍如下:

GitLab-CI

GitLab自带的持续集成系统,你装的GitLab的那台服务器上就有,无需自行安装。GitLab-CI负责解析.gitlab-ci.yml

.gitlab-ci.yml

GitLab-CI使用YAML文件来管理项目配置,在git项目的根目录下创建此文件,文件中包含一系列的阶段和执行规则。GitLab-CI在push后解析它,根据里面的内容调用runner来执行。YAML配置语法

GitLab-Runner

这个是脚本执行的承载者, .gitlab-ci.yml的script部分就是由runner来负责的。GitLab-CI解析项目里的.gitlab-ci.yml文件之后,根据里面的规则,分配到各个Runner来运行相应的脚本script。

搭建步骤:

1)升级gitlab,支持gitlabci();

2)安装gitlab-runner ,执行器是gitlab-ci.yml实际执行者,需安装gitlab-ci.yml定义的相关构建环境,并想gitlab服务器注册;()

花生技术部 > 发布平台() > image2018-4-20_18-12-50.png

花生技术部 > 发布平台() > image2018-4-20_18-12-19.png

3)编写gitlab-ci.yml 及相关shell脚本,gitlab-ci.yml 是监听 触发工作的核心。在gitlab-ci.yml可定义 不通的job, 如 build、deploy_test等;将所需的手动触发的操作,编写为相应的job。()https://docs.gitlab.com/ee/ci/yaml/

至此,通过自动监听触发 自动构建 自动发布测试等就全部完成。此系统上线后,运维同事将无需再关注非生产 环境的其他 编译 及发布测试等工作;将全部集成于 gitlab 及相关组件中;

4)Python hasan 生产环境发布 构建好的项目包()

功能规划:

将以上三步完成的项目,及构建好的包 存储到 包中心;

生产环境的代码发布,将实现 可选择 以上三步自动构建包,集合ansible并发部署;

并提供修改生产环境 代码运行地址(IP)API;

提供项目 信息页,直观展示本项目有关的 相关信息;

实现基于项目的与用于基本的权限矩阵;可实现人员对项目的可见 及可修改 可发布权限;