自动编译的方法和系统与流程

文档序号:11154560阅读:549来源:国知局
自动编译的方法和系统与制造工艺

本发明涉及计算机领域,特别涉及一种自动编译的方法和系统。



背景技术:

ODM(Original Designed Manufacture),是指为客户提供从产品研发到产品生产的全套服务。客户只需提出产品的功能、性能甚至只需提供相关的构思,ODM厂商将产品从设想变为现实。

拥有产品研发能力是ODM企业生存与发展的关键环节。国内的ODM企业大多是制造起家,在组织大规模生产方面有比较丰富的经验。相反,其研发管理的经验不是很足。

现有自动编译项目代码的实现方式有很多,最普遍的方式是通过脚本来实现自动编译,但其无法实现对项目和服务器的动态分配。由于每天有大量代码需要自动编译,需要大量服务器,最好能够每台服务器都参与编译,但是如果要求每台服务器都能够编译任意版本,那么就需在每台服务器都存储所有源码,这样会浪费很多服务器存储空间。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种自动编译的方法和系统。所述技术方案如下:

一方面,一种自动编译的方法,包括以下步骤:

设定编译时间;

到达编译时间后查询可编译版本;

查询到可编译版本后自动将编译任务分配给服务器,然后编译项目代码。

进一步的,设定编译时间的具体步骤为:

预定编译时间;

等待预定编译时间;

判断是否到达预定编译时间;

如判断为否,则继续等待直到到达预定编译时间;

如判断为是,则进行查询可编译版本步骤。

进一步的,查询可编译版本的具体步骤为:

连接数据库,查询当前时间是否有未编译的版本号,将未编译的版本号加入可编译版本列表;

根据数据库中查询返回的可编译列表是否为空,判断是否存在可编译版本;

若为空,表明没有可编译版本,则判断为否,返回等待预定编译时间步骤,重新等待下次预定编译时间;

若不为空,表明存在可编译版本,则判断为是,将可编译版本作为编译任务,进行项目代码编译步骤。

进一步的,进行项目代码编译的具体步骤为:

迭代可编译版本,同时查询所有编译服务器,以配置有编译任务版本库的编译服务器作为可用编译服务器;

根据各个可用编译服务器上配置的版本库名称和最大可编译的任务数量,对可用编译服务器进行分配;

发送编译任务到相应的可用编译服务器;

可用编译服务器分别独自编译项目代码。

进一步的,对可用编译服务器进行分配的具体方法为:(1)根据版本库匹配将每个编译任务分配到对应的可用编译服务器,然后每个可用编译服务器根据是否达到最大可编译的任务数量,确定是否接收编译任务;(2)若每个可用编译服务器上编译的任务数量都达到最大值,而可编译版本列表中还有未分配的编译任务,此时采用平均分配原则,按顺序将可编译任务依次分配到匹配版本库的可用编译服务器。

可选的,可用编译服务器可以是一个或多个。

可选的,单个可用编译服务器编译项目代码后,判断单个可用编译服务器是否完成编译任务,如判断为否,则发送错误信息到相关人员;

如判断为是,则发送版本描述到相关人员,完成项目代码编译。

可选的,所述相关人员包括代码提交人员和项目管理人员。

另一方面,提供了一种自动编译的系统,包括:

定时模块,用于设定编译开始时间;

查询模块,与定时模块连接,用于查询JIRA是否有可编译版本;

编译模块,与查询模块连接,用于编译项目代码。

进一步的,定时模块包括:

时间设定模块,用于设定编译开始时间;

时间判断模块,与时间设定模块连接,用于判断是否到达设定的编译开始时间。

进一步的,查询模块包括:

编译版本查询模块,与时间判断模块连接,用于查询JIRA编译版本;

编译版本判断模块,与编译版本查询模块连接,用于判断是否存在可编译的JIRA版本。

进一步的,编译模块包括:

版本迭代模块,与编译版本判断模块连接,用于迭代可编译版本;

服务器查询模块,与编译版本判断模块连接,用于查询可用的编译服务器;

服务器分配模块,与版本迭代模块和服务器查询模块分别连接,用于对可用的编译服务器分配编译任务,并发送编译任务给相应的服务器;

编译服务器模块,与服务器分配模块连接,用于接收编译任务,并编译相应的项目代码。

可选的,自动编译的系统还包括通知模块,与编译模块连接,用于发送通知。

进一步的,通知模块包括:

编译判断模块,与编译服务器连接,用于判断是否完成本服务器的项目代码编译任务;

发送模块,与编译判断模块连接,用于发送版本描述或错误信息。

本发明实施例提供的技术方案带来的有益效果是:本发明通过对每台服务器指定编译某一源码库的项目,有效控制每台服务器存储的代码量,同时有效的对编译项目进行自动分配,避免同一服务器存在太多任务,提高编译效率,节省人力资源,充分利用服务器资源。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的自动编译的方法流程图;

图2是本发明实施例一提供的自动编译的方法流程图;

图3是本发明实施例二提供的自动编译的系统结构图;

图4是本发明实施例二提供的自动编译的系统结构图;

图5是本发明实施例二提供的自动编译的系统结构图;

图6是本发明实施例二提供的自动编译的系统结构图;

图7是本发明实施例二提供的自动编译的系统结构图;

图8是本发明实施例二提供的自动编译的系统结构图;

图9是本发明实施例二提供的自动编译的系统结构图;

