一种软件的编译方法、装置及系统的制作方法_2

文档序号:9417221阅读:来源:国知局

[0026]本实施方式中,待编译软件的不同代码部分可分别分布在不同开发人员的计算机中。第一编译装置作为用于执行第一类代码编译的工具,在接收到上述对该第一类代码的编译指令时,启动第一 Jenkins任务以进行对第一类代码的构建,即采用Jenkins集成开发工具将分布不同计算机的待编译软件的代码进行集成,并对所述第一类代码进行编译。可以理解的是,本申请中第一编译装置不限定采用Jenkins集成开发工具进行代码集成,在其他实施方式中,第一编译装置还可采用其他的集成开发工具,在此不作限定。
[0027]同时,第一编译装置还作为对第二类代码的触发装置,在满足预定条件时启动第二 Jenkins任务,产生对该第二类代码进行编译的指令,以触发第二编译装置对第二类代码的构建。例如,第一编译装置可通过XVNC虚拟远程桌面控制技术控制该第二编译装置进行第二编译,第二编译装置响应该编译指令而获得配置参数并集成该待编译软件的代码,并根据所述配置参数对所述第二类代码进行编译。
[0028]其中,该预定条件可根据具体应用场景进行设定,如考虑到合理利用编译装置的运行资源,设定在晚上时间;或者考虑到时间的紧急性,设定为在第一编译装置接收到编译指令后即触发该第二编译。可选地,为避免开发人员重新更改新版本的代码,保证待编译软件的版本匹配,该预定条件为在接收到编译指令后至完成第一编译的过程中触发该第二编译。
[0029]S13:第一编译装置将所述第一编译得到的所述第一类代码的镜像文件上传至服务器,以及由所述第二编译装置将所述第二编译得到的所述第二类代码的镜像文件上传至服务器。
[0030]例如,第一编译装置和第二编译装置均与服务器建立连接。第一编译装置在进行完成上述第一编译后得到第一类代码的镜像文件,将该第一类代码的镜像文件上传至该服务器。第二编译装置在进行完成上述第二编译后得到第二类代码的镜像文件,并将该第二类代码的镜像文件上传至该服务器。该服务器接收到第一、第二类代码的镜像文件后,将该镜像文件作为待编译软件的一个新版本,以提供给用户下载使用。
[0031]本实施方式中,第一编译装置在接收到对待编译软件的第一类代码的编译指令时,执行对该第一类代码的第一编译,并在满足预定条件时产生第二类代码的编译指令以触发第二编译装置对第二类代码的第二编译,使得第一类代码和第二类代码的编译智能化关联启动,实现了对待编译软件的智能化编译,而无需分别人工操作编译第一、第二类代码,故提高了编译效率,且节省了人力成本。而且,第一类代码和第二类代码的智能关联编译,保证了待编译软件集成的完整性及版本的匹配。
[0032]请参阅图2,图2是本申请软件的编译方法另一实施方式的流程图。本实施方式中,所述方法包括:
[0033]S21:第一编译装置接收对待编译软件的第一类代码的编译指令。
[0034]其中,所述待编译软件包括所述第一类代码和第二类代码,所述第一类代码为在所述待编译软件的不同版本中不作更新的代码,所述第二类代码为可根据所述待编译软件的不同版本进行更新的代码。
[0035]S22:第一编译装置采用Jenkins集成开发工具(基于Java开发的一种持续集成工具)对所述待编译软件的代码进行集成,当满足预定条件时产生对所述第二类代码进行编译的指令,以通过XVNC虚拟远程桌面控制技术控制所述第二编译装置获得配置参数并根据所述配置参数对所述第二类代码进行第二编译。
[0036]其中,所述采用Jenkins集成开发工具对所述待编译软件的代码进行集成的步骤可具体为:采用Jenkins集成开发工具将所述待编译软件的当前代码标记为待编译版本的里程碑;集成所述待编译软件的所述待编译版本的里程碑的代码。其中,所述里程碑即为用于识别软件的不同版本的标识。在进行构建过程中,第一编译装置将当前待编译软件的代码标记作为新一版本的里程碑,标记完成后,下载标记为该新一版本的里程碑的代码进行集成,再进行相应编译。
[0037]本实施方式中,该预定条件为已完成将所述待编译软件的当前代码标记为所述待编译版本的里程碑。即第一编译装置在完成上述里程碑的标记后,立即产生第二类代码的编译指令,以保证第一、第二编译装置集成同一里程碑的代码,进一步确保版本的匹配。在其他实施例中,该预定条件还可设置定时,例如为达到在完成将所述待编译软件的当前代码标记为所述待编译版本的里程碑后的设定时间,具体如达到在完成上述里程碑的标记后的I个小时。其中,如将该定时设置为0,则相当于本实施方式的完成上述里程碑的标记后立即产生第二类代码的编译指令。
[0038]本实施方式中,第一编译装置在Iinux系统下运用XVNC虚拟远程桌面控制技术控制第二编译装置。即,第一编译装置和第二编译装置分别部署虚拟网络计算机(VirtualNetwork Computer,简称:VNC)的服务器端和客户端,以实现第二 Jenkins任务在执行过程中启用该服务来虚拟出远程桌面,模拟人工点击操作。例如,第一编译装置作为VNC的服务器端在检测到满足预定条件时,启动VNC服务与第二编译装置建立连接,并通过peri语言的WWW::Mechanize模块登录Jenkins构建第二类代码的任务页面,并调用python脚本提交预先设定的配置参数表及编译申请以启动第二编译装置的构建任务,进而实现自动化配置第二类代码,并自动提交第二类代码的编译请求。第二编译装置接收该构建任务,即根据该配置参数下载该待编译软件的待编译版本里程碑的代码以完成集成,并对集成的第二类代码进行编译。
[0039]S23:第一编译装置对所述第一类代码进行第一编译。
[0040]可以理解的是,本实施方式仅为便于说明第二编译在里程碑标记完成后执行而将第二编译置于S22中,第一编译置于S23中,但并不能用作限定第一编译和第二编译的先后顺序。在不同实施例中,本申请的第一编译和第二编译可以同时启动执行、先启动第一编译后启动第二编译、或先启动第二编译后启动第一编译,故本申请对第一、第二编译的先后顺序不作任何限制。
[0041]S24:第一编译装置将所述第一编译得到的所述第一类代码的镜像文件上传至服务器,以及由所述第二编译装置将所述第二编译得到的所述第二类代码的镜像文件上传至服务器。
[0042]可选地,本申请可支持多个版本的同时编译。对应地,上述待编译的软件可包括多组第二类代码。所述在满足预定条件时产生对所述第二类代码的编译指令,以触发第二编译装置对所述第二类代码进行第二编译的步骤具体为:对在满足预定条件时产生对所述多组第二类代码的编译指令,以触发第二编译装置对所述多组第二类代码分别进行第二编译。例如,第二编译装置相应该编译指令而获得预先设置的配置参数表,确定所需编译的多组第二类代码,对确定的多组第二类代码进行编译。编译完成后,第二编译装置分别将代表不同版本的多组第二类代码的镜像文件上传至服务器。
[0043]可选地,上述第一、第二编译装置在可实时输出编译log,且在编译通过或失败时,发送邮件通知,以便相关人员及时了解编译进度。
[0044]上述实施方式中,所述第一编译装置和所述第二编译装置可集成在一物理机构中,或分别为不同的独立物理结构。例如
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1