专利名称:一种日构建方法、装置及系统的制作方法
技术领域:
本发明涉及软件开发领域,特别是一种日构建方法、装置及系统。
技术背景在软件开发的过程中,若想保持每日的软件开发工作高效且正确,所采 用的有效方法之一即是采用日构建方案。所谓日构建在本质上是一种管理实 践,即通过持续集成、快速反馈来保证软件开发工作所开发的软件产品按照 渐进的、可预期的目标前进。以日构建为基础管理软件开发工作,有利于保 证软件开发项目成功和提高软件产品质量。所谓日构建,就是每天把所有的工作产品集成起来,这里所说的工作产 品即是开发人员编写的代码,并尽可能让这些代码处于可测试状态。由于软 件开发工作,尤其是大型软件的开发工作需要众多的开发人员在相当长的时 间内才能完成,因此在软件开发的工作中极有可能遇到开发人员理解软件设 计错误、开发效率低下,最终软件产品质量不合格等问题,应用日构建方法, 可以对每个开发人员的日常开发行为和目标做出规范,这些规范减小了设计 者与开发者之间的沟通代价,协调团队成员间的工作,并且能够对软件项目 各个方面和层次做出真实而及时的反馈。在软件的开发过程中,软件的质量保证是软件开发领域的难题之一,而 使用日构建方案,从每个开发人员的工作产品出发,在软件开发的初始阶段 即进行产品质量的控制。日构建的反馈频度为每日一次,这种频度的反馈比 较容易发现并解决在软件开发过程中出现的问题,进而提高整个软件的质量。现有的日构建方案具体的实现过程如下每天在一个固定的时间,比如 凌晨零时开始,构建服务器自动启动构建任务,此任务触发一个批处理文件, 完成日构建目标。所述批处理文件中定义的批处理任务即为构建任务。日构 建服务器根据所述构建任务从代码服务器获取软件产品的程序代码,对所述 代码进行编译,并将编译打包后的代码发送至测试服务器,对所述代码的测
试。若检测出问题,则发送邮件通知开发人员与项目负责人。但是,现有的日构建方案每天只是进行一次构建,在每天的软件产品的 代码开发工作中,随时都有可能遇到问题,而却不能通过构建服务器编译刚 刚完成的程序代码,及时发现问题并进行相应的修改。因此若某些关键项目 的代码出现错误,则会直接影响其它项目的代码的正常编写,在这种情况下 需要软件开发人员频繁手工处理出错的项目,致使工作效率低下。 发明内容本发明实施例提供一种日构建方法、装置及系统,以解决现有日构建方 案每天只能进行一次构建,由此导致的只能在固定的时间构建程序代码,因 此发现代码错误不及时,需要开发人员手工对程序代码进行编译检测,进而 导致的软件开发效率低的问题。为解决上述问题,本发明实施例提供一种日构建方法,包括 接收构建请求;根据所述构建请求获取程序代码并进行编译; 发送编译后的程序代码至测试服务器,实现构建任务。 优选地,执行接收构建请求之前,所述方法还包括 客户端从数据库获取程序项目信息; 根据所述程序项目信息生成构建请求。 优选地,接收构建请求后,所述方法还包括构建服务器解析所述构建请求,得到程序项目信息,并根据所述程序项 目信息执行获取程序代码步骤。优选地,执行编译所述程序代码后,所述方法还包括 所述构建服务器将编译后的程序代码进行打包,执行所述发送步骤。 优选地,执行发送编译后的程序代码至测试服务器后,所述方法还包括: 构建服务器将编译程序代码的结果发送至数据库存储。 优选地,所述方法还包括测试服务器访问所述构建服务器,若所述构建服务器存在编译后的程序
代码,则请求接收所述编译后的程序代码。相应地,本发明实施例还提供一种日构建装置,包括 接收单元,用于接收构建请求; 获取单元,用于根据所述构建请求获取程序代码; 编译单元,用于编译所述获取的程序代码;发送单元,用于将编译后的所述程序代码发送至测试服务器,实现构建 任务。优选地,所述装置还包括解析单元,用于解析所述构建请求,得到程序项目信息。 优选地,所述装置还包括打包单元,用于将编译后的程序代码进行打包,通知发送单元进行发送。 相应地,本发明实施例还提供一种日构建系统,包括构建服务器、代 码服务器、测试服务器、数据库与客户端,其中,所述构建服务器包括 接收单元,用于接收构建请求; 获取单元,用于根据所述构建请求获取程序代码; 编译单元,用于编译所述获取的程序代码;发送单元,用于将编译后的所述程序代码发送至测试服务器,实现构建 任务。优选地,所述构建服务器还包括解析单元,用于解析所述构建请求,得到程序项目信息。 优选地,所述构建服务器还包括打包单元,用于将编译后的程序代码进行打包,通知发送单元进行发送。 与现有技术相比,本发明实施例所提供的日构建方法、装置及系统应用 客户端-服务器模式,根据代码编写过程中的具体需要,通过客户端向构建 服务器发送构建请求,从而能够实时对软件产品的程序代码进行构建,及时 检测所述程序代码的错误,减少了人为测试处理过程,提高软件开发效率。
图1是本发明实施例的方法流程图;图2是本发明实施例所应用方法的系统结构图;图3是本发明实施例客户端工作流程图;图4是本发明实施例构建服务器工作流程图;图5是本发明实施例构建服务器线程工作流程图;图6是本发明实施例装置结构图;图7是本发明实施例系统结构图。
具体实施方式
下面结合附图及实施例对本发明作详细的说明。本发明实施例的系统基 于Eclipse构建,Eclipse是一个开发源代码的、基于Java的可扩展开发平台, 它本身只是一个框架和一组服务,用于通过插件构成开发环境。Eclipse平台 为工具提供者(ToolsProvider)提供一套使用机制和一组需要遵循的规则,从 而使得开发出的工具之间实现无缝的集成。这些机制通过定义API接口、类 和方法提供给用户使用。更确切地说,Eclipse中的每样东西都是插件。在曰构建系统中,利用Ant来自动完成构建工作。Ant是Apache Jakarta 的一个项目,它使用Java语言编写,根据配置文件并基于一个脚本(.xml) 文件执行。其配置文件由目标树构成,每个目标含了要执行的任务,所述任 务即是可执行的代码。Ant通过系统定时功能,可以很方便地自动实现构建工 作。请参阅图l所示,为本发明实施例的方法流程图,具体包括步骤 步骤S101:接收构建请求;步骤S102:根据所述构建请求获取程序代码并进行编译; 步骤S103:发送编译后的程序代码至测试服务器,实现对所述程序代码 的构建。根据本发明实施例的步骤,即可实现通过客户端发送日构建请求,从而 根据需要对程序代码进行编译和检测。在本发明的优选实施例中,系统的连接结构如图2所示,客户端201根
据具体要构建的程序代码,从数据库204中获取到程序项目信息,在所述程 序项目信息中,包括程序的建立时间、上传至代码服务器时间、修改记录及 程序代码在代码服务器205上的位置等等。获取到上述信息后,客户端201 将上述信息进行封装,生成构建请求,并发送至构建服务器202。所述客户端 的具体工作流程图请参阅图3所示,具体包括步骤步骤S301:启动Eclipse工具和日构建客户端工具;步骤S302:检测在数据库中是否存在所述日构建客户端工具的新版本, 若存在,执行步骤S303,若不存在,执行步骤S304;步骤S303:从数据库下载升级日构建客户端工具新版本;步骤S304:根据具体需要,向数据库或构建服务器发送命令消息,完成 相应的工作任务,并将完成记录写入数据库;步骤S305:查询数据库,显示已被提交的工作任务列表。其中,所述客户端201能够实现多个功能,因此定义每一个功能均使用 不同的消息格式进行发送,每一条消息即包括一个功能。因此在步骤S304中, 向数据库或构建服务器发送的消息根据不同的功能均为不同的格式。这些消 息包括向数据库写入记录数据的命令,或向构建服务器发送的构建请求等等。 所述客户端201每一次可以发送多条消息,因此,所述客户端201在同一时 刻可以处理多个任务。所述构建服务器202接收到所述构建请求后,对所述构建请求进行解析, 通过解析过程,得到程序的相关项目信息,如程序代码位置,并根据所述程 序代码在代码服务器205的位置,从代码服务器205获取到所述程序代码, 从而实现代码下拉过程,即将程序的代码从代码服务器205下拉到构建服务 器202上。所述构建服务器202的工作流程请参阅图4所示,包括步骤 步骤S401:初始化工作环境,读取配置文件;步骤S402:读取在本机存储的历史记录,判断是否存在未处理完成的任 务,若存在,执行步骤S403,若不存在,执行步骤S404; 步骤S403:将所述历史记录进行归类,根据不同的类型,发送相应的命 令消息至不同队列,继续完成相应未完成的任务; 步骤S404:开启监听端口,接收命令消息;步骤S405:根据不同的命令消息类型将任务发送至不同的队列中,完成 相应的^f壬务。所述构建服务器202最开始启动时,首先要读取配置文件,根据所述配 置文件中所记载的环境信息进行相应的配置,所述环境信息包括数据库连接 信息、环境目录结构、服务监听端口,读耳又到上述环境信息后,所述构建服 务器202创建三个信号队列,每一个队列均对应并启动一个独立的任务线程, 如服务监听线程启动后,开始监听队列信号,若存在新的队列信号,则根据 其信息内容进4亍相应的处理。其中,所述线程的工作流程请参阅图5所示,具体包括步骤步骤S501:判断是否存在信号队列,若是,执行步骤S503,若否,执行 步骤S502;步骤S502:监听等待新的信号队列;步骤S503:在信号队列中读取任务,并在数据库中读取相应记录; 步骤S504:根据在数据库中读取的记录在数据库中获取指定的配置文件, 处理相应任务;步骤S505:任务处理完成后,将处理结果发送至数据库及项目相关人员。其中,在数据库中读取的任务记录基本项目包括任务编号、项目名称、 项目编号、提交人名称、项目负责人邮件地址、提交人邮件地址、日志文件 名称等。所述任务编号对于每一个任务来说均是在数据库中惟一的编号,有 效标识出不同的任务。不同的任务线程,其基本的工作流程一致,只是在具体不同功能的处理 上面,存在差别,但均是以上述工作流程进行相应处理。其中,构建线程的处理过程主要为在数据库中获取任务相应任务记录, 根据所述记录中的项目名称获得默认环境下ANT的.xml文件,然后直接调用
ANT执行这些.xml文件,所述的.xml文件均是预先写好的脚本文件。输出线程的处理过程主要为将输出文件从构建环境拷贝到另 一输出指 定目录中,实现将所述输出文件的输出,其目录结构间的对应关系由配置文 件设置相应设置。补丁线程的处理过程主要为根据指定的项目列表,将所述项目列表中 的指定文件按照特定的目录结构拷贝到一个指定的位置,然后压缩成一个压 缩包。所述构建服务器202获取到所述程序代码后,对所述程序代码进行编译, 并发送开发人信息、编译结果等数据至数据库204。编-泽完成后,所述构建服 务器将所述编译完成的代码打包。所述构建服务器202设置有相应的代码标识位,若存在编译后的程序代 码,则通过所述代码标识位表示。所述测试服务器203以预先i殳定的频率库仑 询所述构建服务器202的代码标识位,若所述代码标识位表示所述构建服务 器202存在编译后的程序代码,则向所述构建服务器发送代码接收请求。所 述测试服务器203接收到所述代码包后,对所述代码包进行解包工作,获得 所述编译后的代码,进行相应的测试。若通过测试,4企测出所述代码存在错 误,则测试服务器203发送测试结果至数据库204存储,并发送通知消息至 所述代码的开发人及项目负责人,使他们能够及时获得代码的状况,进行相 应的处理。应用本优选实施例所提供的方法,通过客户端向构建服务器发送构建请 求,能够实现实时对软件产品的程序代码进行构建,能够及时检测出所述程 序代码的错误,从而提高软件开发效率。相应地,本发明实施例还提供一种日构建装置,其优选实施例装置请参 阅图6所示,包括接收单元601,于用接收构建请求;获取单元602,用于根 据所述构建请求从代码服务器获取程序代码;编译单元603,用于编译所述获 取的程序代码;发送单元604,用于将编译后的所述程序代码发送至测试服务 器,实现构建任务。 另外,所述装置还包括解析单元605,用于解析所述构建请求,得到程序项目信息;打包单元606,用于将编译后的程序代码进行打包,通知发送单元 进行发送。应用本发明实施例提供的优选装置,客户端向所述日构建装置发送构建 请求,所述接收单元601接收到所述构建请求后,所述解析单元605进行解 析,获取到目标程序的建立时间、修改记录以及程序代码在代码服务器上的 位置等。所述日构建装置根据所述程序的相关信息,通过获取单元602从代 码服务器获取到所述程序的代码,并通过所述编译单元603编译所述代码。代码编译完成之后,所述日构建装置发送提交人信息、编译结果等数据 至数据库,并通过打包单元606将所述代码封装,若接收到测试服务器的代 码接收请求,则利用发送单元604将所述代码包发送至测试服务器。所述测试服务器接收到所述代码包后,对所述代码包进行解包工作,获 得所述编译后的代码,进行相应的测试。若经过测试,;险测出所述代码存在 错误,则测试服务器将测试结果发送至数据库存储,并发送通知消息至所述 代码的开发人员及其项目负责人,使他们能够及时获取到代码的状况,进行 相应的处理。应用本优选实施例所提供的装置,可以将所述装置设置于日构建系统的 构建服务器中,能够接收客户端发送的构建请求,根据所述构建请求实时对 软件产品的程序代码进行构建,及时检测出所述程序代码的错误,从而提高 软件开发效率。相应地,本发明实施例还提供一种日构建系统,其结构请参阅图7所示, 包括构建服务器701,用于完成程序代码的构建任务;代码服务器702,用于 存储输软件产品的程序代码;测试服务器703,用于接收构建服务器701编译 后的程序代码,并进行相应的测试;数据库704,用于存储软件产品信息、构 建的结果与测试结果;客户端705,用于读取软件产品的信息,根据所述信息 发起构建请求。其中,所述构建服务器701包括如上所述的日构建装置,其实现程序代 码的构建过程如下客户端705根据具体要构建的程序代码,从数据库704中获取到程序项 目信息,在所述程序项目信息中,包括程序的建立时间、上传至代码服务器 时间、修改记录及程序代码在代码服务器702上的位置等等。获取到上述信 息后,所述客户端705将上述信息进行封装,生成构建请求,并发送至所述 构建服务器701。所述构建服务器701接收到所述构建请求后,对所述构建请求进行解析, 通过所述解析过程,得到程序的相关项目信息,如程序代码位置,并根据所 述程序代码在代码服务器702的位置,从代码服务器702获取到所述程序代 码,^v而实现代码下拉过程,即将程序的代码^v代码服务器702下拉到所述 构建服务器701。所述构建服务器701获取到所述程序代码后,对所述程序代码进行编译, 并发送开发人信息、编译结果等数据至数据库704。编译完成后,所述构建服 务器701将所述编译完成的代码打包。所述构建服务器701设置有相应的代码标识位,若存在编译后的程序代 码,则通过所述代码标识位表示。所述测试服务器703以预先设定的频率轮 询所述构建服务器701的代码标识位,若所述代码标识位表示所述构建服务 器701存在编译后的程序代码,则向所述构建服务器发送代码接收请求。所 述测试服务器703接收到所述代码包,进行解包,获得所述编译后的代码, 进行相应的测试。若通过测试,检测出所述代码存在错误,则测试服务器703 发送测试结果至数据库704,并发送通知消息至所述代码的开发人及项目负责 人,使他们能够及时获得代码状况,进行相应处理。应用本优选实施例所提供的系统,可以实现由客户端根据需要发起的构 建请求,构建服务器根据所述构建请求完成构建任务,从而能够及时检测出 程序代的错误,减少人工检测过程,提高软件开发效率。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润
饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1、一种日构建方法,其特征在于,所述方法包括接收构建请求;根据所述构建请求获取程序代码并进行编译;发送编译后的程序代码至测试服务器,实现构建任务。
2、 根据权利要求1所述的方法,其特征在于,执行接收构建请求之前, 所述方法还包括客户端从数据库获取程序项目信息; 根据所述程序项目信息生成构建请求。
3、 根据权利要求2所述的方法,其特征在于,接收构建请求后,所述方 法还包括构建服务器解析所述构建请求,得到所述程序项目信息,并根据所述程 序项目信息执行获取程序代码步骤。
4、 根据权利要求1所述的方法,其特征在于,执行编译所述程序代码后, 所述方法还包括所述构建服务器将编译后的程序代码进行打包,4丸行所述发送步骤。
5、 根据权利要求1所述的方法,其特征在于,执行发送编译后的程序代 码至测试服务器后,所述方法还包括构建服务器将编译程序代码的结果发送至数据库。
6、 才艮据权利要求1所述的方法,其特征在于,所述方法还包括 测试服务器访问所述构建服务器,若所述构建服务器存在编译后的程序代码,则请求接收所述编译后的程序代码。
7、 一种日构建装置,其特征在于,所述装置包括 接收单元,用于接收构建请求;获取单元,用于4艮据所述构建请求获取程序代码; 编译单元,用于编译所述获取的程序代码;发送单元,用于将编译后的所述程序代码发送至测试服务器,实现构建任务。
8、 根据权利要求7所述的装置,其特征在于,所述装置还包括 解析单元,用于解析所述构建请求,得到程序项目信息。
9、 根据权利要求7所述的装置,其特征在于,所述装置还包括 打包单元,用于将编译后的程序代码进行打包,通知发送单元进行发送。
10、 一种日构建系统,其特征在于,所述系统包括构建服务器、代码服 务器、测试服务器、数据库与客户端,其中,所述构建服务器包括接收单元,用于接收构建请求;获取单元,用于根据所述构建请求获:f又程序代码;编译单元,用于编译所述获取的程序代码;发送单元,用于将编译后的所述程序代码发送至测试服务器,实现构建 任务。
11、 根据权利要求IO所述的系统,其特征在于,所述构建服务器还包括 解析单元,用于解析所述构建请求,得到程序项目信息。
12、 根据权利要求IO所述的系统,其特征在于,所述构建服务器还包括 打包单元,用于将编译后的程序代码进行打包,通知发送单元进行发送。
全文摘要
本发明涉及软件开发领域,公开了一种日构建方法。所述方法包括接收构建请求;根据所述构建请求获取程序代码并进行编译;发送编译后的程序代码至测试服务器,实现构建任务。应用本发明提供的方法,能够根据软件开发的具体需要实时对软件产品的程序代码进行构建,及时检测程序代码的错误,减少人为测试处理过程,提高软件开发效率。相应地,本发明还提供了日构建装置及系统。
文档编号G06F9/44GK101149682SQ20071016602
公开日2008年3月26日 申请日期2007年10月31日 优先权日2007年10月31日
发明者刘继平, 苏召辉 申请人:金蝶软件(中国)有限公司