图10是本发明实施例二提供的自动编译的系统结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本发明提供一种自动编译的方法如图1所示。包括以下步骤:首先执行步骤S101,设定编译时间;然后进行步骤S102,到达编译时间后查询可编译版本;最后进行步骤S103,查询到可编译版本后自动将编译任务分配给服务器,然后编译项目代码。

具体的,如图2所示:

步骤S201,预定编译时间。根据指令设定编译开始时间、编译结束时间和/或编译总时间,一般可设定编译开始时间为0点,编译结束时间为9点。

步骤S202,等待预定编译时间。编译时间设定好后,系统进入待机状态,等待设定的编译开始时间。

步骤S203,判断是否到达预定编译时间。在等待预定编译时间的过程中,系统定期扫描当前时间并进行判定,判断是否到达预定的编译开始时间。

如判断为否,则返回步骤S202,重复步骤S202和S203,直至到达预定编译时间。

如判断为是,则进行步骤S204。

步骤S204,查询编译版本:连接JIRA的MySQL数据库,查询当前时间,是否有未编译的版本号,将未编译的版本号加入可编译列表。在本实施例中,对当前时间的查询过程精确到天。

步骤S205,判断是否存在可编译版本:根据从JIRA的MySQL数据库中查询返回的可编译列表是否为空,判断是否存在可编译版本。

若为空,表明没有可编译版本,则判断为否,返回步骤S202,重新等待下次预定编译时间。

若不为空,表明存在可编译版本,则判断为是,将可编译版本作为编译任务,进行步骤S206。

步骤S206,迭代可编译版本,同时查询所有编译服务器,以配置有编译任务版本库的编译服务器作为可用编译服务器。

步骤S207,分配可用编译服务器:根据各个可用编译服务器上配置的版本库名称和最大可编译的任务数量,对可用编译服务器进行分配。

每个编译服务器指定了可编译的版本库和最大可编译的任务数量,而可编译版本列表中的每个版本都指定了唯一的版本库。规则一:先迭代可编译版本列表,根据版本库匹配将每个可编译版本分配到对应的可用编译服务器,然后每个可用编译服务器根据是否达到最大可编译的任务数量,确定是否接收新的可编译版本。规则二:若每个可用编译服务器上编译的任务数量都达到极限值,而可编译版本列表中还有未分配的可编译版本,此时采用平均分配原则,按顺序将可编译版本依次分配到匹配版本库的可用编译服务器编译。通过上述两个规则,使每个编译服务器达到负载均衡的目标,避免资源浪费。

步骤S208,发送任务到相应的可用编译服务器。根据上一步分配的结果,将编译任务分别发送给对应的可用编译服务器。

步骤S209,可用编译服务器分别独自编译项目代码。在本实施例中,编译服务器可以是一个,也可以是多个,本发明对此不作限制。

单个可用编译服务器编译项目代码后,进行步骤S210,判断单个可用编译服务器是否完成编译任务,如判断为是,则进行步骤S211;如判断为否,则进行步骤S212。

步骤S211,发送版本描述(release notes)到相关人员,完成项目代码编译。当判断得到单个可用编译服务器已经完成项目代码的编译任务,此时将发送版本描述给相关人员,相关人员可以是代码提交人员、项目管理人员或其他人员,本发明对此不作限制。

步骤S212,发送错误信息到相关人员。当单个可用编译服务器未能完成项目代码的编译任务,则将未完成编译的错误信息,发送给相应的代码提交人员和项目管理人员。

本发明通过对每台服务器指定编译某一源码库的项目,有效控制每台服务器存储的代码量,同时有效的对编译项目进行自动分配,避免同一服务器存在太多任务,提高编译效率,节省人力资源,充分利用服务器资源。

实施例二

本发明还提供一种自动编译的系统如图3所示,包括定时模块100、查询模块200和编译模块300。定时模块100用于设定编译开始时间。查询模块200,与定时模块100连接,用于查询JIRA是否有可编译版本。编译模块300,与查询模块200连接,用于编译项目代码。

具体的,如图4所示,定时模块100包括:时间设定模块101和时间判断模块102。

如图5所示,查询模块200包括:编译版本查询模块201和编译版本判断模块202。

如图6所示,编译模块300包括:版本迭代模块301、服务器查询模块302、服务器分配模块303和编译服务器模块304。

如图7所示,时间设定模块101用于设定编译开始时间。时间判断模块102与时间设定模块101连接,用于判断是否到达设定的编译开始时间。编译版本查询模块201与时间判断模块102连接,用于查询JIRA编译版本。编译版本判断模块202与编译版本查询模块201连接,用于判断是否存在可编译的JIRA版本。版本迭代模块301与编译版本判断模块202连接,用于迭代可编译版本。服务器查询模块302与编译版本判断模块202连接,用于查询可用的编译服务器。服务器分配模块303与版本迭代模块301和服务器查询模块302分别连接,用于发送编译任务给相应的服务器。编译服务器模块304与服务器分配模块303连接,用于接收编译任务,并编译相应的项目代码。

如图8所示,可选的,自动编译的系统还包括:通知模块400,与编译模块300连接,用于发送通知。

具体的,如图9所示,通知模块400包括编译判断模块401和发送模块402。

如图10所示,编译判断模块401与编译服务器模块304连接,用于判断是否完成本服务器的项目代码编译任务;发送模块402与编译判断模块401连接,用于发送通知到相关人员。通知可以是版本描述(release notes)、错误信息或其他相关信息,相关人员可以是代码提交人员、项目管理人员或其他人员,本发明对此不作限制。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1