CN111813379A - 应用部署方法及装置、电子设备、计算机可读存储介质 - Google Patents
应用部署方法及装置、电子设备、计算机可读存储介质 Download PDFInfo
- Publication number
- CN111813379A CN111813379A CN201910288370.2A CN201910288370A CN111813379A CN 111813379 A CN111813379 A CN 111813379A CN 201910288370 A CN201910288370 A CN 201910288370A CN 111813379 A CN111813379 A CN 111813379A
- Authority
- CN
- China
- Prior art keywords
- branch
- environment
- application
- build
- source code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000013515 script Methods 0.000 claims abstract description 54
- 238000010276 construction Methods 0.000 claims abstract description 43
- 230000006870 function Effects 0.000 claims description 44
- 238000012795 verification Methods 0.000 claims description 41
- 238000004088 simulation Methods 0.000 claims description 33
- 238000004519 manufacturing process Methods 0.000 claims description 31
- 238000012790 confirmation Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 10
- 230000007547 defect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000002950 deficient Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 230000002411 adverse Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000012384 transportation and delivery Methods 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
Abstract
本说明书一个或多个实施例提供一种应用部署方法及装置、电子设备、计算机可读存储介质,该方法可以包括:从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;根据所述构建脚本将应用部署至相应环境中。
Description
技术领域
本说明书一个或多个实施例涉及应用部署技术领域,尤其涉及一种应用部署方法及装置、电子设备、计算机可读存储介质。
背景技术
通过采用DevOps(Development-Operations)产品或解决方案,可以实现从代码到应用的持续集成和持续交付,从而方便快速地对产品进行功能迭代和演进。例如,云原生应用可以模块分拆、解耦成不同的服务组件,以充分利用云计算所具有的按需分配资源和弹性计算等特性,也能提升应用的整体敏捷性和可维护性;而目前,越来越多的云原生应用会产生大量的应用组件,各个组件的敏捷交付频率越来越高,使得对应用交付的设计和管理有更高的要求。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种应用部署方法及装置、电子设备、计算机可读存储介质。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种应用部署方法,包括:
从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;
根据所述构建脚本将应用部署至相应环境中。
根据本说明书一个或多个实施例的第二方面,提出了一种应用部署方法,包括:
从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间;
通过所述构建功能将应用部署至相应环境中。
根据本说明书一个或多个实施例的第三方面,提出了一种应用部署装置,包括:
获取单元,从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;
部署单元,根据所述构建脚本将应用部署至相应环境中。
根据本说明书一个或多个实施例的第四方面,提出了一种应用部署装置,包括:
获取单元,从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间;
部署单元,通过所述构建功能将应用部署至相应环境中。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种应用部署***的架构示意图。
图2A是一示例性实施例提供的一种应用部署方法的流程图。
图2B是一示例性实施例提供的另一种应用部署方法的流程图。
图3是一示例性实施例提供的一种***署应用的交互图。
图4是图3所示实施例对应的示意图。
图5是一示例性实施例提供的一种设备的结构示意图。
图6是一示例性实施例提供的一种应用部署装置的框图。
图7是一示例性实施例提供的另一种应用部署装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图1是一示例性实施例提供的一种应用部署***的架构示意图。如图1所示,该***可以包括服务器11、网络12、若干电子设备,比如PC13和PC14。其中,服务器11在运行过程中,可以运行应用部署***的服务端侧的程序,以实现持续交付等处理功能;而PC13、PC14在运行过程中,可以运行应用部署***的客户端侧的程序,以实现相关的展示、人机交互等功能,以便于开发人员提交新特性(feature)分支、管理员查看验证结果等,从而在服务器11与PC13、PC14之间配合实现该应用部署***。
其中,服务器11可以为包含一独立主机的物理服务器,或者该服务器11可以为主机集群承载的虚拟服务器(即云服务器)。电子设备除了上述的PC13、PC14之外,还可以包括下述其他类型的设备:手机、平板设备、笔记本电脑、掌上电脑(PDAs,PersonalDigitalAssistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书一个或多个实施例并不对此进行限制。而对于PC13、PC14与服务器11之间进行交互的网络12,可以包括多种类型的有线或无线网络。
图2A是一示例性实施例提供的一种应用部署方法的流程图。如图2A所示,该方法应用于服务器(例如图1所示的服务器11等),可以包括以下步骤:
步骤202A,从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库。
在一实施例中,通过设计和使用相互分离的应用源码仓库、构建源码仓库,使得本说明书中可以将应用源码与构建脚本相互分离,即应用源码存储于应用源码仓库、构建脚本存储于构建源码仓库,那么开发人员针对应用进行版本更新的过程中,只需要针对应用源码仓库进行访问,而不涉及到构建源码仓库,避免开发人员接触构建源码仓库中的构建脚本,防止开发人员对构建脚本进行修改等。
在一实施例中,访问所述构建源码仓库所需的权限级别高于开发人员被分配的权限级别。换言之,通过权限级别的设置,使得开发人员不具有对构建源码仓库的访问权限,可以限制开发人员接触到构建源码仓库内存储的构建脚本,从而对应用源码和与环境相关的敏感信息实现了有效隔离,有助于实现高安全级别的应用部署方案。
在一实施例中,应用源码仓库、构建源码仓库可以为Git代码仓库,或者可以采用其他类型的代码仓库,本说明书并不对此进行限制。
在一实施例中,不同类型的环境分别对应于不同的构建脚本。不同的构建脚本可以存储于同一构建源码仓库;或者,每一类型的环境可以分别存在一一对应的构建源码仓库,以分别存储每一类型的环境对应的构建脚本。
步骤204A,根据所述构建脚本将应用部署至相应环境中。
在一实施例中,根据构建脚本可以将应用自动化部署至相应的环境中。其中,不同环境对应的构建脚本不同,需要根据实际情况确定需要调取的构建脚本,以确保将应用准确部署至相应类型的环境中。
在一实施例中,构建脚本可以为声明式,从而基于该构建脚本自动实现源码构建、测试、镜像构建和推送、部署至相应环境等操作。当然,构建脚本还可以采用其他形式,本说明书并不对此进行限制。
在一实施例中,可以将所述应用的特定分支部署至所述构建脚本对应的环境中;其中,所述特定分支的类型与所述构建脚本对应的环境的类型之间符合预定义的类型映射关系。换言之,本说明书中可以基于上述预定义的类型映射关系,预先在分支类型与环境类型之间进行绑定,从而基于该类型映射关系和需要部署的分支的类型,准确地将该分支部署至相应类型的环境中,尤其是可以避免尚未验证、可能存在缺陷的应用部署至生产环境中,防止产生恶劣影响。
在一实施例中,当所述特定分支为新特性(feature)分支时,所述构建脚本对应于预览环境;换言之,可以将新特性分支部署至预览环境中,以便管理员能够对新特性分支的运行情况进行检验,防止存在缺陷的新特性分支被合并至最近分支或主分支。例如,在将所述新特性分支部署至所述预览环境后,可以向管理员提供针对所述新特性分支的验证结果,使得管理员可以针对该验证结果进行查看,以确定新特性分支是否存在缺陷;若存在缺陷,则将新特性分支打回至开发人员处进行修正,若通过验证,则管理员可以针对验证结果发出合并确认消息,从而基于该合并确认消息可以将所述新特性分支合并至所述最近分支。
在一实施例中,当所述特定分支为最近分支时,所述构建脚本对应于模拟环境;换言之,可以将最近分支部署至模拟环境中,以便管理员能够对最近分支的运行情况进行检验,防止存在缺陷的最近分支被合并至主分支。例如,在将所述最近分支部署至所述模拟环境后,可以向管理员提供针对所述最近分支的验证结果,使得管理员可以针对该验证结果进行查看,以确定最近分支是否存在缺陷;若存在缺陷,则将最近分支打回至开发人员处进行修正(可能是新特性分支存在问题,或者合并前的最近分支存在问题),若通过验证,则管理员可以针对验证结果发出合并确认消息,从而基于该合并确认消息可以将所述最近分支合并至所述主分支。
在一实施例中,当所述特定分支为主分支时,所述构建脚本对应于生产环境。通过上述实施例的描述,可知管理员已经分别验证过新特性分支和最近分支,并在确保新特性分支在预览环境下已通过验证、最近分支在模拟环境下已通过验证的情况下,才允许将新特性分支合并至最近分支、将最近分支合并至主分支,因而已经尽可能地实现了对新版本应用的有效检验、排除了可能存在的缺陷,从而确保主分支在生产环境中能够正常运行。可见,通过上述分支类型与环境类型之间的绑定,可以实现对应用缺陷的有效检验和排除,有助于在应用实现版本更新的过程中提升安全性和稳定性。
图2B是一示例性实施例提供的另一种应用部署方法的流程图。如图2B所示,该方法应用于服务器(例如图1所示的服务器11等),可以包括以下步骤:
步骤202B,从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间。
在一实施例中,应用源码存储空间用于存储应用源码,譬如该应用源码存储空间可以为图2A所示实施例中的应用源码仓库。构建源码存储空间用于存储构建功能,譬如该构建源码存储空间可以为图2A所示实施例中的构建源码仓库。
在一实施例中,通过设计和使用相互分离的应用源码存储空间、构建源码存储空间,使得本说明书中可以将应用源码与构建功能相互分离,即应用源码存储于应用源码存储空间、构建功能存储于构建源码存储空间,那么开发人员针对应用进行版本更新的过程中,只需要针对应用源码存储空间进行访问,而不涉及到构建源码存储空间,避免开发人员接触构建源码存储空间中的构建功能,防止开发人员对构建功能进行修改等。
在一实施例中,访问所述构建源码存储空间所需的权限级别高于开发人员被分配的权限级别。换言之,通过权限级别的设置,使得开发人员不具有对构建源码存储空间的访问权限,可以限制开发人员接触到构建源码存储空间内存储的构建功能,从而对应用源码和与环境相关的敏感信息实现了有效隔离,有助于实现高安全级别的应用部署方案。
在一实施例中,应用源码存储空间、构建源码存储空间可以为Git代码存储空间,或者可以采用其他类型的代码存储空间,本说明书并不对此进行限制。
在一实施例中,不同类型的环境分别对应于不同的构建功能。不同的构建功能可以存储于同一构建源码存储空间;或者,每一类型的环境可以分别存在一一对应的构建源码存储空间,以分别存储每一类型的环境对应的构建功能。
步骤204B,通过所述构建功能将应用部署至相应环境中。
在一实施例中,通过构建功能可以将应用自动化部署至相应的环境中,譬如该构建功能可以通过脚本来实现,即该构建功能可以为图2A所示实施例中的构建脚本。其中,不同环境对应的构建功能不同,需要根据实际情况确定需要调取的构建功能,以确保将应用准确部署至相应类型的环境中。
在一实施例中,构建功能可以为声明式,从而基于该构建功能自动实现源码构建、测试、镜像构建和推送、部署至相应环境等操作。当然,构建功能还可以采用其他形式,本说明书并不对此进行限制。
在一实施例中,可以将所述应用的特定分支部署至所述构建功能对应的环境中;其中,所述特定分支的类型与所述构建功能对应的环境的类型之间符合预定义的类型映射关系。换言之,本说明书中可以基于上述预定义的类型映射关系,预先在分支类型与环境类型之间进行绑定,从而基于该类型映射关系和需要部署的分支的类型,准确地将该分支部署至相应类型的环境中,尤其是可以避免尚未验证、可能存在缺陷的应用部署至生产环境中,防止产生恶劣影响。
在一实施例中,当所述特定分支为新特性分支时,所述构建功能对应于预览环境;换言之,可以将新特性分支部署至预览环境中,以便管理员能够对新特性分支的运行情况进行检验,防止存在缺陷的新特性分支被合并至最近分支或主分支。例如,在将所述新特性分支部署至所述预览环境后,可以向管理员提供针对所述新特性分支的验证结果,使得管理员可以针对该验证结果进行查看,以确定新特性分支是否存在缺陷;若存在缺陷,则将新特性分支打回至开发人员处进行修正,若通过验证,则管理员可以针对验证结果发出合并确认消息,从而基于该合并确认消息可以将所述新特性分支合并至所述最近分支。
在一实施例中,当所述特定分支为最近分支时,所述构建功能对应于模拟环境;换言之,可以将最近分支部署至模拟环境中,以便管理员能够对最近分支的运行情况进行检验,防止存在缺陷的最近分支被合并至主分支。例如,在将所述最近分支部署至所述模拟环境后,可以向管理员提供针对所述最近分支的验证结果,使得管理员可以针对该验证结果进行查看,以确定最近分支是否存在缺陷;若存在缺陷,则将最近分支打回至开发人员处进行修正(可能是新特性分支存在问题,或者合并前的最近分支存在问题),若通过验证,则管理员可以针对验证结果发出合并确认消息,从而基于该合并确认消息可以将所述最近分支合并至所述主分支。
在一实施例中,当所述特定分支为主分支时,所述构建功能对应于生产环境。通过上述实施例的描述,可知管理员已经分别验证过新特性分支和最近分支,并在确保新特性分支在预览环境下已通过验证、最近分支在模拟环境下已通过验证的情况下,才允许将新特性分支合并至最近分支、将最近分支合并至主分支,因而已经尽可能地实现了对新版本应用的有效检验、排除了可能存在的缺陷,从而确保主分支在生产环境中能够正常运行。可见,通过上述分支类型与环境类型之间的绑定,可以实现对应用缺陷的有效检验和排除,有助于在应用实现版本更新的过程中提升安全性和稳定性。
图3是一示例性实施例提供的一种***署应用的交互图;图4是图3所示实施例对应的示意图。在图3-4所示的实施例中,假定需要部署的应用为云原生应用,通过诸如Kubernetes提供相应的容器应用管理服务(用于配置形成各种类型的环境)、通过Jenkins提供DevOps所需的相关功能,当然本说明书并不对此进行限制。针对应用的部署过程,可以包括以下步骤:
步骤301,应用源码仓库获取开发人员提交的新特性分支(图4中标示为feature)。
在一实施例中,新特性分支可以为开发人员针对应用所开发的新功能。最终,本说明书可以通过将该新特性分支的源码合并至主分支的源码中,并部署至生产环境中,从而实现对应用的版本更新和对该新特性分支的顺利使用。
在一实施例中,应用源码仓库可以为Git代码仓库,并具体承载于Git服务器处。
步骤302,应用源码仓库接收开发人员发起的合并请求(Merge Request,简称MR)。
在一实施例中,开发人员通过发起MR,其目的在于:请求将上述提及的新特性分支合并至最近分支(图4中标示为latest),从而进一步合并至主分支(图4中标示为master)以及部署至生产环境。
步骤303,MR自动触发Jenkins中定义的预览管线(图4中标示为preview-pipeline)。
在一实施例中,预览管线为Jenkins中预先定义的流水线任务。当预览管线被触发后,该预览管线可以自动从构建源码仓库拉取预览管线的源码项目,并按照该源码项目中的声明式脚本(譬如可以记录Jenkinsfile文件中)运行源码编译、测试、容器镜像构建和推送(推送至镜像仓库)、应用部署至预览环境,还可以向预先指定的通讯对象发送通知消息(比如向即时通讯应用中的个人或群组发送即时通讯消息,或者向个人邮箱或群组邮箱发送电子邮件,或者向指定的手机号码发送短信等)。
在上述实施例中,预先配置了MR与预览管线之间的关联关系,使得Jenkins中的预览管线能够准确响应于开发人员发起的MR,从而自动将新特性分支部署至预览环境,而不会部署至模拟环境或生产环境等其他类型的环境(相当于在新特性分支与预览环境之间实现了绑定),确保管理员能够针对该新特性分支进行检验,防止存在缺陷的新特性分支对模拟环境或生产环境造成不良影响。
在上述实施例中,应用源码仓库与构建源码仓库之间相互分开、隔离,其中开发人员仅具有针对应用源码仓库的访问权限,而并不具有针对构建源码仓库的访问权限,只有管理员具有针对构建源码仓库的访问权限,使得开发人员仅能够针对应用源码仓库中的应用源码进行提交、读取、修改等,而并不能够访问构建源码仓库,即开发人员无法访问上述预览管线的源码项目,从而避免开发人员对该源码项目进行修改等,防止开发人员影响或干涉针对预览环境的部署过程。其中,构建源码仓库可以为Git代码仓库,并具体承载于Git服务器处。
步骤304,Jenkins返回验证结果,使得验证结果被传递至开发人员和管理员。
在一实施例中,通过将验证结果传递至开发人员,使得当验证结果为未通过时,可使开发人员及时对新特性分支进行修正。而通过将验证结果传递至管理员,使得管理员能够进行查看,并据此确定新特性分支是否存在缺陷,以及是否允许将新特性分支合并至最近分支。
步骤305,当确定新特性分支通过验证后,应用源码仓库根据管理员发出的接受MR的指令,确认将新特性分支合并至最近分支。
步骤306,管理员接受MR的操作自动触发Jenkins中定义的构建模拟管线(图4中标示为staging-pipeline)。
在一实施例中,模拟管线为Jenkins中预先定义的流水线任务。当模拟管线被触发后,该模拟管线可以自动从构建源码仓库拉取模拟管线的源码项目,并按照该源码项目中的声明式脚本(譬如可以记录Jenkinsfile文件中)运行源码编译、测试、容器镜像构建和推送(推送至镜像仓库)、应用部署至模拟环境,还可以向预先指定的通讯对象发送通知消息(比如向即时通讯应用中的个人或群组发送即时通讯消息,或者向个人邮箱或群组邮箱发送电子邮件,或者向指定的手机号码发送短信等)。
在上述实施例中,预先配置了管理员对MR的接受操作与模拟管线之间的关联关系,使得Jenkins中的模拟管线能够准确响应于管理员对MR的接受操作,从而自动将最近分支(包含已合并的新特性分支)部署至模拟环境,而不会部署至生产环境等其他类型的环境(相当于在最近分支与模拟环境之间实现了绑定),确保管理员能够针对该最近分支进行检验,防止存在缺陷的最近分支对生产环境造成不良影响。
在上述实施例中,预览管线的源码项目与模拟管线的源码项目可以存储于同一构建源码仓库;或者,预览管线的源码项目与模拟管线的源码项目可以分别存储于不同的构建源码仓库。
步骤307,Jenkins清理预览环境。
步骤308,管理员对最近分支在模拟环境的运行情况进行验证,在验证通过后向应用源码仓库发送确认消息,以确认将最近分支合并至主分支。
步骤309,管理员对最近分支的确认消息,自动触发Jenkins中定义的构建生产管线(图4中标示为prod-pipeline,即production-pipeline)。
在一实施例中,生产管线为Jenkins中预先定义的流水线任务。当生产管线被触发后,该生产管线可以自动从构建源码仓库拉取生产管线的源码项目,并按照该源码项目中的声明式脚本(譬如可以记录Jenkinsfile文件中)运行源码编译、测试、容器镜像构建和推送(推送至镜像仓库)、应用部署至生产环境,还可以向预先指定的通讯对象发送通知消息(比如向即时通讯应用中的个人或群组发送即时通讯消息,或者向个人邮箱或群组邮箱发送电子邮件,或者向指定的手机号码发送短信等)。
在上述实施例中,预先配置了管理员对最近分支的验证结果的确认操作与生产管线之间的关联关系,使得Jenkins中的生产管线能够准确响应于管理员对最近分支的验证结果的确认操作,从而自动将主分支(包含已合并的最近分支,且该最近分支包含已合并的新特性分支)部署至生产环境。
在上述实施例中,预览管线的源码项目、模拟管线的源码项目与生产管线的源码项目可以存储于同一构建源码仓库;或者,预览管线的源码项目、模拟管线的源码项目与生产管线的源码项目可以分别存储于不同的构建源码仓库。
综上所述,本说明书中通过将应用源码仓库与构建源码仓库相互分离,并且普通的开发人员的权限仅能够创建新特性分支并提交至应用源码仓库、向应用源码仓库发起MR等,不具有针对构建源码仓库的访问权限,只有管理员能够针对构建源码仓库进行访问,以负责应用在模拟环境和生产环境中的发布管控、Jenkins构建环境和Kubernetes集群环境的管理等,可以确保开发人员不会对构建源码仓库中存储的源码项目进行修改等,防止对相应的环境部署造成影响。同时,通过将各个类型的分支与环境之间进行绑定,可以确保新特性分支部署至预览环境、最近分支部署至模拟环境、主分支部署至生产环境,而避免将可能存在缺陷的新特性分支部署至模拟环境或生产环境,或者将最近分支部署至生产环境,确保应用版本升级过程中的安全与稳定性。
图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行,在逻辑层面上形成应用部署装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,在一种软件实施方式中,该应用部署装置可以包括:
获取单元61,从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;
部署单元62,根据所述构建脚本将应用部署至相应环境中。
可选的,访问所述构建源码仓库所需的权限级别高于开发人员被分配的权限级别。
可选的,所述部署单元62具体用于:
将所述应用的特定分支部署至所述构建脚本对应的环境中;其中,所述特定分支的类型与所述构建脚本对应的环境的类型之间符合预定义的类型映射关系。
可选的,
当所述特定分支为新特性分支时,所述构建脚本对应于预览环境;
当所述特定分支为最近分支时,所述构建脚本对应于模拟环境;
当所述特定分支为主分支时,所述构建脚本对应于生产环境。
可选的,还包括:
第一提供单元63,在将所述新特性分支部署至所述预览环境后,向管理员提供针对所述新特性分支的验证结果;
第一合并单元64,根据所述管理员针对验证结果发出的合并确认消息,将所述新特性分支合并至所述最近分支。
可选的,还包括:
第二提供单元65,在将所述最近分支部署至所述模拟环境后,向管理员提供针对所述最近分支的验证结果;
第二合并单元66,根据所述管理员针对验证结果发出的合并确认消息,将所述最近分支合并至所述主分支。
请参考图7,在另一种软件实施方式中,该应用部署装置可以包括:
获取单元71,从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间;
部署单元72,通过所述构建功能将应用部署至相应环境中。
可选的,访问所述构建源码存储空间所需的权限级别高于开发人员被分配的权限级别。
可选的,所述部署单元72具体用于:
将所述应用的特定分支部署至所述构建功能对应的环境中;其中,所述特定分支的类型与所述构建功能对应的环境的类型之间符合预定义的类型映射关系。
可选的,
当所述特定分支为新特性分支时,所述构建功能对应于预览环境;
当所述特定分支为最近分支时,所述构建功能对应于模拟环境;
当所述特定分支为主分支时,所述构建功能对应于生产环境。
可选的,还包括:
第一提供单元73,在将所述新特性分支部署至所述预览环境后,向管理员提供针对所述新特性分支的验证结果;
第一合并单元74,根据所述管理员针对验证结果发出的合并确认消息,将所述新特性分支合并至所述最近分支。
可选的,还包括:
第二提供单元75,在将所述最近分支部署至所述模拟环境后,向管理员提供针对所述最近分支的验证结果;
第二合并单元76,根据所述管理员针对验证结果发出的合并确认消息,将所述最近分支合并至所述主分支。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (16)
1.一种应用部署方法,其特征在于,包括:
从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;
根据所述构建脚本将应用部署至相应环境中。
2.根据权利要求1所述的方法,其特征在于,访问所述构建源码仓库所需的权限级别高于开发人员被分配的权限级别。
3.根据权利要求1所述的方法,其特征在于,所述根据所述构建脚本将应用部署至相应环境中,包括:
将所述应用的特定分支部署至所述构建脚本对应的环境中;其中,所述特定分支的类型与所述构建脚本对应的环境的类型之间符合预定义的类型映射关系。
4.根据权利要求3所述的方法,其特征在于,
当所述特定分支为新特性分支时,所述构建脚本对应于预览环境;
当所述特定分支为最近分支时,所述构建脚本对应于模拟环境;
当所述特定分支为主分支时,所述构建脚本对应于生产环境。
5.根据权利要求4所述的方法,其特征在于,还包括:
在将所述新特性分支部署至所述预览环境后,向管理员提供针对所述新特性分支的验证结果;
根据所述管理员针对验证结果发出的合并确认消息,将所述新特性分支合并至所述最近分支。
6.根据权利要求4所述的方法,其特征在于,还包括:
在将所述最近分支部署至所述模拟环境后,向管理员提供针对所述最近分支的验证结果;
根据所述管理员针对验证结果发出的合并确认消息,将所述最近分支合并至所述主分支。
7.一种应用部署方法,其特征在于,包括:
从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间;
通过所述构建功能将应用部署至相应环境中。
8.一种应用部署装置,其特征在于,包括:
获取单元,从构建源码仓库获取构建脚本,所述构建源码仓库区别于应用源码仓库;
部署单元,根据所述构建脚本将应用部署至相应环境中。
9.根据权利要求8所述的装置,其特征在于,访问所述构建源码仓库所需的权限级别高于开发人员被分配的权限级别。
10.根据权利要求8所述的装置,其特征在于,所述部署单元具体用于:
将所述应用的特定分支部署至所述构建脚本对应的环境中;其中,所述特定分支的类型与所述构建脚本对应的环境的类型之间符合预定义的类型映射关系。
11.根据权利要求10所述的装置,其特征在于,
当所述特定分支为新特性分支时,所述构建脚本对应于预览环境;
当所述特定分支为最近分支时,所述构建脚本对应于模拟环境;
当所述特定分支为主分支时,所述构建脚本对应于生产环境。
12.根据权利要求11所述的装置,其特征在于,还包括:
第一提供单元,在将所述新特性分支部署至所述预览环境后,向管理员提供针对所述新特性分支的验证结果;
第一合并单元,根据所述管理员针对验证结果发出的合并确认消息,将所述新特性分支合并至所述最近分支。
13.根据权利要求11所述的装置,其特征在于,还包括:
第二提供单元,在将所述最近分支部署至所述模拟环境后,向管理员提供针对所述最近分支的验证结果;
第二合并单元,根据所述管理员针对验证结果发出的合并确认消息,将所述最近分支合并至所述主分支。
14.一种应用部署装置,其特征在于,包括:
获取单元,从构建源码存储空间获取构建功能,所述构建源码存储空间区别于应用源码存储空间;
部署单元,通过所述构建功能将应用部署至相应环境中。
15.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910288370.2A CN111813379B (zh) | 2019-04-11 | 2019-04-11 | 应用部署方法及装置、电子设备、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910288370.2A CN111813379B (zh) | 2019-04-11 | 2019-04-11 | 应用部署方法及装置、电子设备、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813379A true CN111813379A (zh) | 2020-10-23 |
CN111813379B CN111813379B (zh) | 2024-05-31 |
Family
ID=72843753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910288370.2A Active CN111813379B (zh) | 2019-04-11 | 2019-04-11 | 应用部署方法及装置、电子设备、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813379B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590114A (zh) * | 2021-08-12 | 2021-11-02 | 北京滴普科技有限公司 | 一种流水线编排方法、装置及计算机设备 |
WO2022121971A1 (zh) * | 2020-12-10 | 2022-06-16 | 百果园技术(新加坡)有限公司 | 前端项目处理方法、装置、设备、管理***及存储介质 |
CN116301932A (zh) * | 2022-12-21 | 2023-06-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044531A1 (en) * | 2003-06-09 | 2005-02-24 | Erc-Ip, Llc | Methods and systems for deploying computer source code |
CN104536744A (zh) * | 2014-12-19 | 2015-04-22 | 微梦创科网络科技(中国)有限公司 | 一种自动化构建与部署代码的方法及服务器 |
US20160378449A1 (en) * | 2015-06-24 | 2016-12-29 | Vmware, Inc. | Artifact manager for release automation |
CN107229482A (zh) * | 2017-08-04 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种用于软件***开发的方法及*** |
CN107515766A (zh) * | 2017-08-24 | 2017-12-26 | 北京锐安科技有限公司 | 数据库部署文件的生成方法、部署安装方法及装置 |
CN108073400A (zh) * | 2017-12-07 | 2018-05-25 | 湖北三新文化传媒有限公司 | 软件自动化构建方法、服务器及存储介质 |
CN109597644A (zh) * | 2018-12-05 | 2019-04-09 | 江苏风云科技服务有限公司 | 项目部署方法及装置 |
-
2019
- 2019-04-11 CN CN201910288370.2A patent/CN111813379B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044531A1 (en) * | 2003-06-09 | 2005-02-24 | Erc-Ip, Llc | Methods and systems for deploying computer source code |
CN104536744A (zh) * | 2014-12-19 | 2015-04-22 | 微梦创科网络科技(中国)有限公司 | 一种自动化构建与部署代码的方法及服务器 |
US20160378449A1 (en) * | 2015-06-24 | 2016-12-29 | Vmware, Inc. | Artifact manager for release automation |
CN107229482A (zh) * | 2017-08-04 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种用于软件***开发的方法及*** |
CN107515766A (zh) * | 2017-08-24 | 2017-12-26 | 北京锐安科技有限公司 | 数据库部署文件的生成方法、部署安装方法及装置 |
CN108073400A (zh) * | 2017-12-07 | 2018-05-25 | 湖北三新文化传媒有限公司 | 软件自动化构建方法、服务器及存储介质 |
CN109597644A (zh) * | 2018-12-05 | 2019-04-09 | 江苏风云科技服务有限公司 | 项目部署方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022121971A1 (zh) * | 2020-12-10 | 2022-06-16 | 百果园技术(新加坡)有限公司 | 前端项目处理方法、装置、设备、管理***及存储介质 |
CN113590114A (zh) * | 2021-08-12 | 2021-11-02 | 北京滴普科技有限公司 | 一种流水线编排方法、装置及计算机设备 |
CN116301932A (zh) * | 2022-12-21 | 2023-06-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
CN116301932B (zh) * | 2022-12-21 | 2023-09-29 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111813379B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10684868B2 (en) | Configuration for application using microservices | |
US10732962B1 (en) | End-to-end deployment infrastructure | |
US10936293B2 (en) | Container image layer reordering | |
US11385903B2 (en) | Firmware update patch | |
US11340893B2 (en) | Mobile application update preserving changes to the application made by a client | |
US10834234B2 (en) | Automatic interdependency resolution for micro-service deployments | |
CN111813379B (zh) | 应用部署方法及装置、电子设备、计算机可读存储介质 | |
US10338910B2 (en) | Multi-tenant upgrading | |
US9542173B2 (en) | Dependency handling for software extensions | |
US11003668B2 (en) | Programming language independent software testing environment | |
CN109753300B (zh) | 一种算法升级方法、计算任务发送方法及相关装置 | |
CN111897623B (zh) | 一种集群管理方法、装置、设备及存储介质 | |
US10678626B2 (en) | Distributed product deployment validation | |
CN104346206A (zh) | 一种已卸载软件恢复安装的方法和*** | |
US20180314548A1 (en) | Work item management in content management systems | |
US10990507B2 (en) | System and method for provisioning a virtual machine test environment | |
CN112162761A (zh) | 自动化部署项目至公有云容器化平台的方法、***及设备 | |
US9760364B2 (en) | Checks for software extensions | |
CN114391136A (zh) | 增强的虚拟机镜像管理*** | |
CN110471828B (zh) | 一种操作***测试方法、装置及其设备 | |
CN115174158B (zh) | 基于多云管理平台的云产品配置检查方法 | |
WO2022053048A1 (en) | Ensuring secure provisioning of blockchain infrastructure | |
US20180341475A1 (en) | Just In Time Deployment with Package Managers | |
CN114253599A (zh) | 版本部署方法、版本部署装置、电子设备和存储介质 | |
CN110874238A (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 |