场景模拟
微服务开发中各组对其他组提供二方包难免有版本冲突问题,本文为模拟maven-release插件来避免版本冲突的场景模拟.
开发a在开发项目版本3.1.6 上线时间为周二
开发b在开发项目版本3.1.7 上线时间为周四
他们同时涉及到了项目customer中的customer-api:1.0.1-snapshot这个二方包
此时他们从develop分支各打了自己的feature分支进行开发
开发a的就叫feature/a
开发b的就叫feature/b
他们并行开发并且将代码合到develop分支发布测试.此时customer-api:1.0.1-snapshot共同拥有feature/a跟feature/b的特性.按照正常流程测试.
周二3.1.6要上线,开发a将featue/a中的customer-api版本从1.0.1-snapshot改为1.0.1-release提交merge request进行合并合并到了master分支.并且他的下游项目也同步修改依赖版本改为了1.0.1-release.上线成功
而后开发b在发布develop分支到测试环境时,Jenkins校验develop有没有合并master分支,如果没有开发b将master合并到develop此时develop的customer-api的版本号为1.0.1-release,
执行deploy到私服时,发生错误,私服提示不支持发布release版本.开发b根据错误提示知道了customer-api已经变为了release版本.于是升级版本到1.0.2-snapshot,并且告知下游项目修改至1.0.2-snapshot
循环此过程即可避免发布版本冲突
该情况下
develop分支永远是snapshot版本
master分支永远是release版本