代码发布的方法及装置与流程

文档序号:11154571阅读:202来源:国知局
代码发布的方法及装置与制造工艺

本发明涉及数据处理技术领域,尤其涉及一种代码发布的方法及装置。



背景技术:

在安卓Android项目开发中,通常使用代码审查软件Gerrit进行代码管理,将项目的代码存储在Gerrit服务器中,当产品发布时使用Jenkins发布不同版本的代码,不同的版本使用不同的版本标记(build)进行区别。发布的build版的代码是完全基于主线代码的某一版本。但实际的项目开发过程中,根据不同的客户的特性需求,需要根据客户的特性需求基于build版本代码进行修改,然后向客户发布具有独有特性的build版本,或者在进行代码测试阶段需要改动build版本中部分代码来验证某些专项功能,然而这些特性和测试过程中的代码修改并不是产品发布的通用build版本所需要的,不可以集成到主线代码中。可以单独针对上述的特性以及测试的特例情况来单独新建代码分支,即针对每个特例情况都新建代码分支得到产品的多个build版本,然后存储在Geriit服务器中,并通过Jenkins根据不同的客户发布不同的build版本。但是,由于产品开发的代码base非常庞大,通常是几十个G,新建代码分支得到的多种具有特性的build版本都需要几十个G的存储空间,这样会造成大量的占用Geriit服务器资源。



技术实现要素:

鉴于上述问题,本发明提供一种代码发布的方法及装置,用以解决现有的代码发布的过程中会造成大量的占用Geriit服务器资源的问题。

为解决上述技术问题,第一方面,本发明提供了一种代码发布的方法,所述方法包括:

获取应用产品个性化功能代码的代码评审编号,所述应用产品个性化功能代码为针对某一应用产品的个性化功能需求对所述应用产品的通用版本代码进行修改的修改代码;

根据所述代码评审编号从代码审查服务器中获取与所述代码评审编号对应的应用产品个性化功能代码;

将所述应用产品个性化功能代码与所述通用版本代码进行本地集成,得到具有个性化功能的应用产品代码;

将具有个性化功能的应用产品代码编译后发布。

第二方面,本发明提供了一种代码发布的装置,所述装置包括:

第一获取单元,用于获取应用产品个性化功能代码的代码评审编号,所述应用产品个性化功能代码为针对某一应用产品的个性化功能需求对所述应用产品的通用版本代码进行修改的修改代码;

第二获取单元,用于根据所述代码评审编号从代码审查服务器中获取与所述代码评审编号对应的应用产品个性化功能代码;

集成单元,用于将所述应用产品个性化功能代码与所述通用版本代码进行本地集成,得到具有个性化功能的应用产品代码;

发布单元,用于将具有个性化功能的应用产品代码编译后发布。

借由上述技术方案,本发明提供的代码发布的方法及装置,对于有个性化需求的应用产品代码发布时,只需根据不同的需求从代码审查服务器中获取对应的应用产品个性化功能代码,然后将其与本地的应用产品的通用版本代码进行集成,而不是获取将通用版本代码和应用产品个性化功能代码集成后的新的版本的代码,因此在代码审查服务器中对于一个应用产品,只需要存储单独的通用版本代码以及独立不同的应用产品个性化功能代码,因此大大节省了代码审查服务器中的存储空间。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例提供的一种代码发布的方法的流程图;

图2示出了本发明实施例提供的另一种代码发布的方法的流程图;

图3示出了本发明实施例提供的一种代码发布的装置的组成框图;

图4示出了本发明实施例提供的另一种代码发布的装置的组成框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为解决现有的代码发布的过程中会造成大量的占用Geriit服务器资源的问题,本发明实施例提供了一种代码发布的方法,如图1所示,该方法包括:

首先需要说明的是本发明实施例适用于任何持续性软件项目的发布,尤其适用于代码base较大的项目中。下面以Android项目为例进行代码发布流程的说明。

101、获取应用产品个性化功能代码的代码评审编号。

需要说明的是代码评审编号即Code Review的编号,在Android项目中,针对任何build版应用产品代码即已经确定的应用产品的通用代码中特定代码的修改代码,都会有对应的代码评审编号。代码评审编号是唯一的。本步骤中的应用产品个性化功能代码即为对特定代码的修改代码。

