# CIManager **Repository Path**: WGrape/CIManager ## Basic Information - **Project Name**: CIManager - **Description**: A lightweight open source framework for efficiently managing common CI/CD for multiple gitlab golang projects / 一个用于高效管理多个gitlab golang项目通用CI/CD的轻量级开源框架 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-09-15 - **Last Updated**: 2022-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

image

A lightweight open source framework for efficiently managing common CI for multiple gitlab golang projects

一个用于高效管理多个gitlab golang项目通用CI的轻量级开源框架 | 官方网站

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