一种程序自动版本发布方法和装置的制造方法
【技术领域】
[0001]本申请涉及电数字数据处理领域,尤其涉及一种对开发的程序自动进行版本发布的方法和装置。
【背景技术】
[0002]持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译、自动化测试、发布)来验证,从而尽早地发现集成错误。
[0003]软件开发生命周期有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。
[0004]然而,基于开源项目框架下,从项目定义、代码下载、提交、编译、单元测试、集成到版本发布的各个功能都是相互独立的,缺乏一个贯穿开发周期始终的一套整体解决方案。
【发明内容】
[0005]本申请的目标在于提供一种减少人工参与、节省成本的自动化程序版本发布方法和装置。
[0006]本申请的目标由一种程序自动发布方法实现,该方法包括:
[0007]将程序的功能模块开发任务与开发计算机相关联并将关联信息保存到服务器;
[0008]处理所述关联信息以在服务器生成仓库地址;
[0009]开发计算机将其开发的源码提交到与其对应的仓库;
[0010]监听仓库状态的变化;
[0011]在仓库状态变化表明有新的源码提交时,向编译单元发送信号并将源码发送到编译单元进行编译操作;
[0012]在编译成功时触发程序的版本发布。
[0013]本申请的目标还由一种程序自动发布装置实现,该装置包括:
[0014]关联模块,用于将程序的功能模块开发任务与开发计算机相关联并将关联信息保存到服务器;
[0015]地址生成模块,用于处理所述关联信息以在服务器生成仓库地址;
[0016]提交模块,用于使开发计算机将其开发的源码提交到与其对应的仓库;
[0017]仓库监听模块,用于监听仓库状态的变化;
[0018]编译控制模块,用于在仓库状态变化表明有新的源码提交时,向编译单元发送信号并将源码发送到编译单元进行编译操作;
[0019]版本发布模块,用于在编译成功时触发程序的版本发布。
[0020]通过本发明,可提供从项目定义、代码下载、提交、编译、单元测试、集成到版本发布的一整套解决方案,将原本零散的功能集中化、自动化,减少人工参与,节省人力成本;而且可提早发现程序中的问题,减少了问题修改成本。
[0021]除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序执行。
【附图说明】
[0022]本发明将在下面参考附图并结合优选实施例进行更完全地说明。
[0023]图1为根据本发明方法的一实施例的流程图。
[0024]图2为根据本发明方法的另一实施例的流程图。
[0025]图3为根据本发明装置的一实施例的结构示意图。
[0026]为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
【具体实施方式】
[0027]通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
[0028]图1示出了本发明方法的一实施例,其用于实现程序的自动版本发布。在该实施例中,利用git和Jenkins与本发明方法结合实施。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的贡献者提供了一个名为Gerrit Trigger的插件,该插件将Jenkins与Gerrit集成起来,可用于监听Gerrit上的patch set的提交。Jenkins执行具体用户的任务(例如调用一个用户写好的脚本程序来完成特定的功能)是通过启用job的方式,job的启动方式有3种:人工手动启动、事件自动触发启动、定时启动。每个job中提供了多种环境可用来执行不同语言的程序或脚本,用户可根据需求灵活选择。Jenkins上还可设置上下游任务,并可针对上游任务执行返回的不同结果来设置触发不同的下游任务,这为多个关联任务的执行(串行或并行)提供了很灵活的条件设置选项。Jenkins还提供了反馈机制,例如邮件插件,用户根据自己的需求可配置在job返回的不同结果下给不同的邮件用户发送定制的通知邮件。
[0029]具体地,图1所示实施例的方法开始于步骤S10,项目管理者在立项后将开发程序功能模块的任务分配到责任人,每一责任人拥有相应开发计算机,将开发任务与责任人/开发计算机之间的关联信息一次性录入并保存到服务器,例如,项目I的电话模块分配给责任人A。之后,处理进行到步骤S20,处理录入的信息生成git仓库地址,例如ssh: AOipaddressW项目1\电话模块。之后,处理进行到步骤S30,在此分两种情况,在首次开发时,处理从步骤S20直接进行到步骤S30,将开发计算机如A上开发完成的源码用git push命令上传到对应的git仓库;在首次开发之后的后续开发时,处理从步骤S20首先进行到步骤S25,开发计算机从与其对应的仓库下载前次提交的代码并基于其进行开发,例如开发者A直接从“A@ip addressW项目1\电话模块”这个地址获取代码,并完成开发工作;之后,处理进行到步骤S30,将新开发完成的源码用git push命令上传到对应的git仓库并盖写先前的源码。在步骤S30之后,处理进行到步骤S40,使用Jenkins监听即查询仓库状态的变化。Jenkins有一个Gerrit Trigger插件,Jenkins与git仓库间建立有TCP/IP的连接,git服务端口为29418(这是是默认的Gerrit SSH端口),Jenkins随时监听git仓库的状态。Git仓库的状态包括: