Juvenile
动机
很久之前就想写一个 cicd 平台,主要是为了方便自己开发
- dark release
所谓的 dark release,简单理解是不区分环境,但区分版本
不区分测试环境和生产环境,所有的更新都上生产,但是区分版本
比如 app 版本,我们这次更新上 app 2.0 的版本,但不上 1.0 的版本
比如 k8s 的机器,我们这次上的是 A 机器,但不上 B 机器
同时配合灰度,我们上 2.0 版本,上 10%,我们上 A 机器,上 20%
也就是说,dark release 不再强制区分环境,随之而来的概念是灰度控制
- 直接支持 github action 的 yml
这就意味着可以直接复用很多现成的 actions,也算是提供了一种拓展性,以便实现一些特殊功能
比如小程序的发布,客户端的分流发布,甚至可以在脚本里做权限的审核,等等
以上,这是我对 cicd 平台的思考,1. 环境 => 灰度 2. gitlab.yml => github.action
总体架构
其实很简单,主要是两个 channel
channel A 负责并发执行任务,channel B 负责 SSE 往 client 传输日志,剩下的就是 curd 操作了