在实际的应用中,同一个应用产品,发布给不给的用户使用时,可能会需要针对用户的个性化需求对应用产品的通用代码中特定代码进行修改,因此在发布给用户应用产品时,需要将通用代码与修改代码进行合并或集成。因此首先需要获取修改代码,即应用产品个性化功能代码。而产品个性化功能代码由代码评审编号进行区别的,因此在获取应用产品个性化功能代码之前还需要获取应用产品个性化功能代码的代码评审编号。

本步骤中获取的代码评审编号是由外部输入的代码评审编号。

102、根据代码评审编号从代码审查服务器中获取与代码评审编号对应的应用产品个性化功能代码。

在实际的项目开发中,通常一个项目通常有一个开发团队开发的,其中不同的开发人员负责不同的功能的开发,为了对所有的开发人员的代码进行管理,通常使用代码审查软件进行代码的管理,最终得到的项目的所有相关代码都存储在代码审查软件对应的服务器上,在代码审查服务器中不同的应用产品个性化功能代码对应不同的代码评审编号,因此获取应用产品个性化功能代码需要根据代码评审编号从代码审查服务器中获取。

103、将应用产品个性化功能代码与通用版本代码进行本地集成,得到具有个性化功能的应用产品代码。

需要说明的是,应用产品的通用版本代码在集成之前已经在下载在本地了,将应用产品个性化功能代码与通用版本代码进行本地集成可以为将应用产品个性化功能代码与通用版本代码进行适应性的合并,最终得到具有个性化功能的应用产品代码。合并的过程通常是使用可以代码合并工具进行的。

104、将具有个性化功能的应用产品代码编译后发布。

本实施例中代码发布是通过可以进行代码发布的软件执行的,在由步骤103得到具有个性化功能的应用产品代码后,还会自动对具有个性化功能的应用产品代码进行编译,在编译没有问题后进行发布,发布给对应的个性化需求的用户。

本发明实施例提供的代码发布的方法,对于有个性化需求的应用产品代码发布时,只需根据不同的需求从代码审查服务器中获取对应的应用产品个性化功能代码,然后将其与本地的应用产品的通用版本代码进行集成,而不是获取将通用版本代码和应用产品个性化功能代码集成后的新的版本的代码,因此在代码审查服务器中对于一个应用产品,只需要存储单独的通用版本代码以及独立不同的应用产品个性化功能代码,因此大大节省了代码审查服务器中的存储空间。

对图1所示方法的细化及扩展,本发明实施例还提供了一种代码发布的方法,如图2所示:

201、接收任务触发指令。

其中任务触发指令为触发代码发布的指令。需要说明的是,触发指令可以是用户手动操作生成的触发指令,也可以是根据时间周期设置的自动的触发指令。

202、输出填写代码评审编号的提示消息。

输出填写代码评审编号的提示消息,是为了使外部通过提示消息填写代码评审编号。其中的代码评审编号为应用产品个性化功能代码的代码评审编号。应用产品个性化功能代码即为对应用产品的通用代码中特定代码的修改代码。应用产品个性化功能代码是为了满足用户的个性化需求开发的。另外,提示消息可以为提示输入框的形式等。

203、获取应用产品个性化功能代码的代码评审编号。

在接收到外部填写应用产品个性化功能代码的代码评审编号的确认消息之后,获取应用产品个性化功能代码的代码评审编号。应用产品个性化功能代码的代码评审编号是能够区别不同的应用产品个性化功能代码的代码标识,因此获取应用产品个性化功能代码的代码评审编号是为了后续根据代码评审编号获取对应的应用产品个性化功能代码。

204、根据Gerrit服务器的Rest API从Gerrit服务器中获取对应代码评审编号对应的应用产品个性化功能代码。

需要说明的是,本实施例中使用的代码评审软件为Gerrit,所以应用产品个性化功能代码存储在Gerrit服务器中,获取Gerrit服务器中的应用产品个性化功能代码属于远程获取,因此需要通过Gerrit服务器的代表性状态传输接口Rest API。分布在Gerrit服务器中各处的代码资源由统一资源标识符(Uniform Resource Identifier,URI)确定,而Rest是客户端的应用通过URI来获取代码的表示方式,Rest是一组架构约束条件和原则,对应于本实施例中Rest为根据代码评审编号从Gerrit服务器中获取对应的应用产品个性化功能代码的规则。

