在推广自动化发布之前,我行大部分系统的打包发布工作仍为手工操作。你还在为极其容易被消耗的时间而感到焦虑吗?你还在为极其容易出错的手工操作气的捶胸顿足吗?
你感受过这样的绝望吗:
⁜ 开发人员未及时将代码上传SVN就在本地编译发布包,导致SVN中源代码与发布包不一致。
⁜ 不同开发人员本地环境或组件不同,导致发布包内容存在差异。无发布包管理,容易导致版本混乱。
⁜ 频繁登陆测试环境进行发布,可能造成测试环境应用功能冲突。存在大量操作失误。
⁜ 据业界统计,近四分之一的上线失败及生产问题归因为发布内容错误,发布一疏忽,投诉多到哭。
是吧,挺绝望的吧?因此,自动化分布极为必要。在部门领导、各模块负责人及技术管理中心的支持下,常明君老师和他的小伙伴一起发起了对自动化发布的深入探索,在持续探索的同时今天还要跟大家进行了一次深入的分享与探讨。
前期我们在使用HP的OO(自动化平台)实现了现金管理和Xbank的自动化发布,现使用PEST平台进行自动化发布,目前已实现了近百个系统的220多个自动化发布流程,覆盖了开发、UAT、版本机、性能多个环境。
1.自动化发布流程:自动化编译及发布
编译与发布,是项目开发过程中需要频繁进行、流程固定的工作,非常适合使用自动化工具,并在此基础上实现源代码、介质库、发布流程的管理。
自动化发布流程通常包括编译流程和发布流程两部分。
自动化编译流程为:从SVN或GIT中下载源代码,根据制定好的编译脚本进行编译,编译成功后发布包自动放入介质库中,同时在源代码版本管理系统中对编译的代码打Tag标签,使源代码与发布包一一对应,便于问题的跟踪与查找。
自动发布流程为:将发布包及相关脚本上传到测试服务器,并在测试服务器上调用这些脚本进行备份、发布和验证。
2.发布脚本管理:抽取公共脚本,参数化环境信息
我们将发布脚本中与环境相关的部分进行参数化,其余部分形成公共脚本。每个系统在各个环境的部署都使用一套统一公共脚本,在不同环境进行发布时只需替换不同参数即可,从而提升了发布效率和准确性,避免了多版本不一致的风险。同时,也把发布脚本放在SVN中,实现了发布脚本的版本管理。
3.介质库管理:部署及基线目录
介质库使用SVN来实现,保存每次编译生成的发布包、配置文件、发布脚本以及每次发布后的历史版本。在介质库中,先按系统创建一个系统目录,然后在系统目录下创建Deploy(部署)、Baseline(基线)目录。Deploy目录存放发布介质、环境配置文件、发布脚本;Baseline目录存放每次发布时Deploy目录的快照,便于问题跟踪。
4.支持四种发布模式
我行系统架构复杂,发布模式各异,通过分析归纳,按照源代码管理、系统发布方式总结出四种发布模式,源代码管理方式包括“多环境同一分支”和“多环境不同分支”,系统发布方式包括“全量发布”和“增量发布”。针对每种模式形成了相对固定的发布方案及脚本,便于更好的进行自动化发布流程的实施。
5.标准化实施过程,大幅度提升发布效率
在协助项目组实施自动化发布工作时,通常需要进行以下步骤:
⊙ 确定发布模式;
⊙ 裁剪发布流程;
⊙ 收集编译发布相关信息;
⊙ 设计开发编译及发布脚本;
⊙ 测试发布流程;
⊙ 发布流程使用介绍。
通过持续不断地总结和积累,自动化发布流程的开发效率从原来一周多开发一个发布流程,到3天左右就可完成,发布效率大幅提升。
6.使用便利,完全透明
自动化发布流程支持多种触发模式,并提供了丰富的辅助功能,使发布过程对开发人员完全透明。
7.总结
集成和发布是整个开发过程中的重要一环,随着市场需求的日新月异,我行业务系统的更新速度也在不断加快,更需要通过稳定的、自动化的方式来进行管理,不断夯实我们软件开发过程的基础设施,为我们的开发人员提供更多便利,提高整个部门的开发产出率。
好啦,今天的分享就到这儿啦,大家有什么想要一起探讨的,请点击右下方留言评论哦~
我们下次见!
美好的 你和世界
- 来,互动啊 -
你最想在这里
看到关于什么的消息
想看更多绝对干货和有趣新闻的请点赞并分享
一起评论探讨互动嘛
领取专属 10元无门槛券
私享最新 技术干货