CN109358858B - 自动化部署方法、装置、介质及电子设备 - Google Patents

自动化部署方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN109358858B
CN109358858B CN201811120119.7A CN201811120119A CN109358858B CN 109358858 B CN109358858 B CN 109358858B CN 201811120119 A CN201811120119 A CN 201811120119A CN 109358858 B CN109358858 B CN 109358858B
Authority
CN
China
Prior art keywords
micro
service
image
mirror image
latest version
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.)
Active
Application number
CN201811120119.7A
Other languages
English (en)
Other versions
CN109358858A (zh
Inventor
丁亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201811120119.7A priority Critical patent/CN109358858B/zh
Publication of CN109358858A publication Critical patent/CN109358858A/zh
Application granted granted Critical
Publication of CN109358858B publication Critical patent/CN109358858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种自动化部署方法、装置、介质及电子设备,该自动化部署方法包括:在接收到微服务更新指令时,获取所述微服务更新后的代码文件;基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;测试成功后,将所述最新版本镜像部署到目标环境中。本发明实施例的技术方案可以提高服务的开发效率,缩短开发周期。

Description

自动化部署方法、装置、介质及电子设备
技术领域
本发明涉及计算机软件技术领域,具体而言,涉及一种自动化部署方法、装置、介质及电子设备。
背景技术
随着计算机软件技术的发展,计算机应用程序的功能越来越强大,也越来越复杂。为了保证应用的开发效率,人们开始采用微服务的方式对应用或者服务进行开发或者更新。微服务可以相当于一个单独的项目,与其他微服务组合在一起实现某种功能,并且其相互之间可以采用不同的存储方式,开发技术、编程语言等,使得应用或者服务的开发更加简单、灵活,效率也更高。
目前,一个应用或者服务的成功上线,通常要经历开发、内网部署、内网测试、外网部署、外网上线等一系列流程。这些流程中每一步都需要开发人员或者测试人员的确认和推进,往往经历的时间非常长,并且容易出错,导致流程阻塞。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种自动化部署方法,进而至少在一定程度上克服软件开发过程中需要人工多次操作,导致开发周期长的问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种自动化部署方法,包括:
在接收到微服务更新指令时,获取所述微服务更新后的代码文件;
基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;
将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
测试成功后,将所述最新版本镜像部署到目标环境中。
在本发明的一种示例性实施例中,基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像之前,还包括:
在所述微服务更新指令满足预设条件时,从镜像文件库中确定所述微服务的基础镜像;
基于所述基础镜像及所述代码文件,生成所述微服务的最新版本镜像。
在本发明的一种示例性实施例中,所述方法还包括:
判断所述测试环境对应的镜像文件库中是否存在所述微服务的当前版本镜像;
如果所述测试环境对应的镜像文件库中不存在所述当前版本镜像,则确定所述微服务更新指令满足预设条件。
在本发明的一种示例性实施例中,所述将所述最新版本镜像部署到目标环境中,包括:
将所述最新版本镜像上传至目标环境对应的镜像文件库中。
在发明的一种示例性实施例中,生成所述微服务的最新版本镜像之后,还包括:
将所述最新版本镜像上传至所述测试环境对应的镜像文件库中。
在本发明的一种示例性实施例中,所述将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试,包括:
根据所述测试环境对应的镜像文件库的访问地址以及所述最新版本镜像的标签获取所述最新版本镜像,以部署所述最新版本微服务至测试环境中;
在所述测试环境部署所述最新版本微服务后,启动所述微服务,以对所述最新版本微服务进行测试。
在本发明的一种示例性实施例中,所述方法还包括:
如果监测到所述微服务的代码仓库发生推送事件,则确定接收到微服务更新指令。
根据本发明实施例的第二方面,提供了一种自动化部署装置,包括:
代码获取单元,用于在接收到微服务更新指令时,获取所述微服务更新后的代码文件;
镜像生成单元,用于基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;
测试单元,用于将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
上线单元,用于测试成功后,将所述最新版本镜像部署到目标环境中。
根据本发明实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的自动化部署方法。
根据本发明实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的自动化部署方法。
本发明实施例提供的技术方案可以包括以下有益效果:
在本发明的一些实施例所提供的技术方案中,一方面,在接收到微服务更新指令时,获取所述微服务更新后的代码文件,进而根据所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像。根据最新的微服务的代码自动生成最新版本镜像,减少了开发人员合并代码制作新版本的工作,缩短了开发周期,提高了开发效率;另一方面,将最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试,然后在测试成功后,将最新版本镜像部署到目标环境中。生成的最新版本镜像可以在需要的环境上自动部署,降低了对人员的要求,提高了健壮性;并且通过最新版本镜像进行测试环境和目标环境的部署,可以保证版本的一致性,减少版本上线后出错的风险;再一方面,通过每个版本的镜像可以协助后续开发,使得开发更加容易,减少开发的工作量,提高开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明的实施例的自动化部署方法的流程图;
图2示意性示出了根据本发明的另一实施例的自动化部署方法的流程图;
图3示意性示出了根据本发明的另一实施例的自动化部署方法的流程图;
图4示意性示出了根据本发明的另一实施例的自动化部署方法的流程图;
图5示意性示出了根据本发明的另一实施例的自动化部署方法的流程图;
图6示意性示出了根据本发明的另一实施例的自动化部署方法的流程图;
图7示意性示出了根据本发明的实施例的自动化部署装置的框图;
图8示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
目前,在应用或者服务开发上线的流程中,主要都是通过人工一步一步的确认来推进。每个模块的开发人员提交代码到相应的Git分支上后,通过脚本拉取合并代码,制作新版本的代码文件,并同步到内网测试环境。经过测试人员的测试,再手动同步到外网环境中。这种方式需要人工多次确认,并且操作时间较长,容易造成更新不及时,导致测试环境与外网环境的代码不一致,增加上线出错的风险。
基于此,本发明实施方式中首先提出一种自动化部署方法。如图1所示,该自动化部署方法可以包括步骤S110、S120、S130、S140。其中:
步骤S110.在接收到微服务更新指令时,获取所述微服务更新后的代码文件;
步骤S120.基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;
步骤S130.将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
步骤S140.测试成功后,将所述最新版本镜像部署到目标环境中。
根据不示例性实施方式中的自动化部署方法,一方面,在微服务更新指令被触发时,获取所述微服务更新后的代码文件,进而根据所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像。根据最新的微服务的代码自动生成最新版本镜像,减少了开发人员合并代码制作新版本的工作,缩短了开发周期,提高了开发效率;另一方面,将最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试,然后在测试成功后,将最新版本镜像部署到目标环境中。生成的最新版本镜像可以在需要的环境上自动部署,降低了对人员的要求,提高了健壮性;并且通过最新版本镜像进行测试环境和目标环境的部署,可以保证版本的一致性,减少版本上线后出错的风险;再一方面,通过每个版本的镜像可以协助后续开发,使得开发更加容易,减少开发的工作量,提高开发效率。
下面,将结合图1至图6对本示例实施方式中的自动化部署方法的各个步骤进行更加详细的说明。
步骤S110.在接收到微服务更新指令时,获取所述微服务更新后的代码文件。
在本示例实施方式中,微服务可以包括能够完成某种任务的应用程序,或者应用软件中的最小单元模块,例如,一个实现某种逻辑算法的单元;并且,微服务也可以包括一种系统架构模式;该系统架构可以将应用分解为多个单元,每个单元包含一种服务,每个服务可以采用不同的开发技术,服务与服务之间可以通过API(应用程序编程接口,Application Programming Interface)进行访问;并且,该微服务能够完成各种任务,例如,某种逻辑计算、输出数据到前端页面,显示某个页面等等;本示例性实施方式对此不做特殊限定。
微服务更新指令能够触发更新微服务当前版本,进入到下一个版本。该微服务更新指令可以包括开发人员发出的指令,在开发人员对微服务的代码进行完善或更新后,可以通过代码管理工具将更新的代码进行提交,在开发人员发出提交代码的指令时,可以触发更新微服务当前版本,即,该微服务更新指令可以包括代码提交指令。当然,该微服务更新指令还可以包括其他能够触发该微服务更新的指令或者事件,例如,脚本指令、代码变更事件等等。此外,在微服务的代码更新时可以使用任何工具来管理更新的代码,例如,Git、Jenkins、GitLab等等。以Git为例,如果监测到所述微服务的Git项目发生Push事件,那么可以确定接收到微服务更新指令,也就是说,所述微服务更新指令可以包括所述微服务的Git项目发生的Push事件。
因此,进一步地,如果监测到所述微服务的代码仓库发送推送事件,则确定接收到微服务更新指令。其中,代码仓库可以包括该微服务的所有代码。通常可以将代码存放在代码管理工具中,例如,Git、SVN等等,因此代码仓库还可以包括各种代码管理工具。推送事件可以包括将代码推送到代码仓库的事件,例如,Push、Pull等等。当然,推送事件也可以包括其他事件,例如,自定义事件、监听事件等等。本示例实施方式对此不做限定。
进而,在接收到微服务更新指令时,可以获取更新的代码。通过微服务的代码管理工具,能够获取到微服务更新的代码,或者微服务的全部代码。在该工具中,可以通过对比检测到发生改变的部分代码,在开发人员确认提交这部分代码后,将这部分代码同步到相应的分支,以供所有的开发人员获取和查看。
步骤S120.基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像。
镜像可以包括具有特定格式的文件,例如,ISO、BIN、TAO、DAO、FCD等等。通过将应用或者系统制作成镜像,可以方便地将应用或者系统复制到任何设备上,例如,可以将某电脑的操作系统制作成镜像,通过该镜像可以在任何一台电脑上还原出该电脑的操作系统,以及该电脑的系统中保存的所有文件。因此,通过镜像可以快速的复制多个相同的系统、应用,或者需要的其他环境。
所述微服务当前版本镜像可以包括根据更新前的微服务的代码文件制作成的镜像。在制作所述微服务的镜像时,可以获取微服务的代码文件以及微服务所依赖的文件,获取到这些文件后可以打包制作微服务的镜像文件。其中,微服务依赖的文件可以包括微服务运行所需的环境配置、库文件、其他微服务、应用程序等等。在制作镜像文件后,还可以为每一个镜像文件添加一个标签,以便于区分镜像文件所对应的微服务的版本。因此,根据镜像文件的标签就可以获取到目标版本的镜像。
在获取到微服务当前版本镜像和更新后的代码文件后,可以制作更新后的微服务的镜像,该镜像可以是最新版本的镜像。即,在微服务当前版本镜像的基础上,将微服务更新的代码文件以及最新版本的微服务的依赖进行打包,可以生成该微服务最新版本的镜像。其中,制作镜像可以通过镜像制作工具,例如,Ghost等;也可以通过Docker容器来制作微服务的镜像。由于Docker镜像仓库中提供一些基础的镜像,进而可以在这些镜像中选择一个作为制作微服务镜像的基础,通过基础镜像制作新的镜像会大大提高镜像生成的效率。因而,在微服务当前版本的镜像的基础上,通过将微服务更新后的代码文件同步至当前版本镜像,可以生成微服务最新版本的镜像。
当然,也可以选择不通过当前版本镜像生成最新版本镜像,因此,本示例实施方式中还包括步骤S201和步骤S202。如图2所示,其中:
步骤S201.在所述微服务更新指令满足预设条件时,从镜像文件库中确定所述微服务的基础镜像;
步骤S202.基于所述基础镜像及所述代码文件,生成所述微服务的最新版本镜像。
本示例实施方式中,如果所述微服务更新指令满足预设条件,则从镜像文件库中确定所述微服务的基础镜像。其中,镜像文件库可以包括多个镜像文件的集合,例如DockerHub中提供的各种镜像文件的镜像文件库,本地中保存各种镜像文件的镜像文件库等等。所述微服务的基础镜像可以包括操作系统镜像,或者其他环境镜像,例如,Docker镜像仓库中的python镜像、java镜像等等。本示例实施方式对此不做特殊限定。
在接收到微服务更新指令时,可以判断该指令是否满足预设条件。举例而言,如果微服务更新指令中包含的参数中不包含镜像的标签,那么可以确定该指令满足预设条件,即,选择一个基础镜像,开始构建最新版本镜像;或者,微服务更新指令中包含了一个Docker镜像文件库中提供的基础镜像的标签,或者包含了Docker镜像文件库的访问地址,那么也可以确定该指令满足预设条件;再或者,微服务更新指令可以包括选择一基础镜像,生成最新版本镜像的含义,那么可以确定该指令满足预设条件。
在确定了微服务的基础镜像之后,基于基础镜像以及微服务的代码文件可以生成微服务的最新版本的镜像。由于基础镜像中可以包括支持应用或者服务运行的一些操作系统环境,或者其他环境,例如,Java环境等;因此,在该基础镜像的基础上将微服务的代码文件、微服务的依赖包、以及微服务依赖的应用或者其他服务等进行打包,从而生成微服务的最新版本。
进一步地,确定所述微服务更新指令满足预设条件可以包括步骤S301和步骤S302。如图3所示,其中:
步骤S301.判断所述测试环境对应的镜像文件库中是否存在所述微服务的当前版本镜像;
步骤S302.如果所述测试环境对应的镜像文件库中不存在所述当前版本镜像,则确定所述微服务更新指令满足预设条件。
在本示例实施方式中,所述测试环境可以包括对所述微服务进行测试的环境。该测试环境可以包括各种操作系统环境,例如,Windows、Linux等等;也可以包括虚拟环境,例如,云环境、虚拟机等等。通常,在应用软件开发后,测试人员需要对其进行测试,可以通过在企业内网上搭建应用软件支持的各种环境,然后在这些环境上运行应用软件对其进行测试,以发现应用软件运行时的漏洞。因此,测试环境可以包括微服务运行的各种环境。
测试环境对应的镜像文件库可以用来保存微服务各种版本镜像文件,该镜像文件库可以包括某存储空间,或者指向该空间的地址,例如,某电脑主机的IP地址、虚拟机的访问地址等等。当然,通过其他方式也可以建立测试环境对应的镜像文件库,例如,在DockerHub镜像管理平台上创建一个项目,该项目中存放测试环境对应的各个版本的镜像文件,需要获取这些镜像文件时,可以通过该项目的访问地址来获取。
由上可知,可以通过测试环境对应的镜像文件库的地址,进而访问该库中的镜像文件,判断该镜像文件库中是否存在微服务的当前版本镜像,如果不存在,则可以确定所述微服务更新指令满足预设条件。举例而言,如果指令中包含了当前版本镜像的标签,那么根据该标签可以查询该镜像文件库中是否存在具有该标签的镜像文件,如果没有,那么可以确定该指令满足预设条件;或者,如果指令中不包含当前版本镜像的标签,那么可以默认获取镜像文件库中最新版本的镜像文件,或者默认随机从镜像文件库中获取一个镜像文件,如果镜像文件库中还没有微服务的镜像文件,那么可以确定满足预设条件。
因此,在步骤S120中生成所述微服务的最新版本镜像之后,还可以包括将所述最新版本镜像上传至所述测试环境对应的镜像文件库中。其中,每生成一个微服务的最新版本的镜像文件后,可以将生成的镜像文件上传至测试环境对应的镜像文件库中,这样测试环境对应的镜像文件库中可以保留每个版本的微服务的镜像文件,以便于下一次可以在最新版本基础上再次更新版本,提高微服务版本更新的效率,并且还可以提高微服务最新版本镜像文件的生成效率。
步骤S130.将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试。
本示例实施方式中,生成微服务最新版本镜像之后,可以将该最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试。其中,通过最新版本镜像文件可以在任何环境中部署最新版本的微服务。由于镜像中包含了微服务所需的所有文件,并且在制作镜像时,可以将安装该镜像的程序添加至镜像文件中,因此,可以通过解压镜像文件或者启动镜像安装程序可以将镜像部署到测试环境中。或者,可以将微服务的最新版本的Docker镜像移植到测试环境。在测试环境中部署好微服务后,可以启动微服务,以及微服务所依赖的其他服务,对该最新版本的微服务进行测试。
将最新版本镜像部署至测试环境中,以对最新版本微服务进行测试还可以包括步骤S401和步骤S402。如图4所示,其中:
步骤S401.根据所述测试环境对应的镜像文件库的访问地址以及所述最新版本镜像的标签获取所述最新版本镜像,以部署所述最新版本微服务至测试环境中;
步骤S402.在所述测试环境部署所述最新版本微服务后,启动所述微服务,以对所述最新版本微服务进行测试。
在本示例性实施方式中,在生成所述微服务的最新版本的镜像后,可以将该最新版本镜像上传至测试环境对应的镜像文件库中,因而在需要在测试环境中部署所述微服务时,可以根据该测试环境对应的镜像文件库的访问地址以及所需的镜像的标签来获取所需要部署的镜像。即,根据生成的最新版本镜像的标签可以在测试环境对应的镜像文件库中获取到最新版本镜像。获取到最新版本镜像后,可以将该最新版本镜像安装至测试环境中。在测试环境中安装了该镜像后,测试环境中可以包含该微服务以及该微服务所依赖的各种文件。在测试环境中启动该微服务可以对该微服务进行测试,由于该微服务可以与其他微服务组合起来共同实现某种功能,因此,对某种功能进行测试时,还包括启动与该微服务关联的其他微服务。
步骤S140.测试成功后,将所述最新版本镜像部署到目标环境中。
本示例实施方式中,在测试环境运行了所述微服务后,可以根据测试用例对该微服务进行测试,如果每个测试用例都正确执行,或者,没有检测到异常或者出错的事件,可以确定测试成功。在测试成功后,可以将最新版本镜像部署到目标环境中,即将微服务的最新版本提供给互联网用户。其中,目标环境可以包括发布所述微服务的环境,在该环境上部署所述微服务后,网络真实用户可以使用该微服务。
将所述最新版本镜像部署到目标环境中还可以包括在接收到微服务上线的指令时,将所述最新版本镜像上传至目标环境对应的镜像文件库中,以便于在接收到新版本上线的指令时,可以直接从目标环境对应的镜像文件库中获取最新版本镜像,从而对目标环境进行部署。
在本示例实施方式中,由于所述微服务通常与其他微服务共同作用,实现相应的功能,因此在测试环境中部署微服务还可以包括步骤S501至步骤S509。如图5所示,其中:
在接收到更新服务的指令时,开始执行步骤S501.读取服务配置。其中,服务可以包括实现一种功能所需的微服务的集合,例如,实现网页登录功能所需的微服务可以有显示服务、逻辑计算服务、数据传递到数据库服务等等。在步骤S501中,可以读取该服务的配置信息,例如,该服务测试环境的Dockerhub地址、该服务的Git地址、该服务的容器集群的地址(Kubernetes地址)等等。读取到该服务的配置信息后,执行步骤S502.拉取Git项目的代码,其中,该服务的Git项目中包括该服务的最新代码文件,可以创建一个临时目录用来保存拉取的代码。然后执行步骤S503.判读是否重新构建,其中,如果不需要从基础镜像构建目标版本镜像,则步骤S503中判断结果为否,则执行步骤S509.获取当前版本镜像,即,从当前版本进行构建,生成目标版本镜像,进而,执行步骤S505。如果需要从基础镜像构建目标版本镜像,步骤S503中确定重新构建,则执行步骤S504.确定基础镜像。可以从Docker工具中提供的官方镜像中选择一个镜像文件作为基础镜像,也可以确定其他镜像文件为基础镜像,例如,本地保存的操作系统镜像等等。然后执行步骤S505.构建镜像,即,构建目标版本镜像。目标版本镜像构建成功后,可以执行步骤S506将目标版本镜像上传至Dockerhub,可以根据步骤S501中读取的测试环境的Dockerhub地址,将目标版本镜像上传至对应的Dockerhub中。其中,通过docker push命令可以将目标版本镜像上传至Dockerhub。然后,执行步骤S507.清理中间文件,中间文件可以包括在构建目标版本的过程中创建的一些文件,例如,步骤S502中保存Git上拉取的代码的临时文件,或者本地保存的目标版本的镜像文件。之后,执行步骤S508.服务更新到集群,其中,根据步骤S501中读取的容器集群的地址,可以将服务更新到集群中。容器集群管理工具可以将服务部署在测试环境中。
同样地,在目标环境中部署微服务还可以包括步骤S601至步骤S606。如图6所示,其中:
如果接收到外网部署的指令时,执行步骤S601.加载外网配置。其中,外网可以用于发布服务,以供真实用户使用;外网配置可以包括外网的配置信息,例如,外网的Dockerhub地址与用户信息,外网Kubernetes地址、需要部署的服务的信息等等。获取到配置信息后,执行步骤S602.判断是否快速部署,如果不需要快速部署,则执行步骤S606.重新制作镜像,可以通过上述步骤S120中的方式重新制作服务的镜像,也可以通过上述步骤S505制作镜像。如果步骤S602中判断的结果确定快速部署,那么执行步骤S603.拉取目标镜像。通过上述步骤S601中读取配置信息,可以获取目标版本镜像。之后,执行步骤S604.上传到外网的Dockerhub中,即,将目标版本镜像上传到外网的Dockerhub中。然后执行步骤S605.更新外网集群服务,由于,微服务常常依赖其他微服务或者服务,共同完成某种功能,因此微服务的镜像中可以包括能够实现某一功能的服务集群。同样地,使用镜像可以对微服务所在集群进行更新。
以下介绍本发明的装置实施例,可以用于执行本发明上述的自动化部署方法。如图7所示,该自动化部署装置700可以包括:
代码获取单元710,用于在微服务更新操作被触发时,获取所述微服务更新后的代码文件;
镜像生成单元720,用于基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;
测试单元730,用于将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
上线单元740,用于测试成功后,将所述最新版本镜像部署到目标环境中。
由于本发明的示例实施方式的自动化部署装置的各个功能模块与上述自动化部署方法的示例实施方式的步骤对应,因此对于本发明装置实施方式中未披露的细节,请参照本发明上述的自动化部署方法的实施方式。
下面参考图8,其示出了适于用来实现本发明实施例的电子设备的计算机系统800的结构示意图。图8示出的电子设备的计算机系统800仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的自动化部署方法。
例如,所述的电子设备可以实现如图1中所示的:步骤S110.在接收到微服务更新指令时,获取所述微服务更新后的代码文件;步骤S120.基于所述微服务当前版本镜像及所述代码文件,生成所述微服务的最新版本镜像;步骤S130.将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;步骤S140.测试成功后,将所述最新版本镜像部署到目标环境中。
又如,所述的电子设备可以实现如图2所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (8)

1.一种自动化部署方法,其特征在于,包括:
在接收到微服务更新指令时,获取微服务更新后的代码文件;
若所述微服务更新指令满足预设条件,从镜像文件库中确定所述微服务的基础镜像,并基于所述基础镜像及所述代码文件,生成所述微服务的最新版本镜像,其中若测试环境对应的镜像文件库中不存在所述微服务的当前版本镜像,则确定所述微服务更新指令满足所述预设条件,所述微服务的当前版本镜像为根据更新前的微服务的代码文件制作成的镜像;
将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
测试成功后,将所述最新版本镜像部署到目标环境中。
2.根据权利要求1所述的自动化部署方法,其特征在于,所述将所述最新版本镜像部署到目标环境中,包括:
将所述最新版本镜像上传至目标环境对应的镜像文件库中。
3.根据权利要求1所述的自动化部署方法,其特征在于,生成所述微服务的最新版本镜像之后,还包括:
将所述最新版本镜像上传至所述测试环境对应的镜像文件库中。
4.根据权利要求3所述的自动化部署方法,其特征在于,所述将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试,包括:
根据所述测试环境对应的镜像文件库的访问地址以及所述最新版本镜像的标签获取所述最新版本镜像,以部署所述最新版本微服务至测试环境中;
在所述测试环境部署所述最新版本微服务后,启动所述微服务,以对所述最新版本微服务进行测试。
5.根据权利要求1所述的自动化部署方法,其特征在于,所述方法还包括:
如果监测到所述微服务的代码仓库发生推送事件,则确定接收到微服务更新指令。
6.一种自动化部署装置,其特征在于,包括:
代码获取单元,用于在微服务更新操作被触发时,获取微服务更新后的代码文件;
镜像生成单元,用于若所述微服务更新指令满足预设条件,从镜像文件库中确定所述微服务的基础镜像,并基于所述基础镜像及所述代码文件,生成所述微服务的最新版本镜像,其中若测试环境对应的镜像文件库中不存在所述微服务的当前版本镜像,则确定所述微服务更新指令满足所述预设条件,所述微服务的当前版本镜像为根据更新前的微服务的代码文件制作成的镜像;
测试单元,用于将所述最新版本镜像部署至测试环境中,以对最新版本的微服务进行测试;
上线单元,用于测试成功后,将所述最新版本镜像部署到目标环境中。
7.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至5中任一项所述的自动化部署方法。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的自动化部署方法。
CN201811120119.7A 2018-09-19 2018-09-19 自动化部署方法、装置、介质及电子设备 Active CN109358858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811120119.7A CN109358858B (zh) 2018-09-19 2018-09-19 自动化部署方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811120119.7A CN109358858B (zh) 2018-09-19 2018-09-19 自动化部署方法、装置、介质及电子设备

Publications (2)

Publication Number Publication Date
CN109358858A CN109358858A (zh) 2019-02-19
CN109358858B true CN109358858B (zh) 2022-03-22

Family

ID=65347746

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811120119.7A Active CN109358858B (zh) 2018-09-19 2018-09-19 自动化部署方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN109358858B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109981351A (zh) * 2019-03-06 2019-07-05 浪潮通用软件有限公司 一种私有云部署方法
CN111352635A (zh) * 2019-04-16 2020-06-30 深圳市鸿合创新信息技术有限责任公司 一种部署微服务的方法及装置、电子设备
CN110262931B (zh) * 2019-05-31 2023-02-28 深圳市杰科数码有限公司 一种键盘测试方法以及键盘测试计算机
CN112148583B (zh) * 2019-06-27 2024-10-15 北京车和家信息技术有限公司 一种软件测试方法及系统
CN112241350B (zh) * 2019-07-16 2022-11-01 中国移动通信集团浙江有限公司 微服务评估方法、装置、计算设备及微服务检测系统
CN110413379A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 信息处理方法及其装置、系统、电子设备和介质
CN110765004A (zh) * 2019-09-26 2020-02-07 北京你财富计算机科技有限公司 一种基于沙盒系统的测试方法、装置及电子设备
CN110750270A (zh) * 2019-09-29 2020-02-04 北京东软望海科技有限公司 一种套装软件的部署方法及装置
CN110825399B (zh) * 2019-11-07 2024-02-20 郑州悉知信息科技股份有限公司 一种应用程序的部署方法及装置
CN111026424A (zh) * 2019-12-10 2020-04-17 中国银行股份有限公司 一种服务更新方法及装置
CN111045706B (zh) * 2019-12-16 2023-10-24 广州品唯软件有限公司 测试项目的执行包更新方法及装置和计算机可读存储介质
CN111190778A (zh) * 2019-12-26 2020-05-22 曙光信息产业股份有限公司 用于分布式存储系统的磁盘阵列测试系统
CN111142920A (zh) * 2019-12-31 2020-05-12 浪潮云信息技术有限公司 一种基于容器技术的自动化蓝绿发布方法
CN111858297A (zh) * 2020-01-21 2020-10-30 北京嘀嘀无限科技发展有限公司 线上仿真测试环境构建方法、装置和计算机可读存储介质
CN111338641A (zh) * 2020-02-11 2020-06-26 腾讯云计算(北京)有限责任公司 一种应用发布方法及装置
CN113360160A (zh) * 2020-03-05 2021-09-07 北京沃东天骏信息技术有限公司 部署应用的方法、装置、电子设备和存储介质
CN111443925B (zh) * 2020-04-15 2024-03-01 北京易点淘网络技术有限公司 镜像安装方法、主次服务器、系统、电子设备及存储介质
CN111654533A (zh) * 2020-05-13 2020-09-11 国云科技股份有限公司 一种基于容器环境的应用自动交付系统
CN111596928B (zh) * 2020-05-19 2021-08-13 吉林大学 一种应用控制方法、装置及电子设备
CN111679890A (zh) * 2020-06-10 2020-09-18 北京金山云网络技术有限公司 服务镜像的生成方法、装置及电子设备
CN111736889B (zh) * 2020-06-12 2023-09-19 中国银行股份有限公司 版本增量文件获取方法及装置
CN114077438A (zh) * 2020-08-03 2022-02-22 深圳市天英联合教育股份有限公司 一种版本同步的方法、gitlab服务器及测试服务器
CN112035107A (zh) * 2020-08-26 2020-12-04 北京字节跳动网络技术有限公司 网页元素的编辑方法、装置、设备及存储介质
CN112181439A (zh) * 2020-09-24 2021-01-05 中国建设银行股份有限公司 一种微服务部署方法、装置、电子设备及可读存储介质
CN112162931A (zh) * 2020-10-29 2021-01-01 京东数字科技控股股份有限公司 提测方法、系统、电子设备及存储介质
CN112230946A (zh) * 2020-11-18 2021-01-15 浪潮云信息技术股份公司 一种基于容器的应用系统部署方法及相关装置
CN112346822A (zh) * 2020-12-01 2021-02-09 成都精灵云科技有限公司 基于Kubernetes的插件管理系统及方法
CN113031972A (zh) * 2020-12-02 2021-06-25 杭州玳数科技有限公司 一种云原生场景下flink流计算依赖文件与镜像解耦方法
CN113760301B (zh) * 2020-12-30 2024-05-17 京东科技信息技术有限公司 一种微服务应用部署方法、装置、设备及存储介质
CN112764753B (zh) * 2020-12-31 2024-04-12 北京知因智慧科技有限公司 一种项目的部署方法、装置、电子设备及存储介质
CN112699041B (zh) * 2021-01-04 2024-03-26 中车青岛四方车辆研究所有限公司 一种嵌入式软件自动部署方法、系统及设备
CN113190327B (zh) * 2021-04-30 2023-02-03 平安证券股份有限公司 微服务部署方法、装置、设备及存储介质
CN113504916B (zh) * 2021-07-23 2024-07-26 京东方科技集团股份有限公司 一种代码更新方法和装置、计算机设备及介质
CN113515297B (zh) * 2021-08-12 2023-09-26 深圳市晨北科技有限公司 一种版本更新方法、装置、电子设备及存储介质
CN114020609A (zh) * 2021-10-28 2022-02-08 中国银行股份有限公司 手机银行功能测试环境地址配置方法及装置
CN113946359A (zh) * 2021-11-02 2022-01-18 中国银行股份有限公司 版本更新方法、装置及系统
CN115016820A (zh) * 2022-06-29 2022-09-06 广州高专资讯科技有限公司 一种应用程序更新方法、装置、设备及存储介质
CN115469882A (zh) * 2022-09-16 2022-12-13 上海百胜软件股份有限公司 软件项目管理方法、装置、电子设备及存储介质
CN115599399A (zh) * 2022-11-30 2023-01-13 广东省科技基础条件平台中心(Cn) 一种应用程序部署方法、装置及存储介质
CN117270886B (zh) * 2023-11-17 2024-02-06 浪潮通用软件有限公司 一种微服务系统开发部署方法、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储系统部署方法
CN105760167A (zh) * 2016-02-23 2016-07-13 浪潮软件集团有限公司 一种基于Docker的持续集成方法
CN106101176A (zh) * 2016-05-27 2016-11-09 成都索贝数码科技股份有限公司 一种一体化的融媒体云生产发布系统与方法
CN106843976A (zh) * 2017-01-25 2017-06-13 北京百度网讯科技有限公司 用于生成镜像文件的方法和装置
CN106873975A (zh) * 2016-12-30 2017-06-20 武汉默联股份有限公司 基于Docker的devops持续交付与自动化系统及方法
CN107483225A (zh) * 2017-07-04 2017-12-15 北京奥鹏远程教育中心有限公司 Docker在教育云平台上应用方法及装置
CN108023902A (zh) * 2016-10-31 2018-05-11 北京金山云网络技术有限公司 一种构建网盘服务镜像及部署网盘服务的方法及装置
CN108196843A (zh) * 2018-01-09 2018-06-22 成都睿码科技有限责任公司 可视化Docker容器自动编译部署的运维方法
CN108279921A (zh) * 2018-01-22 2018-07-13 广州欧赛斯信息科技有限公司 一种基于容器平台的自动灰度发布方法、系统及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677356A (zh) * 2016-01-11 2016-06-15 上海雷腾软件股份有限公司 一种运维方法及设备
US10216509B2 (en) * 2016-03-18 2019-02-26 TUPL, Inc. Continuous and automatic application development and deployment
US10496987B2 (en) * 2016-09-13 2019-12-03 Verizon Patent And Licensing Inc. Containerization of network services

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储系统部署方法
CN105760167A (zh) * 2016-02-23 2016-07-13 浪潮软件集团有限公司 一种基于Docker的持续集成方法
CN106101176A (zh) * 2016-05-27 2016-11-09 成都索贝数码科技股份有限公司 一种一体化的融媒体云生产发布系统与方法
CN108023902A (zh) * 2016-10-31 2018-05-11 北京金山云网络技术有限公司 一种构建网盘服务镜像及部署网盘服务的方法及装置
CN106873975A (zh) * 2016-12-30 2017-06-20 武汉默联股份有限公司 基于Docker的devops持续交付与自动化系统及方法
CN106843976A (zh) * 2017-01-25 2017-06-13 北京百度网讯科技有限公司 用于生成镜像文件的方法和装置
CN107483225A (zh) * 2017-07-04 2017-12-15 北京奥鹏远程教育中心有限公司 Docker在教育云平台上应用方法及装置
CN108196843A (zh) * 2018-01-09 2018-06-22 成都睿码科技有限责任公司 可视化Docker容器自动编译部署的运维方法
CN108279921A (zh) * 2018-01-22 2018-07-13 广州欧赛斯信息科技有限公司 一种基于容器平台的自动灰度发布方法、系统及装置

Also Published As

Publication number Publication date
CN109358858A (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
CN109358858B (zh) 自动化部署方法、装置、介质及电子设备
CN108196878B (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
CN107491329B (zh) Docker镜像构建方法、设备、存储介质以及电子装置
CN107608710B (zh) 基于Jenkins工具的软件项目构建任务配置方法及装置
US20080244565A1 (en) Dynamic software installation and configuration
CN107193607B (zh) 用于更新代码文件的方法和装置、存储介质、处理器以及终端
CN110647332A (zh) 基于容器云的软件部署方法和装置
CN108196915A (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
CN108776643B (zh) 一种基于版本控制流程的目标代码合并控制方法及系统
CN111767208B (zh) 一种自动测试方法及装置
CN110727575B (zh) 一种信息处理方法、系统、装置、以及存储介质
CN108196825A (zh) 软件项目的构建方法及系统
CN106557878B (zh) 开发项目管理方法及装置
CN111142884A (zh) 小程序的版本部署方法、装置、电子设备及存储介质
CN109284126B (zh) 类库自动更新方法、装置、电子设备、存储介质
CN111158730A (zh) 系统更新方法、装置、电子设备和可读存储介质
CN105677394A (zh) 一种终端设备的应用程序升级方法和装置
US9477447B1 (en) Semantic representations of software extensions
US9760364B2 (en) Checks for software extensions
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN116775061A (zh) 微服务应用的部署方法、装置、设备及存储介质
CN115167874B (zh) 自动驾驶软件镜像部署方法、装置、电子设备和可读介质
CN111258618A (zh) 文件配置方法、装置、计算机设备和存储介质
CN112631931B (zh) 一种版本测试方法、装置、存储介质和电子设备
CN110580216A (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