一种基于云平台的软件开发方法、云平台、设备及介质与流程

文档序号:16665695发布日期:2019-01-18 23:15阅读:323来源:国知局
一种基于云平台的软件开发方法、云平台、设备及介质与流程

本发明涉及一种基于云平台的软件开发方法、云平台、设备及介质。



背景技术:

代码开发是互联网、计算机技术的基础。开发人员可以利用不同的编程语言编写代码,以满足用户的各种需求,以实现各种应用程序、软件等的各种功能。常用的编程语言例如:java、c语言、c++、python等。

目前通过代码开发方法得到最终产品(例如软件)的过程为:用户提出需求,开发人员根据该需求编写代码,然后将该代码打包,打包后通过测试人员进行测试,测试完成后进行上线部署,最后整个需求得到发布。但是对于较为复杂的产品的开发,可能会涉及多种不同的编程语言。例如一个复杂的产品包含多个模块,其中算法模块使用的是c++的,业务层模块是java,大数据处理模块使用的是scala,服务发现相关模块使用的是go语言,监控模块使用的是python。每个模块每种语言都有不同的编译和部署方式,部署这样一个复杂的系统是十分困难的,并且每一个模块都有不同的编译时和运行时依赖。

因此对于复杂的产品开发而言,其环境没有部署规范性,每个环境都是不一样的,容易出现产品开发环境与测试环境或者生产环境出现不匹配的情况,而需要开发人员与测试人员反复沟通和等待,增加了开发时间成本和复杂度。



技术实现要素:

(一)要解决的技术问题

对于复杂的产品开发而言,其环境没有部署规范性,每个环境都是不一样的,容易出现产品开发环境与测试环境或者生产环境出现不匹配的情况,而需要开发人员与测试人员反复沟通和等待,增加了开发时间成本和复杂度。

(二)技术方案

一方面,本发明提供了一种基于云平台的软件开发方法,所述方法包括:云平台获取项目信息,根据所述项目信息创建项目;云平台在所述项目中创建多个任务,根据所述任务选择开发语言完成代码的编写,其中,一个所述任务与一种开发语言相对应,所述多个任务中包含至少两种不同的开发语言;云平台创建编译容器,将所述代码添加进入所述编译容器,根据所述代码所对应的开发语言,生成与所述开发语言相对应的独立的编译环境,完成代码的编译;云平台创建测试容器,将编译后的所述代码添加进入所述测试容器,生成与所述开发语言相对应的独立的测试环境,完成代码的测试;云平台将完成编译和测试的代码打包并发布。

可选地,所述容器为docker容器。

可选地,所述云平台创建编译容器,将所述代码添加进入所述编译容器完成代码的编译,包括:创建第一镜像,在所述第一镜像中创建第一docker容器,在所述第一docker容器中下载安装与所述开发语言相对应的编译器,通过所述编译器将所述代码转换为二进制语言,完成对所述代码的编译。

可选地,所述云平台创建测试容器,将编译后的所述代码添加进入所述测试容器完成代码的测试,包括:创建第二镜像,在所述第二镜像中创建第二docker容器,在所述第二docker容器中下载安装与所述开发语言相对应的运行测试软件,配置环境,生成与所述开发语言相对应的软件运行测试环境,完成对所述代码的运行测试。

可选地,所述方法还包括,云平台创建仓库,将所述编译容器和所述测试容器存储至所述仓库中,对所述编译容器和所述测试容器设置访问权限。

可选地,对所述编译容器和所述测试容器设置访问权限,包括通过云平台申请访问权限。

可选地,所述仓库为本地docker镜像仓库或者dockerregistry私有仓库。

另一方面,本发明还提供了一种云平台,用于软件开发,所述云平台包括:创建项目模块,用于获取项目信息,根据所述项目信息创建项目;创建任务模块,用于在所述项目中创建多个任务,根据所述任务选择开发语言完成代码的编写,其中,一个所述任务与一种开发语言相对应,所述多个任务中包含至少两种不同的开发语言;编译模块,用于创建编译容器,将所述代码添加进入所述编译容器,根据所述代码所对应的开发语言,生成与所述开发语言相对应的独立的编译环境,完成代码的编译;测试模块,用于创建测试容器,将编译后的所述代码添加进入所述测试容器,生成与所述开发语言相对应的独立的测试环境,完成代码的测试;发布模块,用于将完成编译和测试的代码打包并发布。

再一方面,本发明提供了一种电子设备,包括:处理器;存储器,其存储有计算机可执行程序,该程序包含如上文所述的基于云平台的软件开发方法。

再一方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序包含如上文所述的基于云平台的软件开发方法。

(三)有益效果

