引言
针对FCO Feature Release 整理遇到的问题
数据库
1.使用Liquibase引发的问题
目前的方案,SpringBoot集成Liquibase进行数据库表的初始化和修改,从理论上来说,该方案有利于在任意环境快速发布服务,且发布时数据库层完全透明,程序员额外运行sql语句。但是实际情况永远更加复杂,例如,程序员未经过Liquibase,直接对数据库表相关信息做修改且未记录此次操作也未通知到其他组员,并在下一次发版中使用Liquibase进行相关操作,会导致服务无法启动,发布人员需要进行大量额外的工作,包括重新修改文件,提交Github,Review,打包,发布等步骤,才能成功发布应用。这与预期的快速发布背道而驰。所以如果使用Liquibase来进行发布中的数据库准备工作,我们需要尤为谨慎,并且从流程上避免此类情况的发生,即采用Liquibase方案后,不应该再通过其他途径修改数据库,如果真的非常紧急需要立刻修改数据库信息,应该记录下数据库操作,并在dbchangelog.xml进行备注。
使用集成Liquibase方案还有一个问题,当数据库需要稍作修改,而业务代码并未修改,仍需要重新发布应用,当然,这种情况较为极端。
2. 生产数据库和QA环境数据库表信息不一致
如果生产环境数据库和QA环境数据库表信息一致,1中所提到的问题可以及时暴露在QA环境发布中,然而此次发布,生产环境数据库和QA环境数据库表结构存在不一致的情况,导致在QA中顺利发布,而在生产环境发布失败。 保持两个环境的一致性对于生产快速发布意义重大。
配置文件管理
此次发布中,YAML配置文件缺少必要信息也导致了服务发布失败。版本发布前,由服务维护人向生产环境配置文件管理者提供配置文件信息,后者将文件修改后上传,通知发布人员配置文件就绪,可以发布。这个流程并未严格执行也导致在发版时出现问题。
Jenkins相关配置
1. 打包文件目录被移除
本次发布时,提前打好包的服务在发布时遇到查无次包的问题,jenkins或许存在定时清空工作目录的bug。
2. 远程访问Jenkins
远程访问jenkins进行打包,jenkins界面显示打包成功,然而实际打包文件并未生成到磁盘,以后打包操作建议直接在jenkins本地运行。
后记
将本次发版遇到的问题一一记录,为以后的发版前的准备工作提供参考
网友评论