另外需要说明的是,若应用产品个性化功能代码存储在本地,则使用Gerrit服务器的Git接口获取应用产品个性化功能代码。

205、调用Gerrit中的代码合并工具将应用产品个性化功能代码与通用版本代码进行集成,得到具有个性化功能的应用产品代码。

Gerrit是管理代码的软件,其中包括各种功能,比如代码合并、代码审查等。在进行代码集成时,能够调用Gerrit中的代码合并工具将应用产品个性化功能代码与通用版本代码进行集成,得到具有个性化功能的应用产品代码。

206、将具有个性化功能的应用产品代码编译后发布。

代码发布通常都是发布的编译后的代码,因此在由Gerrit中的代码合并工具将应用产品个性化功能代码与通用版本代码进行集成,得到具有个性化功能的应用产品代码后需要对代码进行编译,在编译没有问题后发布给对应的个性化需求的用户。

另外需要说明的是本实施例中代码发布的方法不仅适用于发布个性化功能的应用产品,还适用于在对应用产品的代码进行功能测试时,为了对某一专项功能进行验证,而需要对应用产品代码中特定的代码进行修改的情况,将上述情况中的修改的代码记作测试代码。在上述情况中测试代码是不能直接集成在应用产品的通用代码中的,因此,也可以将测试代码使用上述图1或者图2中的方式获取测试代码,经测试代码与应用产品的通用代码在本地集成,然后得到用于功能测试的应用产品的代码。具体的获取测试代码与获取应用产品个性化功能代码的方式相同,将测试代码与通用版本代码进行集成的方式与将应用产品个性化功能代码与通用版本代码进行集成的方式是相同的。

另外,对于上述图1以及图2所述的代码发布的方法由Jenkins实现的。Jenkins是用户持续版本代码发布的软件。上述实施例中是将Jenkins与Gerrit实现无损应用产品的通用代码的代码发布。可以在本地灵活的得到不同需求的应用产品代码,满足了实际的个性化需求,还大大的节省了Gerrit服务器中的空间。

另外,被编译后的具有个性化功能的应用产品代码会在Jenkins中进行记录,方便之后的使用。而现有技术中为了节省Gerrit服务器中的空间而采用使开发者从Gerrit服务器获取应用产品的通用代码,然后进行本地开发和编译,再为测试者刷机以进行测试的方式,该种方式在编译完后具有个性化功能的代码不会保留,在下次需要还需要重新进行开发编译,不可重复利用。应用上述实施例中的代码发布的方式可以有效的克服上述不可重复利用的问题。

进一步的,作为对上述各实施例的实现,本发明实施例的另一实施例还提供了一种代码发布的装置,用于实现上述图1以及图2所述的方法。如图3所示,该装置包括:第一获取单元31、第二获取单元32、集成单元33以及发布单元34。

第一获取单元31,用于获取应用产品个性化功能代码的代码评审编号,应用产品个性化功能代码为针对某一应用产品的个性化功能需求对应用产品的通用版本代码进行修改的修改代码;

需要说明的是代码评审编号即Code Review的编号,在Android项目中,针对任何build版应用产品代码即已经确定的应用产品的通用代码中特定代码的修改代码,都会有对应的代码评审编号。代码评审编号是唯一的。本步骤中的应用产品个性化功能代码即为对特定代码的修改代码。

在实际的应用中,同一个应用产品,发布给不给的用户使用时,可能会需要针对用户的个性化需求对应用产品的通用代码中特定代码进行修改,因此在发布给用户应用产品时,需要将通用代码与修改代码进行合并或集成。因此首先需要获取修改代码,即应用产品个性化功能代码。而产品个性化功能代码由代码评审编号进行区别,因此在获取应用产品个性化功能代码之前还需要获取应用产品个性化功能代码的代码评审编号。

本步骤中获取的代码评审编号是由外部输入的代码评审编号。

第二获取单元32,用于根据代码评审编号从代码审查服务器中获取与代码评审编号对应的应用产品个性化功能代码;

在实际的项目开发中,通常一个项目通常有一个开发团队开发的,其中不同的开发人员负责不同的功能的开发,为了对所有的开发人员的代码进行管理,通常使用代码审查软件进行代码的管理,最终得到的项目的所有相关代码都存储在代码审查软件对应的服务器上,在代码审查服务器中不同的应用产品个性化功能代码对应不同的代码评审编号,因此获取应用产品个性化功能代码需要根据代码评审编号从代码审查服务器中获取。

