本次设计以满足现阶段开发环境使用,保证开发环境的后台服务及前端项目快速持续的交付。减轻开发人员的发版负担,杜绝频繁发版导致代码被互相覆盖的情况。 系统要保证使用方便,具备集成过程可监控。
系统的核心思路是基于git仓库的WEBHOOK实现,当开发人员提交代码时,会自动调用CI系统中项目的webhook 地址,系统先 判断当前项目的工作目录是否存在源码, 如果不存在则拉取项目相应分支的最新代码(分支和git地址都是配置实现)。
拉取代码后每个项目都要配置一个脚本钩子,可以设置拉代码前或拉代码后执行。脚本内可以定义项目的编译拷贝等过程。
每个项目的每次编译任务可以支持过程监控,可以推送编译结果 (基于钉钉群机器人实现)。
项目为CI系统中的最小任务单元,项目代表一个需要持续集成的任务,可以是一个后台或者前端工程。
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 项目名称 |
| code | string | 项目编码 |
| branch | string | 代码分支 |
| repo | string | 仓库地址 |
| pre_hook | string | 拉代码前执行脚本路径, 相对于工作目录 |
| next_hook | string | 拉代码后执行的脚本路径,相对于工作目录 |
| notify | int | 是否开启钉钉通知(1:是2:否) |
| web_hook | string | 钉钉群机器人的web hook地址 |
项目的集成历史记录,方便对项目进行统计,记录时间、结果、成功或失败,提交人等。
| 字段 | 类型 | 说明 |
|---|---|---|
| project_id | string | 项目id |
| result | int | 1:成功2:失败 |
| echo | string | 编译输出日志 |
| pusher | string | 提交人 |
| created_time | datetime | 创建时间 |
支持web端实时监听项目的集成过程,向客户端输出项目脚本执行日志。支持单个项目多客户端订阅监听。
目前设计上支持单个项目配置钉钉群机器人消息通知,通知支持开、关。