CN108897543A - 版本的临时编译系统、方法、装置及存储介质 - Google Patents
版本的临时编译系统、方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108897543A CN108897543A CN201810694657.0A CN201810694657A CN108897543A CN 108897543 A CN108897543 A CN 108897543A CN 201810694657 A CN201810694657 A CN 201810694657A CN 108897543 A CN108897543 A CN 108897543A
- Authority
- CN
- China
- Prior art keywords
- file
- version
- server
- interim
- compiler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本申请涉及一种版本的临时编译系统、方法、装置及存储介质,属于计算机技术领域,该系统包括:终端根据替换文件生成临时编译请求;并将临时编译请求发送至第一服务器;第一服务器将临时编译请求中的替换文件存储至预设位置,得到存储地址;根据存储地址生成版本构建指令,将该版本构建指令发送至临时编译请求中构建指令指示的构建平台;构建平台根据版本构建指令调用编译服务器;编译服务器根据存储地址将替换文件下载至指定位置;编译服务器在指定位置根据替换文件对待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将临时版本发布至版本服务器;既可以提高版本临时编译的效率,也可以提高临时编译的版本的可靠性。
Description
技术领域
本申请涉及版本的临时编译系统、方法、装置及存储介质,属于计算机技术领域。
背景技术
软件从开发到版本发布至少需要经历下面几个阶段:开发人员在终端开发代码后,将该代码发送至代码管理服务器;然后,编译服务器下载代码管理服务器中的代码进行版本编译,编译完成后发布到版本服务器。
若开发人员需要临时对已发送至编译服务器中的部分源码文件进行修改,为了不影响正式项目分支的开发进程,则可以在本地修改少量代码,使用修改后的代码文件对该部分源码文件进行替换。
在使用修改后的代码文件对部分源码文件进行替换时,修改后的代码文件不需要直接提交到代码管理服务器,而是将修改后的代码文件提供给配管团队,由配管团队控制编译服务器在对应的项目分支目录对需要修改的源码文件进行替换,编译临时版本。
然而,人工控制编译服务器替换源码文件的效率较低,且对于没有控制编译服务器经验的配管人员来说,在项目分支目录对需要修改的源码文件进行替换的可靠性也较差。
发明内容
本申请提供了一种版本的临时编译系统、方法、装置及存储介质,可以解决人工控制编译服务器替换源码文件的效率较低、可靠性较差的问题。本申请提供如下技术方案:
第一方面,提供了一种版本的临时编译系统,所述系统包括:
终端,用于根据替换文件生成临时编译请求;并将所述临时编译请求发送至第一服务器,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
所述第一服务器,用于获取所述临时编译请求;将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;根据所述存储地址生成版本构建指令;并向所述构建地址指示的所述构建平台发送所述版本构建指令;
所述构建平台,用于获取所述版本构建指令;根据所述版本构建指令调用编译服务器;
所述编译服务器,用于根据所述版本构建指令中的所述存储地址将所述替换文件下载至指定位置;在预设的替换位置,根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
可选地,所述编译服务器还用于:
在所述对替换后的源码进行编译之后,将所述指定位置和所述替换位置还原至替换前的初始状态。
可选地,所述编译服务器,用于:
删除所述指定位置中的所述替换文件、对所述替换文件解压后得到的代码文件和代码目录;所述代码文件用于替换所述待替换的源码文件,所述代码目录用于确定与所述代码文件相对应的替换位置;
删除所述替换位置中的代码文件;
在所述替换位置还原所述待替换的源码文件。
可选地,所述替换文件包括代码文件和所述代码文件的替换类型,所述替换类型为:覆盖文件、补丁文件、移除文件和添加文件中的至少一种;所述编译服务器,用于:
在所述代码文件的替换类型为所述覆盖文件时,使用所述代码文件覆盖所述待替换的源码文件;
在所述代码文件的替换类型为所述补丁文件时,使用具有补丁标识的所述代码文件对所述待替换的源码文件打补丁;
在所述代码文件的替换类型为所述移除文件时,删除与所述代码文件相对应的所述待替换的源码文件;
在所述代码文件的替换类型为所述添加文件时,添加所述代码文件。
可选地,所述第一服务器,用于:
将所述替换文件按照预设规则进行转换,得到转换后的替换文件;
将所述转换后的替换文件存储至第二服务器,所述第二服务器为所述预设位置;
其中,所述预设规则包括:将所述替换文件的打包格式转换为指定格式;和/或,将所述替换文件的名称按照预设命名规则重新命名。
可选地,所述构建平台,用于在所述获取所述版本构建指令之后,将所述存储地址赋值给预设参数;将所述预设参数传输至所述编译服务器;
所述编译服务器,用于检测所述预设参数是否为空;在所述预设参数不为空时,触发执行所述根据所述版本构建指令中的所述存储地址将所述替换文件下载至指定位置的步骤。
可选地,所述替换文件中代码文件的目录结构与所述待替换的源码文件的目录结构一致。
第二方面,提供了一种版本的临时编译方法,所述方法包括:
获取终端根据替换文件生成的临时编译请求,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;
根据所述存储地址生成版本构建指令;
向所述构建地址指示的所述构建平台发送所述版本构建指令,所述版本构建指令用于触发所述构建平台调度编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
第三方面,提供了一种版本的临时编译方法,所述方法包括:
获取版本构建指令,所述版本构建指令是第一服务器根据替换文件的存储地址生成的;所述替换文件由终端生成,并携带在临时编译请求中发送至所述第一服务器;
根据所述版本构建指令调用编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
第四方面,提供了一种版本的临时编译方法,所述方法包括:
根据构建平台的调用将替换文件下载至指定位置;所述替换文件由终端生成,并携带在临时编译请求中发送至第一服务器;由第一服务器存储至预设位置得到存储地址,根据该存储地址生成版本构建指令并发送至所述构建平台;所述版本构建指令用于触发所述构建平台调用编译服务器;
在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;
对替换后的源码进行编译,得到临时版本;
将所述临时版本发布至版本服务器。
第五方面,提供了一种版本的临时编译装置,所述装置包括:
请求获取模块,用于获取终端根据替换文件生成的临时编译请求,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
文件存储模块,用于将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;
指令生成模块,用于根据所述存储地址生成版本构建指令;
指令发送模块,用于向所述构建地址指示的所述构建平台发送所述版本构建指令,所述版本构建指令用于触发所述构建平台调度编译服务器,以供所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
第六方面,提供了一种版本的临时编译装置,所述装置包括:
指令获取模块,用于获取版本构建指令,所述版本构建指令是第一服务器根据替换文件的存储地址生成的;所述替换文件由终端生成,并携带在临时编译请求中发送至所述第一服务器;
服务器调用模块,用于根据所述版本构建指令调用编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
第七方面,提供了一种版本的临时编译装置,所述装置包括:
文件下载模块,用于根据构建平台的调用将替换文件下载至指定位置;所述替换文件由终端生成,并携带在临时编译请求中发送至第一服务器;由第一服务器存储至预设位置得到存储地址,根据该存储地址生成版本构建指令并发送至所述构建平台;所述版本构建指令用于触发所述构建平台调用编译服务器;
文件替换模块,用于在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;
代码编译模块,用于对替换后的源码进行编译,得到临时版本;
版本发布模块,用于将所述临时版本发布至版本服务器。
第八方面,提供一种版本的临时编译装置,所述装置包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现第二方面至第四方面中任一方面所述的版本的临时编译方法。
第九方面,提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序由所述处理器加载并执行以实现第二方面至第四方面中任一方面所述的版本的临时编译方法。
本申请的有益效果在于:通过在终端根据替换文件生成临时编译请求并发送至第一服务器;由第一服务器根据替换文件的存储地址生成版本构建指令,并向构建待替换的源码文件的构建平台发送该版本构建指令,使得构建平台根据该版本构建指令调用编译服务器,以供编译服务器将替换文件下载至指定位置,并根据替换文件对待替换的源码文件执行临时替换操作,对替换后的源码进行编译,得到临时版本并将该临时版本发布至服务器;可以解决人工控制编译服务器在指定位置替换待替换的源码文件的效率较低、可靠性较差的问题;由于用户只需要将修改后的代码文件上传至终端,后续版本的临时编译流程是自动化完成,而无需人工参与,因此,既可以提高版本临时编译的效率,也可以提高临时编译的版本的可靠性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。
附图说明
图1是本申请一个实施例提供的版本的临时编译系统的结构示意图;
图2是本申请一个实施例提供的版本的临时编译方法的流程图;
图3是本申请一个实施例提供的发送临时编译请求的示意图;
图4是本申请一个实施例提供的版本的临时编译方法的流程图;
图5是本申请一个实施例提供的版本的临时编译装置的框图;
图6是本申请一个实施例提供的版本的临时编译装置的框图;
图7是本申请一个实施例提供的版本的临时编译装置的框图;
图8是本申请一个实施例提供的版本的临时编译装置的框图。
具体实施方式
下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
首先,对本申请涉及的若干名词进行解释。
待替换的源码文件:已开发的项目的分支中需要进行修改的源码文件。
代码文件:是指用于替换待替换的源码文件的代码构成的文件,该代码文件可以由开发人员编写得到,可以直接对待替换的源码文件进行替换。
替换文件:对代码文件按照待替换的源码文件的目录结构进行打包之后得到的文件,也即,替换文件包括打包之后的代码文件;换句话说,对替换文件进行解压之后可以得到代码文件。在根据替换文件对待替换的源码文件进行替换时,需要先对替换文件进行解压,然后,使用得到解压得到的代码文件对待替换的源码文件进行替换。
图1是本申请一个实施例提供的版本的临时编译系统的结构示意图,如图1所示,该系统至少包括:终端110、第一服务器120、构建平台130、编译服务器140和版本服务器150。
终端110可以是计算机、个人计算机、手机、平板电脑、可穿戴式设备等具有通信功能的电子设备。
终端110用于根据替换文件生成临时编译请求,并将该临时编译请求发送至第一服务器120。其中,临时编译请求用于请求根据替换文件来替换编译服务器140中已获取的待替换的源码文件,得到替换后的源码,并对该替换后的源码进行临时编译。
临时编译请求中包括替换文件和构建待替换的源码文件的构建平台的构建地址。
可选地,终端110通过有线或者无线的方式与第一服务器120进行通信。示意性地,终端110基于超文本传输协议(HyperText Transfer Protocol,HTTP)与第一服务器120进行无线通信。
第一服务器120可以是独立的服务器主机;或者,也可以是多个服务器主机构成的服务器平台,本实施例对此不作限定。可选地,第一服务器120为网页(web)服务器。
第一服务器120用于获取临时编译请求;将临时编译请求中的替换文件存储至预设位置,得到替换文件的存储地址;根据存储地址生成版本构建指令;并向构建地址指示的构建平台130发送版本构建指令。
其中,预设位置可以用于指示第一服务器120中的存储器中的位置;或者,也可以指示与第一服务器120相独立的第二服务器160,本实施例对此不作限定。
可选地,第一服务器120还可以将替换文件按照预设规则进行转换,得到转换后的替换文件;将转换后的替换文件存储至第二服务器160。其中,预设规则包括:将替换文件的格式转换为指定格式;和/或,将替换文件的名称按照预设命名规则重新命名。
可选地,第二服务器160也可以称为替换文件存储服务器、或者存储服务器等,本实施例不对第二服务器160的名称作限定。
可选地,第一服务器120通过有线或者无线的方式与构建平台130进行通信。构建平台130可以运行于服务器中;或者,也可以运行于计算机等终端设备中,本实施例对此不作限定。
构建平台130用于获取第一服务器120发送的版本构建指令;根据该版本构建指令调用编译服务器140。
可选地,构建平台130可以是Jenkins构建平台;或者,也可以是其它的具有类似功能的构建平台,本实施例对此不作限定。
构建平台130通过有线或者无线的方式与编译服务器140进行通信。编译服务器140的数量可以为一个;或者,也可以为多个,本实施例对此不作限定。
编译服务器140用于根据版本构建指令中的存储地址将替换文件下载至指定位置;在预设的替换位置根据替换文件对待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将临时版本发布至版本服务器150。预设的替换位置可以是待替换的源码文件所属的替换位置。
可选地,编译服务器140通过构建平台130将临时版本发布至版本服务器150,此时,构建平台130通过有线或者无线的方式与版本服务器150进行通信。
相应地,版本服务器150获取编译服务器140发送的临时版本并发布。
图2是本申请一个实施例提供的版本的临时编译方法的流程图,本实施例以该方法应用于图1所示的版本的临时编译系统中为例进行说明。该方法至少包括以下几个步骤:
步骤201,终端根据替换文件生成临时编译请求。
可选地,若编译服务器已获取到的版本中的部分源码文件需要进行修改,比如:由于用户的临时性需求、客户需要、内部参数调整等原因需要对部分源码文件进行修改,则终端可以获取用于替换该源码文件的代码文件,然后,对该代码文件进行打包,得到替换文件;根据该替换文件生成临时编译请求。终端获取到的代码文件可以是用户编写的;或者,也可以是其它设置发送的;或者,是可移动存储介质中存储的,本实施例不对代码文件的获取方式作限定。
其中,临时编译请求用于请求根据替换文件替换编译服务器中已获取的待替换的源码文件,得到替换后的源码,并对该替换后的源码进行临时编译。
可选地,终端在对代码文件进行打包时,保持该代码文件的文件目录的目录结构不变进行打包得到替换文件,以保证代码文件的目录结构与待替换的源码文件的目录结构一致,这样,编译服务器在对待替换的源码文件执行替换操作时,可以根据相同的目录结构查找到对应的代码文件进行替换。终端对代码文件进行打包可以是根据开发人员选择的打包方式对代码文件打包;或者,也可以是终端后台按照默认的方式对代码文件打包,本实施例对此不作限定。
可选地,替换文件还可以包括其他内容,比如:替换文件还包括替换文件的替换类型,该替换类型用于指示编译服务器执行替换操作时的替换方式。示意性地,替换类型包括覆盖文件、补丁文件、移除文件和添加文件中的至少一种。
临时编译请求包括替换文件和构建待替换的源码文件的构建平台的构建地址。可选地,临时编译请求还可以包括其他内容,比如编译服务器编译替换后的源码的编译方式、待替换的源码文件的模块标识等编译参数,本实施例不对临时编译请求中携带的内容作限定。
步骤202,终端将临时编译请求发送至第一服务器。
可选地,参考图3,第一服务器为终端提供有web页面300,该web页面300至少包括替换类型选择控件310、代码文件上传控件320、文件目录选择控件330和临时编译控件340。终端在web页面300中显示至少一种替换类型,比如:显示覆盖文件、补丁文件、移除文件和添加文件,在接收到作用于其中至少一种替换类型对应的类型选择控件310上的触发操作后,将该触发操作指示的替换类型确定为用户选择的替换类型。终端在接收到作用于代码文件上传控件320上的触发操作时,显示本地文件,接收用户从本地文件中选择的代码文件。终端在接收到作用于文件目录选择控件330上的触发操作时,显示至少一个文件目录;接收用户从至少一个的文件目录中选择的文件目录。该至少一个文件目录可以是文件形式,和/或,也可以是目录形式,本实施例对此不作限定。然后,终端将代码文件按照用户选择的替换类型进行标记,保持用户选择的文件目录的目录结构不变,将标记后的代码文件进行打包,得到替换文件。终端在接收到作用于临时编译控件340上的触发操作时,根据替换文件生成临时编译请求,将该临时编译请求通过与第一服务器之间的通信连接发送至第一服务器。
需要补充说明的是,上述选择替换类型、选择代码文件、生成替换文件和发送临时编译请求的过程仅是示意性地,在实际实现时,也可以不按照上述过程实现,本实施例对此不作限定。
步骤203,第一服务器获取临时编译请求,将临时编译请求中的替换文件存储至预设位置,得到替换文件的存储地址。
可选地,第一服务器获取到临时编译请求之后,获取临时编译请求中的替换文件,将该替换文件按照预设规则进行转换,得到转换后的替换文件;将转换后的替换文件存储至第二服务器。第二服务器即为预设位置。当然,第二位置也可以是第一服务器中的存储位置,本实施例对此不作限定。
其中,预设规则包括但不限于:将替换文件的打包格式转换为指定格式;和/或,将替换文件的名称按照预设命名规则重新命名。其中,预设命名规则可以为:按照名称从前至后的顺序依次为:时间戳、项目名称、申请人、代码文件标识,当然,预设命名规则也可以是其它规则,本实施例对此不作限定。
比如:第一服务器将替换文件的打包格式转换为zip格式、将替换文件的名称修改为:20170803_TPS_UMS_SP3_liming_tmp.zip,其中,20170803为时间戳、TPS_UMS_SP3为项目名称、liming为申请人、tmp为代码文件标识。
步骤204,第一服务器根据存储地址生成版本构建指令。
版本构建指令用于触发构建平台调用编译服务器,以供该编译服务器根据存储地址指示的替换文件构建临时版本。其中,存储地址携带在版本构建指令中。
可选地,在临时编译请求中还包括编译方式时,第一服务器还可以将该编译方式携带在版本构建指令中。
步骤205,第一服务器向构建地址指示的构建平台发送版本构建指令。
在临时编译请求中包括构建平台的构建地址,第一服务器将发送版本构建指令发送至该构建地址指示的构建平台。
步骤206,构建平台获取版本构建指令;根据版本构建指令调用编译服务器。
可选地,构建平台运行预先配置的脚本来调用编译服务器。
可选地,构建平台中配置有预设参数,该预设参数用于存储版本构建指令中的存储地址。在获取版本构建指令之后,构建平台将存储地址赋值给预设参数;并在调用编译服务器之后,将该预设参数传输至编译服务器。比如:构建平台中配置的预设参数为字符串类型overlay,构建平台接收到版本构建指令后,若该版本构建指令中包括存储地址,则将该存储地址赋值给overlay;并在调度编译服务器之后,将overlay的值传输至编译服务器。
步骤207,编译服务器根据版本构建指令中的存储地址将替换文件下载至指定位置。
可选地,在存储地址指示第二服务器时,该第二服务器为可供其他服务器下载文件的服务器,此时,编译服务器根据该存储地址从第二服务器下载替换文件,并将该替换文件存储至指定位置。本实施例不对指定位置作限定,比如:指定位置是待替换的源码文件所属的项目分支工作区的根目录。
可选地,编译服务器在下载替换文件之前检测预设参数是否为空;在预设参数不为空时,说明构建平台接收到的版本构建指令为用于临时编译待替换的源码文件的版本构建指令,此时,编译服务器根据存储地址将替换文件下载至指定位置。在预设参数为空时,说明构建平台接收到的指令不是用于临时编译待替换的源码文件的版本构建指令,此时,编译服务器无需执行替换操作,而是对已获取到的源码进行编译,将编译得到的版本发送至版本服务器发布,流程结束。比如:编译服务器接收到预设参数overlay之后,检测overlay的值是否为空,在该值不为空时,根据存储地址将替换文件下载至指定位置;在该值为空时,对已获取到的源码进行编译,将编译后得到的版本发送至版本服务器发布,流程结束。
步骤208,编译服务器在预设的替换位置根据替换文件对待替换的源码文件执行临时替换操作。
其中,替换位置可以与指定位置相同;或者,也可以与指定位置不同。示意性地,替换位置为存储待替换的源码文件的位置;或者,为待替换的源码文件所属的项目分支工作区的根目录,本实施例不对替换位置作限定。
可选地,编译服务器在执行临时替换操作之前,对待替换的源码文件进行复制,并对复制得到的待替换的源码文件进行标记,得到标记后的源码文件。标记后的源码文件用于对替换位置进行还原。
可选地,编译服务器获取到替换文件之后,在指定位置解压替换文件,得到代码文件和该代码文件的代码目录;对于每个代码文件,根据代码目录确定路径与该代码文件的路径相同的待替换源码文件,使用该代码文件对该待替换的源码文件执行临时替换操作。在解压替换文件时,编译服务器保持代码文件的目录结构不变进行解压,由于代码文件的目录结构与待替换的源码文件的目录结构一致,这样,编译服务器可以根据代码文件的代码目录确定出待替换的源码文件。
可选地,替换文件还包括代码文件的替换类型,该替换类型用于指示编译服务器执行替换操作时的替换方式。示意性地,替换类型包括覆盖文件、补丁文件、移除文件和添加文件中的至少一种。其中,补丁文件携带有补丁标识,比如:#patch;移除文件携带有移除标识,比如:#del。
在代码文件的替换类型为覆盖文件时,使用代码文件覆盖待替换的源码文件。示意性地,编译服务器根据代码目录遍历代码文件,使用遍历得到的代码文件覆盖路径与该代码文件的路径相同、且文件名称与该代码文件的文件名称相同的待替换的源码文件。比如:文件名称为filename.cpp的代码文件的路径为a/b/c/d,则使用该代码文件覆盖路径为a/b/c/d、文件名称为filename.cpp的待替换的源码文件。
在代码文件的替换类型为补丁文件时,使用具有补丁标识的代码文件对待替换的源码文件打补丁。示意性地,编译服务器根据代码目录遍历代码文件,使用具有补丁标识的代码文件,与路径与该代码文件的路径相同、且文件名称与该代码文件的文件名称相同的待替换的源码文件进行合并(即打补丁)。比如:文件名称为filename.cpp#patch的代码文件的路径为a/b/c/d,其中,“#patch”为补丁标识,编译服务器使用该代码文件与路径为a/b/c/d、文件名称为filename.cpp的待替换的源码文件进行合并,得到补丁后的源码文件。
在代码文件的替换类型为移除文件时,将与代码文件相对应的待替换的源码文件删除。示意性地,编译服务器根据代码目录遍历代码文件,得到具有移除标识的代码文件;将路径与该代码文件的路径相同、且文件名称与该代码文件的文件名称相同的待替换的源码文件删除。比如:文件名称为filename.cpp#del的代码文件的路径为a/b/c/d,其中,“#del”为移除标识,编译服务器将路径为a/b/c/d、文件名称为filename.cpp的待替换的源码文件删除。
在代码文件的替换类型为添加文件时添加代码文件。示意性地,编译服务器根据代码目录遍历代码文件,若不存在路径与该代码文件的路径相同的待替换源码文件,则按照该代码文件的路径,添加该代码文件。比如:文件名称为filename.cpp的代码文件的路径为a/b/c/d,而在路径a/b/c/d下不存在名称为filename.cpp的源码文件,则编译服务器将该代码文件添加至路径为a/b/c/d。
步骤209,编译服务器对替换后的源码进行编译,得到临时版本;将该临时版本发布至版本服务器。
可选地,编译服务器通过构建平台将临时版本发布至版本服务器。
可选地,编译服务器还可以根据编译结果生成编译报告,并将该编译报告通过构建平台发送至终端;或者,编译服务器直接将编译报告发送至终端。
综上所述,本实施例提供的版本的临时编译方法,通过在终端根据替换文件生成临时编译请求并发送至第一服务器;由第一服务器根据替换文件的存储地址生成版本构建指令,并向构建待替换的源码文件的构建平台发送该版本构建指令,使得构建平台根据该版本构建指令调用编译服务器,以供编译服务器将替换文件下载至指定位置,并根据替换文件对待替换的源码文件执行临时替换操作,对替换后的源码进行编译,得到临时版本并将该临时版本发布至服务器;可以解决人工控制编译服务器在指定位置替换待替换的源码文件的效率较低、可靠性较差的问题;由于用户只需要将修改后的代码文件上传至终端,后续版本的临时编译流程是自动化完成,而无需人工参与,因此,既可以提高版本临时编译的效率,也可以提高临时编译的版本的可靠性。
另外,通过在替换文件中设置代码文件的替换类型,使得用户可以根据替换需求来替换待替换的源码文件,可以保证替换待替换的源码文件的灵活性。
另外,在开发人员选择代码文件的打包方式时,该打包方式可能多种多样;通过由第一服务器将替换文件的打包格式统一转换为指定格式,使得不同打包格式的替换文件都可以被识别,从而替换待替换的源码文件,可以提高版本的临时编译方法的通用性。
另外,通过在临时编译请求中携带构建地址,使得构建平台可以调用不同平台对应的编译服务器或者不同语言的代码对应的编译服务器,可以实现对各个平台、各种语言的代码进行编译,可以提高版本的临时编译方法的通用性。
可选地,上述实施例中,步骤201和202可单独实现为终端侧的方法实施例;步骤203-205可单独实现为第一服务器侧的方法实施例;步骤206可单独实现为构建平台侧的方法实施例;步骤207和209可单独实现为编译服务器侧的方法实施例,本实施例对此不作限定。
可选地,基于上述实施例,参考图4,在步骤209之后,也即在编译服务器在对替换后的源码进行编译之后,还需要执行下述步骤:
步骤401,将指定位置和替换位置还原至替换前的初始状态。
编译服务器将指定位置和替换位置还原至替换前的初始状态,包括:删除指定位置中的替换文件、对替换文件解压后得到的代码文件和代码目录;删除替换位置中的代码文件;在替换位置还原待替换的源码文件。
其中,代码文件用于替换待替换的源码文件,代码目录用于确定与代码文件相对应的替换位置。
其中,编译服务器在替换位置还原待替换的源码文件,包括:将标记后的源码文件还原至替换位置。由于标记后的源码文件为待替换的源码文件的复制版本,因此,将标记后的源码文件还原至替换位置后,得到的源码为编译服务器获取到的原始版本,可以实现编译服务器还原指定位置。
本实施例中,通过将指定位置和替换位置还原至替换前的初始状态,可以保证正式源码分支上项目版本的正常编译;另外,通过将替换文件存储至第二服务器,并对待替换的源码进行标记,使得编译服务器在本次临时版本的编译出现问题时,可以追溯本次临时替换编译的源码。
可选地,本申请中仅以终端将代码文件打包之后得到替换文件,并向第一服务器发送替换文件为例进行说明,在实际实现时,终端也可以不将该代码文件打包,此时,替换文件即为代码文件,本实施例不对代码文件的传输方式作限定。
图5是本申请一个实施例提供的版本的临时编译装置的框图,本实施例以该装置应用于图1所示的版本的临时编译系统中的第一服务器120为例进行说明。该装置至少包括以下几个模块:请求获取模块510、文件存储模块520、指令生成模块530和指令发送模块540。
请求获取模块510,用于获取终端根据替换文件生成的临时编译请求,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
文件存储模块520,用于将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;
指令生成模块530,用于根据所述存储地址生成版本构建指令;
指令发送模块540,用于向所述构建地址指示的所述的构建平台发送所述版本构建指令,所述版本构建指令用于触发所述构建平台调度编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
相关细节参考上述方法实施例。
图6是本申请一个实施例提供的版本的临时编译装置的框图,本实施例以该装置应用于图1所示的版本的临时编译系统中的构建平台130为例进行说明。该装置至少包括以下几个模块:指令获取模块610和服务器调用模块620。
指令获取模块610,用于获取版本构建指令,所述版本构建指令是第一服务器根据替换文件的存储地址生成的;所述替换文件由终端生成,并携带在临时编译请求中发送至所述第一服务器;
服务器调用模块620,用于根据所述版本构建指令调用编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
相关细节参考上述方法实施例。
图7是本申请一个实施例提供的版本的临时编译装置的框图,本实施例以该装置应用于图1所示的版本的临时编译系统中的编译服务器140为例进行说明。该装置至少包括以下几个模块:文件下载模块710、文件替换模块720、代码编译模块730和版本发布模块740。
文件下载模块710,用于根据构建平台的调用将替换文件下载至指定位置;所述替换文件由终端生成,并携带在临时编译请求中发送至第一服务器;由第一服务器存储至预设位置得到存储地址,根据该存储地址生成版本构建指令并发送至所述构建平台;所述版本构建指令用于触发所述构建平台调用编译服务器;
文件替换模块720,用于在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;
代码编译模块730,用于对替换后的源码进行编译,得到临时版本;
版本发布模块740,用于将所述临时版本发布至版本服务器。
相关细节参考上述方法实施例。
需要说明的是:上述实施例中提供的版本的临时编译装置在进行版本的临时编译时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将版本的临时编译装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的版本的临时编译装置与版本的临时编译方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请一个实施例提供的版本的临时编译装置的框图,该装置可以是图1所示的版本的临时编译系统中的终端110、第一服务器120、构建平台130、编译服务器140和版本服务器150中的至少一种装置。该装置至少包括处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如:4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的版本的临时编译方法。
在一些实施例中,版本的临时编译装置还可选包括有:外围设备接口和至少一个外围设备。处理器801、存储器802和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、触摸显示屏、音频电路、和电源等。
当然,版本的临时编译装置还可以包括更少或更多的组件,本实施例对此不作限定。
可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的版本的临时编译方法。
可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的版本的临时编译方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种版本的临时编译系统,其特征在于,所述系统包括:
终端,用于根据替换文件生成临时编译请求;并将所述临时编译请求发送至第一服务器,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
所述第一服务器,用于获取所述临时编译请求;将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;根据所述存储地址生成版本构建指令;并向所述构建地址指示的所述构建平台发送所述版本构建指令;
所述构建平台,用于获取所述版本构建指令;根据所述版本构建指令调用编译服务器;
所述编译服务器,用于根据所述版本构建指令中的所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
2.根据权利要求1所述的系统,其特征在于,所述编译服务器还用于:
在所述对替换后的源码进行编译之后,将所述指定位置和所述替换位置还原至替换前的初始状态。
3.根据权利要求2所述的系统,其特征在于,所述编译服务器,用于:
删除所述指定位置中的所述替换文件、对所述替换文件解压后得到的代码文件和代码目录;所述代码文件用于替换所述待替换的源码文件,所述代码目录用于确定与所述代码文件相对应的替换位置;
删除所述替换位置中的代码文件;
在所述替换位置还原所述待替换的源码文件。
4.根据权利要求1所述的系统,其特征在于,所述替换文件包括代码文件和所述代码文件的替换类型,所述替换类型为:覆盖文件、补丁文件、移除文件和添加文件中的至少一种;所述编译服务器,用于:
在所述代码文件的替换类型为所述覆盖文件时,使用所述代码文件覆盖所述待替换的源码文件;
在所述代码文件的替换类型为所述补丁文件时,使用具有补丁标识的所述代码文件对所述待替换的源码文件打补丁;
在所述代码文件的替换类型为所述移除文件时,删除与所述代码文件相对应的所述待替换的源码文件;
在所述代码文件的替换类型为所述添加文件时,添加所述代码文件。
5.根据权利要求1所述的系统,其特征在于,所述第一服务器,用于:
将所述替换文件按照预设规则进行转换,得到转换后的替换文件;
将所述转换后的替换文件存储至第二服务器,所述第二服务器为所述预设位置;
其中,所述预设规则包括:将所述替换文件的打包格式转换为指定格式;和/或,将所述替换文件的名称按照预设命名规则重新命名。
6.根据权利要求1所述的系统,其特征在于,
所述构建平台,用于在所述获取所述版本构建指令之后,将所述存储地址赋值给预设参数;将所述预设参数传输至所述编译服务器;
所述编译服务器,用于检测所述预设参数是否为空;在所述预设参数不为空时,触发执行所述根据所述版本构建指令中的所述存储地址将所述替换文件下载至指定位置的步骤。
7.根据权利要求1所述的系统,其特征在于,所述替换文件中代码文件的目录结构与所述待替换的源码文件的目录结构一致。
8.一种版本的临时编译方法,其特征在于,所述方法包括:
获取终端根据替换文件生成的临时编译请求,所述临时编译请求包括构建待替换的源码文件的构建平台的构建地址;
将所述临时编译请求中的所述替换文件存储至预设位置,得到所述替换文件的存储地址;
根据所述存储地址生成版本构建指令;
向所述构建地址指示的所述构建平台发送所述版本构建指令,所述版本构建指令用于触发所述构建平台调度编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
9.一种版本的临时编译方法,其特征在于,所述方法包括:
获取版本构建指令,所述版本构建指令是第一服务器根据替换文件的存储地址生成的;所述替换文件由终端生成,并携带在临时编译请求中发送至所述第一服务器;
根据所述版本构建指令调用编译服务器;所述编译服务器根据所述存储地址将所述替换文件下载至指定位置;在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;对替换后的源码进行编译,得到临时版本;将所述临时版本发布至版本服务器。
10.一种版本的临时编译方法,其特征在于,所述方法包括:
根据构建平台的调用将替换文件下载至指定位置;所述替换文件由终端生成,并携带在临时编译请求中发送至第一服务器;由第一服务器存储至预设位置得到存储地址,根据该存储地址生成版本构建指令并发送至所述构建平台;所述版本构建指令用于触发所述构建平台调用编译服务器;
在预设的替换位置根据所述替换文件对所述待替换的源码文件执行临时替换操作;
对替换后的源码进行编译,得到临时版本;
将所述临时版本发布至版本服务器。
11.一种版本的临时编译装置,其特征在于,所述装置包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现如权利要求8所述的版本的临时编译方法;或者,实现如权利要求9所述的版本的临时编译方法;或者,实现如权利要求10所述的版本的临时编译方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有程序,所述程序被处理器执行时用于实现如权利要求8所述的版本的临时编译方法;或者,实现如权利要求9所述的版本的临时编译方法;或者,实现如权利要求10所述的版本的临时编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810694657.0A CN108897543B (zh) | 2018-06-29 | 2018-06-29 | 版本的临时编译系统、方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810694657.0A CN108897543B (zh) | 2018-06-29 | 2018-06-29 | 版本的临时编译系统、方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897543A true CN108897543A (zh) | 2018-11-27 |
CN108897543B CN108897543B (zh) | 2022-01-14 |
Family
ID=64346605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810694657.0A Active CN108897543B (zh) | 2018-06-29 | 2018-06-29 | 版本的临时编译系统、方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897543B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096272A (zh) * | 2019-03-19 | 2019-08-06 | 深圳壹账通智能科技有限公司 | 库文件处理方法、装置、计算机设备及存储介质 |
CN110968342A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种版本比对方法、装置及系统 |
CN111694573A (zh) * | 2020-05-29 | 2020-09-22 | Oppo(重庆)智能科技有限公司 | 程序编译文件获取方法、装置、存储介质与电子设备 |
CN111782230A (zh) * | 2020-07-07 | 2020-10-16 | 联想(北京)有限公司 | 程序安装控制方法、装置和电子设备 |
CN114461216A (zh) * | 2021-12-22 | 2022-05-10 | 科东(广州)软件科技有限公司 | 一种文件编译方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053855A (zh) * | 2010-12-13 | 2011-05-11 | 浪潮(北京)电子信息产业有限公司 | 一种软件的生成系统及方法 |
CN102520952A (zh) * | 2011-12-14 | 2012-06-27 | 北京佳讯飞鸿电气股份有限公司 | 软件代码版本自动构建及发布方法 |
CN102707982A (zh) * | 2011-03-04 | 2012-10-03 | 微软公司 | 托管汇编件的增量式生成 |
CN103294514A (zh) * | 2013-06-26 | 2013-09-11 | 深圳Tcl新技术有限公司 | 系统软件版本集成方法、编译服务器及系统 |
US20150277898A1 (en) * | 2013-07-08 | 2015-10-01 | Huizhou Tcl Mobile Communication Co.,Ltd | Upgrade packet generation method, server, software upgrade method, and mobile terminal |
-
2018
- 2018-06-29 CN CN201810694657.0A patent/CN108897543B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053855A (zh) * | 2010-12-13 | 2011-05-11 | 浪潮(北京)电子信息产业有限公司 | 一种软件的生成系统及方法 |
CN102707982A (zh) * | 2011-03-04 | 2012-10-03 | 微软公司 | 托管汇编件的增量式生成 |
CN102520952A (zh) * | 2011-12-14 | 2012-06-27 | 北京佳讯飞鸿电气股份有限公司 | 软件代码版本自动构建及发布方法 |
CN103294514A (zh) * | 2013-06-26 | 2013-09-11 | 深圳Tcl新技术有限公司 | 系统软件版本集成方法、编译服务器及系统 |
US20150277898A1 (en) * | 2013-07-08 | 2015-10-01 | Huizhou Tcl Mobile Communication Co.,Ltd | Upgrade packet generation method, server, software upgrade method, and mobile terminal |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096272A (zh) * | 2019-03-19 | 2019-08-06 | 深圳壹账通智能科技有限公司 | 库文件处理方法、装置、计算机设备及存储介质 |
CN110968342A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种版本比对方法、装置及系统 |
CN110968342B (zh) * | 2019-11-29 | 2023-07-21 | 中国银行股份有限公司 | 一种版本比对方法、装置及系统 |
CN111694573A (zh) * | 2020-05-29 | 2020-09-22 | Oppo(重庆)智能科技有限公司 | 程序编译文件获取方法、装置、存储介质与电子设备 |
CN111782230A (zh) * | 2020-07-07 | 2020-10-16 | 联想(北京)有限公司 | 程序安装控制方法、装置和电子设备 |
CN111782230B (zh) * | 2020-07-07 | 2022-05-31 | 联想(北京)有限公司 | 程序安装控制方法、装置和电子设备 |
CN114461216A (zh) * | 2021-12-22 | 2022-05-10 | 科东(广州)软件科技有限公司 | 一种文件编译方法、装置、电子设备及存储介质 |
CN114461216B (zh) * | 2021-12-22 | 2022-11-11 | 科东(广州)软件科技有限公司 | 一种文件编译方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108897543B (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897543A (zh) | 版本的临时编译系统、方法、装置及存储介质 | |
CN109725909B (zh) | 代码文件打包部署方法、持续集成服务器及系统 | |
US9715370B2 (en) | Method and system for providing content | |
CN108287758A (zh) | 一种应用资源管理方法、使用方法及装置 | |
CN111095338A (zh) | 用于执行不同类型区块链合约的系统和方法 | |
CN104754062B (zh) | 基于互联网的信息推广方法、服务器及用户终端 | |
CN107678750A (zh) | 一种sdk打包方法、计算设备及sdk打包系统 | |
CN107357607B (zh) | 文件数据的读取方法及装置 | |
CN104731589A (zh) | 用户界面的自动生成方法及自动生成装置 | |
CN101504669B (zh) | 一种Web应用的模板发布方法、装置及系统 | |
CN112612452B (zh) | 一种api平台实现方法、装置、设备及存储介质 | |
CN107632828A (zh) | 多dts文件支持方法、编译装置及嵌入式设备 | |
US11474796B1 (en) | Build system for distributed applications | |
CN109189400A (zh) | 程序发布方法及装置、存储介质、处理器 | |
CN109992278A (zh) | 一种基于容器的应用程序发布方法及装置 | |
JP5811088B2 (ja) | データ処理システム及びデータ処理方法 | |
CN111324457A (zh) | 一种gpu集群中发布推理服务的方法、装置、设备和介质 | |
CN108647032A (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
JP2013030167A (ja) | ユーティリティメータ設定のためのシステム、方法、および装置 | |
CN110442601A (zh) | 一种Openstack镜像数据并行加速的方法和装置 | |
JP7257554B2 (ja) | モデルファイルのディストリビューション方法、プラットホーム、システム、端末及び可読記憶媒体 | |
AU2019222873B2 (en) | Method and system for providing content | |
CN112000334A (zh) | 页面开发方法、装置、服务器及存储介质 | |
CN116301951A (zh) | 一种基于kubernetes的微服务应用安装升级方法及装置 | |
CN110673827A (zh) | 基于安卓系统的资源调用方法及装置、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |