A lightweight open source framework for efficiently managing common CI for multi projects
一个用于高效管理多个项目通用CI/CD的轻量级开源框架 | 官方网站
在微服务下,每一个项目仓库都需要维护独立的CI/CD
,一旦CI/CD
有设计升级或变更,所有仓库都需要配合做联动性调整,维护成本极高。为了解决这个问题,曾经提出过一种方案,详细请见文章 《多项目下CI管理方案的设计与实现》 。
本项目是基于文章中的远程管理
方案设计而实现的一个用于高效管理多个项目通用CI的轻量级开源框架,它不但完全开箱即用,而且方便定制化开发与扩展。
您可以参考 apimock-example 和 matching 项目是如何在
gitlab
和github
中使用的
首先,和单项目下的CI管理方式一样,在您的各个项目下添加一个.gitlab-ci.yml
或.github/workflows/.github-ci.yml
配置文件。在/template
目录下有定义好的配置文件,您可以直接使用。
![](https://private-user-images.githubusercontent.com/35942268/309553095-21026799-c865-4534-9342-8954cec04200.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNTgxMzcsIm5iZiI6MTcyNDI1NzgzNywicGF0aCI6Ii8zNTk0MjI2OC8zMDk1NTMwOTUtMjEwMjY3OTktYzg2NS00NTM0LTkzNDItODk1NGNlYzA0MjAwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDE2MzAzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNiNDE1MTY5MWUzZDZkN2ZhYjMyN2E1OTBhMTVlODI3OWI3ZjBlNDBkNWRiOWY2MDA3ZjJkODc1ZjExMmMzNDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.r7Nb0Lziggcgyuwg0uax8FOnwCY9NNGuAk_0t6KtOiU)
添加完之后,如往常一样,正常编写并提交您的项目即可
当您每次提交项目的时候,在runner机器上都会运行CIManager,它的底层运行原理如下图所示,详细运行过程可以 查看这里
无需任务复杂安装过程,直接通过Git方式clone到本地即可。
git clone https://github.com/WGrape/CIManager.git
如果您不需要对CIManager
框架进行扩展开发,那么直接把它提交至您的私有仓库,并在您各个项目中的.gitlab-ci.yml
或.github/workflows/.github-ci.yml
配置文件中的https://github.com/WGrape/CIManager.git
替换为CIManager在您私有仓库中的地址即可。
本框架源码轻量简单,如果不满足您的需求,您可以在CIManager
框架基础上进行自定义开发,比如新增配置检查、依赖检查等丰富和加强CI/CD
的流水线功能。具体请参考设计文档文档
欢迎大家的参与,如果在您使用过程中遇到任何问题,可以随时在 ISSUE 中提问,也欢迎大家的 PR 对本项目优化。
- WGrape/matching :基于CIManager实现在github上对CI/CD的统一管理
- apimock-example :基于CIManager实现在gitlab上对CI/CD的统一管理