A lightweight open source framework for efficiently managing common CI for multiple gitlab golang projects
一个用于高效管理多个gitlab golang项目通用CI的轻量级开源框架 | 官方网站
- 一、介绍
- 二、快速上手
- 1、为您的项目添加.gitlab-ci.yml文件
- 2、正常提交您的项目
- 3、CIManager开始工作
- 三、CI/CD配置
- 四、私有化部署
- 1、下载项目
- 2、部署至私有gitlab
- 3、扩展开发
- 五、帮助文档
- 六、贡献榜
在微服务下,每一个项目仓库都需要维护独立的CI/CD
,一旦CI/CD
有设计升级或变更,所有仓库都需要配合做联动性调整,维护成本极高。
为了解决这个问题,曾经提出过一种方案,详细请见文章 《多项目下CI管理方案的设计与实现》 。
本项目是基于文章中的远程管理
方案设计而实现的一个用于高效管理多个gitlab golang
项目通用CI的轻量级开源框架,它不但完全开箱即用,而且方便定制化开发与扩展。
为了方便您快速应用,可以参考 apimock-example 项目是如何使用
CIManager
的
首先,和单项目下的CI管理方式一样,在您的各个项目下添加一个.gitlab-ci.yml
配置文件,它的内容如下所示
image: golang:1.17
before_script:
- echo '====== CIManager Start Running ========='
after_script:
- echo '====== CIManager Stopped Successfully ========='
stages:
- CIManager
CIManager:
stage: CIManager
script:
- git clone https://github.com/wgrape/CIManager.git ; cp -an ./CIManager/. ./ ; rm -rf ./CIManager ; bash start.sh
添加完之后,如往常一样,正常编写并提交您的项目即可
当您每次提交项目的时候,在runner机器上都会运行CIManager,它的底层运行原理如下图所示,详细运行过程可以 查看这里
基于低耦合、易扩展、高效率的**,CIManager框架内部集成了非常丰富的Stage,通过不同Stage的组合构成了一个完整的集成和发布流程。
那么是如何实现的呢?在 apimock-example 项目例子中,会发现定义了大量的variables
变量,正是这些变量被应用于不同的Stage,才实现了强大丰富的CI/CD
功能。
默认情况下,即使不配置任何变量,也可以正常使用部分功能。如果您想要了解更多CI/CD
的配置,请查看文档
无需任务复杂安装过程,直接通过Git方式clone到本地即可。
git clone https://github.com/WGrape/CIManager.git
如果您不需要对CIManager
框架进行扩展开发,那么直接把它提交至您的私有仓库,并在您各个项目中的.gitlab-ci.yml
配置文件中的https://github.com/WGrape/CIManager.git
替换为CIManager在您私有仓库中的地址即可。
本框架是基于gitlab golang
开发的框架,如果您项目中使用的是其他git仓库或语言,那么可以在CIManager
框架基础上进行扩展开发。
您当然也可以新增配置检查、依赖检查等加强CI/CD
的阶段(Stage)操作,直接修改源码即可。具体请参考设计原理文档
如果在您使用过程中遇到问题,可以查看官方文档,或在ISSUE
中提问。