书接上文
3.流程设计
结合当前Gitflow流程,在项目开发与发布过程中,通过Git事件来触发不同的集成与部署过程,主要包括以下几个时间节点:
| 时间节点 | 触发过程 |
|---|---|
| 1.其他分支merge到develop分支2.develop分支有新提交 | 项目构建 > 测试(代码质量增量扫描、单元测试等)>dev环境集成部署 |
| 1.develop分支或其他分支merge到test分支2.test分支有新提交 | 项目构建 > 测试(代码质量扫描、单元测试等) > test(stage)环境集成部署 > 性能测试 |
| master分支打tag | 项目构建 > 应用打包 > 推送文件或项目构建 > 镜像制作 > 推送镜像 |
| 运维发布 | 拉取文件 > prod环境部署 |
环境隔离
对于develop、test多版本并行的情况下,可通过临时分支之后的版本号做隔离
a)本地开发
对于需要在特殊环境进行调试的应用,可利用开发将应用运行在本地VM或远程Kubernetes集群进行测试
开发工具:
| 名称 | 系统要求 | 支持操作 | 本地最小安装 | 远程最小安装 |
|---|---|---|---|---|
| Draft | osx,linux,windows | 构建,部署 | draft,minikube | Kubernetes,Helm |
| Skaffold | osx,linux,windows | 构建,部署(实时) | skaffold,kubectl,minikube | Kubernetes |
| Squash | osx,linux,windows | debug | squashctl,ide插件,minikube | Kubernetes |
| Telepresence | osx,linux | 连接容器 | telepresence,kubectl,minikube | Kubernetes |
| DevSpace | osx,linux,windows | 构建,部署,热加载,连接容器 | devspace,minikube | Kubernetes |
b)开发环境集成
c)测试环境集成
d)打包(tags)
应用打包
当前项目还存在原生部署方式,所以需要在构建后将可执行文件打包存
储到中转文件服务中
镜像制作
对于已完成容器化改造,在项目构建后可直接制作镜像以便后续部署
e)预生产/生产环境部署
四、后续扩展
- 内部kubernetes搭建
- 分布式可伸缩Runner定制与搭建
- 原生部署、容器化部署的流程梳理和开发
- 多语言构建镜像定制
- 项目容器化部署改造