持续集成/持续交付
本文将介绍微服务的持续集成/持续交付流程
涉及工具
git仓库、jenkins、nexus(maven私服/jar包仓库)、harbor(容器镜像仓库)、k8s(容器编排工具)
相关概念
开发分支:用于保存开发阶段的代码分支。
发布分支:用于发布正式版本的代码分支。
快照版本:以
-SNAPSHOT
结尾,例1.0.0-SNAPSHOT
2.3.4-SNAPSHOT
。正式版本:不能以
-SNAPSHOT
结尾,例1.0.0
2.3.4
。git标签:每个正式版本均会打上版本标签,便于以后能找到对应版本的代码
约束
开发分支
程序员提交代码到此分支时,应保证代码能正常编译通过,避免影响他人开发。
此分支的代码,未经正式测试,不能对外发布版本。
pom文件版本应为快照版本。
发布分支
此分支原则上从
开发分支
或其他紧急修复bugfix
分支合并而来,不能直接提交代码到此分支。此分支的代码,需经过正式测试后,对外发布版本。
pom文件版本应为正式版本。
服务关系图
流程图
流程图补充说明
'是否需要部署'节点
编译代码后是否需要部署服务。
默认的判断依据:当前分支为开发分支,则可以部署。
可根据公司/项目情况,修改jenkins脚本,调整判断逻辑。
'获取部署环境'节点
获取部署到目标环境的信息,例如k8s的 ip、端口、token等
可按照快照版本、发布版本部署到不同的集群环境
可根据公司/项目情况,修改jenkins脚本,调整获取逻辑。
'通知部署结果'节点
- jenkins编译部署流程完成后,调用第3方IM工具(如钉钉,企业微信),发送部署结果,便于程序员及时方便了解部署情况
java项目采用CI/CD流程
在 isass 微服务体系中(vip.isass.super版本>=super.3.0.6-SNAPSHOT),项目无需额外引入依赖。框架中已经依赖了
maven-release-plugin
插件微服务项目中的
{company}-service-{ms}-springcloud/jenkinsfile
文件,将最后一行脚本调用代码 由JavaJenkinsfile.call(projectConfig)
改为MavenJenkinsfile.call(projectConfig)