关于软件自动化发版的技术方案思考
本文为技术讨论,思路记录,为以后如有需要用到此业务场景提供参考。
业务背景:
一个中小型企业,拥有多个软件产品,服务的客户的需求也是五花八门,有时候用一个版本库会极难处理和均衡各方需求,出于管理方便,可能就每个客户有对应的一套源码进行管理,因此需要有一套自动化管理软件的发布服务程序。否则版本管理的工作量将是巨大的,并且是容易出错的。
技术实现:
1、事务管理系统(需求和bug的管理信息系统)
2、svn(源码管理系统)
3、webservice(发布程序的接口服务)
4、oracle(数据存储:存储每次发版任务信息和结果,以及各个源码程序配置等信息)
5、后台服务程序(发布主服务程序)
6、ftp(ftp服务器,后台发布成功的程序,通过ftp上传到ftp服务器,提供个测试人员和现场实施人员下载)
7、短信系统(发布结果通过短信提醒提交发布请求的人)
业务逻辑:
1、作为一家以软件项目为主体的软件公司,一般都会拥有一套事务管理系统(采购第三方或者自己开发),事务管理系统能够记录各个业务系统的需求,bug,以及发布请求,能对这些事务进行跟踪。
2、事务管理系统中的发布版本事务,需要和webservice进行交互,能够提交相应的发布请求,当然事务系统和发布系统之间处理发布请求,还要对项目的管理,项目各个模块等信息进行数据互通处理。
3、svn作为免费开源的源码管理器,相对也稳定,用作公司的源码服务器还是比较合适的。
4、oracle数据库存储各种信息(各个软件项目信息,服务的客户信息,软件产品模块,各个软件项目对应的源码库信息,以及发布程序最新信息等,各种事务信息等等)
5、后台服务程序(作为软件发布服务的核心,需要能够实现可配置多台的发布服务器,并且实现负载均衡,有详细的错误日志信息,支持发布多种程序语言,例如:c#,asp.net,pb,java)
6、后台服务程序发布结果能够通过邮件的方式发送给事务提交者,并且把输出日志和错误信息一并发送。这里不考虑把发布程序也通过邮件发送给发布者,因为一般邮件附件大小都会有限制,会给系统造成局限性。
7、发布后的程序统一上传到ftp服务器上,不同的项目存储的路径不同,提供给客户使用下载的ftp用户和密码也不相同,这样可以便于控制管理。
8、短信系统,发布成功或者失败,将会通过短信通知提交发布请求的用户。