集成单元33,用于将应用产品个性化功能代码与通用版本代码进行本地集成,得到具有个性化功能的应用产品代码;

另外需要说明的是,通用版本代码在集成之前已经在本地了,将应用产品个性化功能代码与通用版本代码进行本地集成可以为将应用产品个性化功能代码与通用版本代码进行适应性的合并,最终得到具有个性化功能的应用产品代码。

发布单元34,用于将具有个性化功能的应用产品代码编译后发布。

本实施例中代码发布是通过可以进行代码发布的软件执行的,在由集成单元33得到具有个性化功能的应用产品代码后,还会自动对具有个性化功能的应用产品代码进行编译,在编译没有问题后进行发布,发布给对应的个性化需求的用户。

第二获取单元32用于:

代码审查服务器为Gerrit服务器,根据Gerrit服务器的代表性状态传输接口Rest API从Gerrit服务器中获取对应代码评审编号对应的应用产品个性化功能代码。

需要说明的是,本实施例中应用产品个性化功能代码存储在Gerrit服务器中,获取Gerrit服务器中的应用产品个性化功能代码属于远程获取,因此需要通过Gerrit服务器的代表性状态传输接口Rest API。分布在Gerrit服务器中各处的代码资源由统一资源标识符(Uniform Resource Identifier,URI)确定,而Rest是客户端的应用通过URI来获取代码的表示方式,Rest是一组架构约束条件和原则,对应于本实施例中Rest为根据代码评审编号从Gerrit服务器中获取对应的应用产品个性化功能代码的规则。

另外需要说明的是,若应用产品个性化功能代码存储在本地,则使用Gerrit服务器的Git接口获取应用产品个性化功能代码。

如图4所示,装置还包括:

接收单元35,用于在获取应用产品个性化功能代码的代码评审编号之前,接收任务触发指令,任务触发指令为触发代码发布的指令;

其中任务触发指令为触发代码发布的指令。需要说明的是,触发指令可以是用户手动生成的触发指令,也可以是根据时间周期设置的自动的触发指令。

输出单元36,用于输出填写代码评审编号的提示消息。

输出填写代码评审编号的提示消息,是为了使外部通过提示消息填写代码评审编号,其中的代码评审编号为应用产品个性化功能代码的代码评审编号。应用产品个性化功能代码即为对应用产品的通用代码中特定代码的修改代码。应用产品个性化功能代码是为了满足用户的个性化需求开发的。另外,提示消息可以为提示输入框的形式等。

集成单元33用于:

调用Gerrit中的代码合并工具将应用产品个性化功能代码与通用版本代码进行集成。

Gerrit是管理代码的软件,其中包括各种功能,比如代码合并、代码审查等。在进行代码集成时,能够调用Gerrit中的代码合并工具将应用产品个性化功能代码与通用版本代码进行集成,得到具有个性化功能的应用产品代码。

第二获取单元32中应用产品个性化功能代码包括:

对应用产品进行功能测试的测试代码。

需要说明的是本实施例中代码发布的方法不仅适用于发布个性化功能的应用产品,还适用于在对应用产品进行功能测试时,为了对某一专项功能进行验证,而需要对应用产品代码中特定的代码进行修改的情况,将上述情况中的修改的代码记作测试代码。在上述情况中测试代码是不能直接集成在应用产品的通用代码中的,因此,也可以将测试代码使用上述图3或者图4中的方式获取测试代码,经测试代码与应用产品的通用代码在本地集成,然后得到用于功能测试的应用产品的代码。具体的获取测试代码与获取应用产品个性化功能代码的方式相同,将测试代码与通用版本代码进行集成的方式与将应用产品个性化功能代码与通用版本代码进行集成的方式是相同的。

本发明实施例提供的代码发布的装置,对于有个性化需求的应用产品代码发布时,只需根据不同的需求从代码审查服务器中获取对应的应用产品个性化功能代码,然后将其与本地的应用产品的通用版本代码进行集成,而不是获取将通用版本代码和应用产品个性化功能代码集成后的新的版本的代码,因此在代码审查服务器中对于一个应用产品,只需要存储单独的通用版本代码以及独立不同的应用产品个性化功能代码,因此大大节省了代码审查服务器中的存储空间。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如代码发布的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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