
背景:在使用acdeployment系统之前,我们20+个前后台项目均使用ars系统进行发布,但ars系统因底层安全漏洞需要下线,经过调研后发现虽然有蓝盾,橘子等CI平台可实现git项目文件传输至IDC的功能,但发布页面的信息展示,灰度ip发布,灰度文件发布,文件回滚等操作均支持得不够友好,需要自研一套小型发布系统进行替代。 发布系统需要在功能上贴近ARS系统,操作流程也需要尽量与ARS类似,使大家使用起来可以无门槛,另外,发布系统最好仍通过OCI接入,这样切换成本会比较低,只修改OCI插件配置为新发布系统的配置即可切换完成。
发布模式介绍
1. 文件发布
纯文件发布在前容器时代一直是主流,到了容器时代该发布方式就日渐式微了。不过在解释型语言发布的场景下依然有一席之地。
2. 镜像发布
容器时代的主流发布模式,对于编译型语言来说该发布方式是绝对的主流。
流程解构
发布系统属于发布阶段的范畴,隶属于DevOps中的CD环节。
发布系统需要具备的功能
维度 | 功能 | 描述 | 功能承载的系统 |
---|---|---|---|
提醒 | 进度提醒 | 需要知道发布所属的阶段 | oci |
提醒 | 发布单提醒 | 需要知道去哪里提单 | acdeployment |
提醒 | 邮件提醒 | 说明此次的改动 | acdeployment |
合法性 | 语法检查 | 存在语法错误的文件不能上线,不过这个功能应该是属于CI环节 | acdeployment |
合法性 | 单元测试&接口测试 | 没有通过测试的文件不能上线,不过这个功能应该是属于CI环节 | acdeployment |
发布 | 冲突检查 | 保证发布过程安全 | acdeployment |
发布 | 灰度发布 | 灰度发布保证系统安全 | acdeployment |
发布 | 回滚 | 异常情况下的快速恢复 | acdeployment |
发布 | 手动和自动 | 同时支持手动和自动发布 | acdeployment |
发布系统流程图