本发明通过采用在云平台中创建容器的方法,将代码添加进入容器,通过容器实现代码的编译以及测试。并且本发明创建了多个任务,一个任务与一种开发语言所对应,这些多个任务中包含至少两种不同的开发语言,因此在完成编译过程时需要创建多个编译容器将与该多个任务对应的代码进行添加,在完成测试过程时也需要创建多个测试容器。需要说明的是,此处的容器可以添加和支持由不同的开发语言进行编写的代码,并且容器与容器之间互相独立,一个编译容器用于实现一个任务的代码的编译,一个测试容器用于实现已编译的上述一个任务的代码测试,当多个任务同时存在时,每个编译容器中生成其独立的编译环境,每个测试容器中生成器独立的测试环境,每个编译容器之间以及每个测试容器之间互相不影响,独立完成各自的编译功能和测试功能。由此,本发明利用容器形成独立的编译环境和独立的测试环境,避免了现有技术中根据不同的开发语言,容易出现产品开发环境与测试环境不匹配,需要开发人员与测试人员反复沟通和等待的情况,简化了开发过程,降低了复杂性。

附图说明

为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本发明实施例的基于云平台的软件开发方法的流程图;

图2示意性示出了根据本发明实施例的云平台框图,

图3示意性示出了根据本发明实施例的电子设备框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

本发明提供了一种基于云平台的软件开发方法,参见图1,所述方法包括:s1,云平台获取项目信息,根据所述项目信息创建项目;s2,云平台在所述项目中创建多个任务,根据所述任务选择开发语言完成代码的编写,其中,一个所述任务与一种开发语言相对应,所述多个任务中包含至少两种不同的开发语言;s3,云平台创建编译容器,将所述代码添加进入所述编译容器,根据所述代码所对应的开发语言,生成与所述开发语言相对应的独立的编译环境,完成代码的编译;s4,云平台创建测试容器,将编译后的所述代码添加进入所述测试容器,生成与所述开发语言相对应的独立的测试环境,完成代码的测试;s5,云平台将完成编译和测试的代码打包并发布。

本发明通过采用在云平台中创建容器的方法,将代码添加进入容器,通过容器实现代码的编译以及测试。并且本发明创建了多个任务,一个任务与一种开发语言所对应,这些多个任务中包含至少两种不同的开发语言,因此在完成编译过程时需要创建多个编译容器将与该多个任务对应的代码进行添加,在完成测试过程时也需要创建多个测试容器。需要说明的是,此处的容器可以添加和支持由不同的开发语言进行编写的代码,并且容器与容器之间互相独立,一个编译容器用于实现一个任务的代码的编译,一个测试容器用于实现已编译的上述一个任务的代码测试,当多个任务同时存在时,每个编译容器中生成其独立的编译环境,每个测试容器中生成器独立的测试环境,每个编译容器之间以及每个测试容器之间互相不影响,独立完成各自的编译功能和测试功能。

需要说明的是,上文所述的独立的编译环境和独立的测试环境,是指容器中生成的编译环境或测试环境不依赖于主机的自身系统,而现有技术的编译环境或测试环境的部署,需要在主机系统中设置环境变量,环境变量是指在操作系统中用来指定操作系统运行环境的一些参数。例如对于windowsxp系统,需要在“电脑属性”中,打开“环境变量”窗口进行设置。

由此可以看出,本发明利用容器形成独立的编译环境和独立的测试环境,避免了现有技术中根据不同的开发语言,容易出现产品开发环境与测试环境不匹配,该不匹配的情况正是由于开发环境、测试环境等的部署依赖于主机的自身系统,很多时候由于主机自身的系统、版本等不一致,也会出现各种问题,需要开发人员与测试人员反复沟通和等待的问题,简化了开发过程,降低了复杂性。

具体地,所述云平台获取项目信息,根据所述项目信息创建项目,其中,项目信息可为满足用户需求的项目信息,此处的项目可以为软件开发项目。

云平台在每个所述项目中创建任务,在软件开发项目中,一个软件通常会携带多个功能,此处创建的任务即可为软件的多个功能或者多个应用模块,例如数据处理模块、业务层模块等。根据所述任务选择开发语言完成代码的编写,其中,一个所述任务与一种开发语言相对应,所述多个任务中包含至少两种不同的开发语言。例如,数据处理模块使用由java编写的代码,业务层模块使用由ruby编写的代码。

云平台创建编译容器,所述容器为docker容器,本领域技术人员可以理解的是,docker容器为开源的应用容器引擎,容器是完全使用沙箱机制,相互之间不会有任何接口。并且不依赖于任何语言、框架或包装系统,也就是说,docker容器中可以实现添加由不同种类的开发语言编写的代码,例如编译容器a中可以添加由java编写的代码,编译容器b中可以添加由c语言编写的代码,编译容器c中可以添加由ruby编写的代码。上文所述至少两种开发语言包括java,c,c++,python,c#,visualbasic.net,php,swift,ruby,go。但本发明中可以使用的开发语言不受限于此。

