背景
当前的ci/cd更多是应用级的,也就是应用提交了代码,自动做比如扫描,测试,构建和发布,这个往往在toc的场景比较适用
但是tob场景,特别是涉及到私有化部署时候,我们需要的是项目级的ci/cd,因为你需要交付给客户的是一整个项目,而不是一个子应用
下面是我针对最近做tob私有化部署时想到的解决方案,仅供参考
主要思想就是区分应用制品和项目制品以及分别制定他们的流水线
简单总结就是
项目制品=相关应用制品集合
交付方式就是
项目制品+环境配置
解决方式
主干开发方式+gitops
新建一个仓库,比如叫xxx-devops,包含如下内容
一键部署/更新k8s脚本
用于部署项目关联应用的helm chart
环境配置
一键部署更新项目脚本
通过一键部署k8s脚本部署k8s集群,dev,test
dev阶段
应用代码提交后通过gitops去进行构建镜像,自动修改xxx-devops仓库的dev目录下应用helm chart中的image tag,
xxx-devops仓库的dev目录下应用helm chart中的image tag变更后通过gitops去进行部署dev
test阶段
得到足够的验证后,修改xxx-devops仓库test目录下helm chart中的image tag变更后通过gitops去进行部署test
发布阶段
得到足够的验证后,修改xxx-devops仓库release目录下helm chart中的image tag变更后触发ci得到一个交付文件,自动上传到oss
从oss下载相应的交付文件,此时k8s部署脚本和helm chart都是明确的,只需要修改环境配置,然后通过一键启动脚本部署项目
网友评论