使用流水线完成日常开发的持续交付
# 什么是流水线?
流水线是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付,包括:
- 代码的静态检查,提早发现代码 bug、安全性问题。
- java、go、node 项目的编译打包,镜像构建。
- 部署应用到 kubernetes 集群。
通常,一个服务发布上线前会经历以下阶段,开发阶段—测试阶段—发布上线。
# 开发阶段
开发阶段,开发人员在自己的特性分支(如 feature-1)上开发,并经常性的将代码部署到开发环境上做特性验证,推荐配置如下:
代码仓库: 代码库为 pipeline-test-java,分支为自己的特性分支 feature-1。
代码静态检测:借助代码静态检测,提早发现代码问题。
java 编译:使用 maven 编译打包。
镜像构建:使用 docker 将应用打包为镜像,并推送到 docker 制品仓库,镜像版本可使用时间戳$。
部署:使用最新构建的镜像,更新应用。
开发人员点击启动流水线,feature-1 分支的代码将经过代码静检—编译—镜像构建,并最终更新到应用上。部署成功后,开发人员即可进行特性验证。
# 测试阶段
测试阶段,所有特性分支的代码都已合入到一个常稳分支(如 dev),测试人员准备在测试环境上做集成测试,推荐配置如下:
代码仓库: 代码库为 pipeline-test-java,分支为 dev 分支(dev 分支合并了所有的特性分支)。
代码静态检测:借助代码静态检测,提早发现代码问题。
java 编译:使用 maven 编译打包。
镜像构建:使用 docker 将应用打包为镜像,并推送到 docker 制品仓库,镜像版本可使用代码的 commit 值$,便于追溯镜像对应的代码提交记录。
部署:使用最新构建的镜像,部署到测试环境。
测试人员点击 "启动流水线",dev 分支的代码将部署到测试环境,测试人员完成集成测试验证。
# 发布上线阶段
发布上线时,推荐基于制品去发布应用。此时我们已拥有了多个经过测试验证的不同服务的镜像 app1:v1、app2:v1...,推荐配置如下:
部署:添加一个"ahs 部署"的步骤,选择镜像时从制品仓库获取。
启动流水线后,将使用制品仓库中的镜像替换正在运行的应用镜像,完成应用的发布上线。
上一篇: 审批环境最佳实践 如何通过钉钉群接收流水线执行情况通知