进一步地,根据所述代码所对应的开发语言,生成与所述开发语言相对应的独立的编译环境,完成代码的编译。其包括:创建第一镜像,在所述第一镜像中创建第一docker容器,在所述第一docker容器中下载安装与所述开发语言相对应的编译器,通过所述编译器将所述代码转换为二进制语言,完成对所述代码的编译。例如:在云平台中下载一个docker镜像,该镜像会拥有一个镜像id以及标签tag,在该镜像中安装并启动一个docker容器,在宿主机上创建一个/download/目录,将所需安装程序放在宿主机的/download/目录下,并将宿主机上的/download/目录挂载到容器的/mnt/software/目录下,由此可以在容器中访问宿主机的/download/目录下的内容,例如在宿主机中下载python本身自带的编译器,需下载一个pythonide(integrateddevelopmentenvironment),下载存放至/download/目录,再进入容器中可以看到在/mnt/software/目录下已经存在一个pythonide,然后可以在该容器中安装pythonide,形成编译环境,将保存于宿主机上的代码克隆至该容器中,即添加进入该容器,该添加的过程同样可以通过在宿主机上创建一个保存代码的目录,将该宿主机上保存代码的目录挂载到容器中的目录上,由此在容器中可以访问和使用该代码。将所述代码转换为二进制语言,完成对所述代码的编译。

进一步地,云平台创建测试容器,将编译后的所述代码添加进入所述测试容器,生成与所述开发语言相对应的独立的测试环境,完成代码的测试;包括:创建第二镜像,在所述第二镜像中创建第二docker容器,在所述第二docker容器中下载安装与所述开发语言相对应的运行测试软件,配置环境,生成与所述开发语言相对应的软件运行测试环境,完成对所述代码的运行测试。例如:在云平台中下载一个docker镜像,该镜像会拥有一个镜像id以及标签tag,在该镜像中安装并启动一个docker容器,在宿主机上创建一个/download1/目录,将所需安装程序放在宿主机的/download1/目录下,并将宿主机上的/download1/目录挂载到容器的/mnt/software1/目录下,由此可以在容器中访问宿主机的/download1/目录下的内容。对于java而言则需要下载jdk和tomcat的安装包,将其下载存放至/download/目录,再进入容器中可以看到在/mnt/software1/目录下已经存在jdk和tomcat的安装包,然后安装jdk和tomcat,并在docker中设置配置环境变量,生成与所述开发语言相对应的软件运行测试环境,将上文编译之后的代码保存至宿主机的新建目录中,将该新建目录挂载到测试容器中,完成对所述代码的运行测试。

另外,上文所述方法还包括,云平台创建仓库,将所述编译容器和所述测试容器存储至所述仓库中,所述仓库为本地docker镜像仓库或者dockerregistry私有仓库。根据上文所述的内容,在创建容器之前需先创建镜像,容器是镜像的一个实例,在创建镜像之后,获取镜像id、标签tag,将创建的所有镜像存储至镜像仓库中,可以根据镜像id、标签tag等信息区分各个镜像。

本发明提供的方法还包括对所述编译容器和所述测试容器设置访问权限。可以在创建容器的时候设置访问权限,以秘钥的形式进行设置。对于不同的人员而言可以访问的容器不同,例如可以设置为对于开发人员而言,可以访问编译容器,而对于测试人员而言,可以访问测试容器。但当测试人员需要访问编译容器时,可以通过云平台申请访问权限。

另外本发明还提供了一种云平台,用于软件开发,参见图2,所述云平台200包括:创建项目模块201,用于获取项目信息,根据所述项目信息创建项目;创建任务模块202,用于在所述项目中创建多个任务,根据所述任务选择开发语言完成代码的编写,其中,一个所述任务与一种开发语言相对应,所述多个任务中包含至少两种不同的开发语言;编译模块203,用于创建编译容器,将所述代码添加进入所述编译容器完成代码的编译;测试模块204,用于创建测试容器,将编译后的所述代码添加进入所述测试容器完成代码的测试。发布模块205,用于将完成编译和测试的代码打包并发布。

本发明还提供了一种电子设备,包括:处理器;存储器,其存储有计算机可执行程序,该程序包含如上文所述的基于云平台的软件开发方法。

根据本发明的实施例的模块的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本发明实施例的模块的任意一个或多个可以被拆分成多个模块来实现。根据本发明实施例的模块的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本发明实施例的模块的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图3示意性示出了根据本发明实施例的电子设备框图。

如图3所示,所述电子设备300包括处理器310和存储器320。该电子设备300可以执行根据本发明实施例的方法。

具体地,处理器310例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器310还可以包括用于缓存用途的板载存储器。处理器310可以是用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

存储器320,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。其存储有计算机可执行程序,该程序在被所述处理器执行时,使得所述处理器执行如上文所述的直播间标签的添加方法。

本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。

根据本发明的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。

本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。

尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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