CN115718606A - 一种服务器自动化持续集成与部署的方法及*** - Google Patents
一种服务器自动化持续集成与部署的方法及*** Download PDFInfo
- Publication number
- CN115718606A CN115718606A CN202211515665.7A CN202211515665A CN115718606A CN 115718606 A CN115718606 A CN 115718606A CN 202211515665 A CN202211515665 A CN 202211515665A CN 115718606 A CN115718606 A CN 115718606A
- Authority
- CN
- China
- Prior art keywords
- file
- deployment
- server
- script
- hash value
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种服务器自动化持续集成与部署的方法及***,包括如下步骤:S1.开发人员完成编码后,使用当前软件依赖的工具进行构建并形成独立的打包文件,并提取安装命令;S2.在客户方企业需要部署的服务器上,上传软件的CD脚本;S3.对CD程序运行进行配置,通过参数化的指令输入,指定步骤S1里的打包文件位置和安装命令;S4.使用当前服务器操作***本身的命令运行CD脚本,将自动拉取文件并执行部署目标软件的安装命令,CD脚本将自动完成目标软件需要程序的安装并运行目标软件;S5.CD程序将持续监听、运行,每隔一段时间自动检测目标文件的哈希值,并与当前已经部署的文件的哈希值进行比对,若检测到文件更改便再次执行步骤S4以完成持续集成。
Description
技术领域
本发明涉及计算机软件开发领域,尤其涉及一种服务器自动化持续集成与部署的方法及***。
背景技术
软件的开发过程包括:需求、设计、编码、构建、测试、发布、运营。每个环节之间都需要进行交接,由不同的团队相互配合来实现,在软件需求快速变化的今天,为了加速软件的开发过程并保证各个过程的执行准确性,软件的自动化开发过程分为四大步骤:持续集成(ContinuousIntegration,以下简称CI)→持续交付→持续部署(ContinuousDeployment,以下简称CD)→持续运营与监控。
目前常用的方案之一,是使用Jenkins(一个开源的、提供友好操作界面的CI工具)。一般来说,开发人员向代码库提交了新代码之后,自动完成代码库管理、自动进行构建Build、自动化打包、自动化测试并自动软件发布。接下来,CD部分,就是就是把软件产品部署到客户现场。对于Jenkins来说,需要与企业内部的各个***(如代码管理平台、测试平台、服务器管理平台等)深度配合关联使用。在实际场景的软件部署上,还存在很多例外情况,如对于购买第三方应用的企业,或需要私有化部署,或依赖企业本身内网才能访问各个***。现有的工具无法很好或简便地在各个企业之间协同工作。
传统的部署方式如图1所示,是由其他管理服务器来控制部署服务器,这种方式受限于网络环境等,需要部署的服务器都在一家企业下统一管理,对于互联网产品提供方和使用方来说,在私有化部署的条件下,无法将服务器交由外部人员统一管理。同时,当一家第三方企业向许多企业提供同一套软件产品时,对于每家企业的软件的日常维护、使用、升级等也会消耗大量重复的人力。本发明主要针对以上问题,提出一种服务器自动化持续集成与部署的方案,以解决实际常用场景中无法将服务器交由外部人员统一管理的问题,同时缩短软件交付过程中重复的人力,降低持续集成/交付应用门槛,提升版本交付效率,降低运维成本。
发明内容
针对现有技术存在的问题,本发明的目的在于实现一种服务器自动化持续集成与部署的方法及***,通过在软件使用方企业的部署服务器上安装操作***级脚本的方案,使得软件在持续集成/部署的同时,不受限与复杂的企业内部的网络环境,不需要额外的服务器配置,不需要合作企业之间安装额外的管理程序,同时将大量的重复性人力劳动由程序自动化,提升效率、降低成本。
为实现上述目的,本发明提供一种服务器自动化持续集成与部署的方法,所述方法包括如下步骤:
S1.开发人员完成编码后,使用当前软件依赖的工具进行构建并形成独立的打包文件,并提取安装命令,这一部分在第三方企业内完成;
S2.在客户方企业需要部署的服务器上,上传软件的CD脚本;
S3.对CD程序运行进行配置,通过参数化的指令输入,指定步骤S1里的打包文件位置和安装命令。CD程序运行时,将根据配置的打包文件位置和安装命令,拿取S1中的打包文件,并对应得执行安装命令;
S4.使用当前服务器操作***本身的命令运行CD脚本,将根据步骤S3中的打包文件位置自动拉取文件并执行部署目标软件的安装命令,CD脚本将自动按照预定的一系列命令开始执行,完成目标软件需要的安装、自动配置目标软件需要的***环境并最终运行目标软件;
S5.CD程序将持续运行并监听,每隔一段时间(根据步骤S3中对CD程序配置的间隔时间)自动检测目标文件的哈希值,并与当前已经部署的文件的哈希值进行比对,若检测到文件更改便再次执行步骤S4以完成持续集成。
进一步,步骤S2中,所述CD脚本将根据配置,获取打包文件的网络位置,并基于该位置,下载打包文件,存放到当前服务器的指定目录后,执行一系列的解压缩、创建目录并存放、生成备份文件等常规部署任务。
进一步,步骤S3中,若企业仅限内部网络访问,则提供在内网环境下的文件位置,若不限,则提供公共网络的文件位置。文件位置使用的都是一个http协议的网络链接。
进一步,所述CD脚本需要在部署服务器上执行`shscript-name.sh`命令,即可启动并执行脚本。
进一步,步骤S5中,远程操作部署时,通过发送http请求到服务器,以触发脚本执行。
进一步,检测文件哈希值的方法,是利用http协议中的etag字段,此字段的功能等同于文件的哈希值,根据提供的网络文件的位置,发起一个http请求,通过解析http网络请求头中的etag字段以获取到远程文件的信息,提取当前部署文件的哈希值,进行比对,如果不一致,则说明远程文件已经更新,然后运行部署命令;
脚本自动持续监听,是调用的操作***层级的定时任务的方法,执行命令`crontab-e`,打开一个***文件,添加脚本和执行的时间,而后将每隔一段时间自动执行一次上述命令。
进一步,客户方企业需要补助的服务器为一台或多台运行着Linux操作***的服务器,通过对应的***管理工具“命令行工具”上传软件的CD脚本。
进一步,监听方法为通过监听当前服务器指定的某个网络端口,当该网络端口收到网络流量时,触发相对应的程序。
进一步,打包文件为不同的开发语言、工具对应不同的命令、方法,构建完成的最终产物。
另一方面,本发明提供一种服务器自动化持续集成与部署的***,所述***用于实现根据本发明所述的服务器自动化持续集成与部署的方法。
本技术的有益效果在于:本方案是由部署服务器主动获取并部署需要的软件,部署服务器始终在企业本部的管理下,同时允许外部人员掌控部署的能力和便利性;本发明通过在软件使用方企业的部署服务器上安装操作***级脚本的方案,使得软件在持续集成/部署的同时,不受限与复杂的企业内部的网络环境,不需要额外的服务器配置,不需要合作企业之间安装额外的管理程序,也不需要第三方企业消耗大量的人力来做重复性的软件运维、升级工作。实现一种自动化的、低成本的、私有化产品部署方案。
附图说明
图1示出了现有技术中传统部署方式的示意图;
图2示出了根据本发明实施例一种服务器自动化持续集成与部署方法及***的部署方式示意图;
图3示出了根据本发明实施例一种服务器自动化持续集成与部署方法及***的流程示意图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图2-图3对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
传统的部署方式是由其他管理服务器来控制部署服务器,这种方式受限于网络环境等,需要部署的服务器都在一家企业下统一管理,对于互联网产品提供方和使用方来说,在私有化部署的条件下,无法将服务器交由外部人员统一管理,本发明提供一种由部署服务器主动获取并部署需要的软件的方法,部署服务器始终在企业本部的管理下,同时允许外部人员掌控部署的能力和便利性。
如图2所示,客户方企业ABC之间相互各自独立,统一由第三方企业提供软件、代码、程序、***等,由企业ABC提供服务器等基础设施,第三方企业部署到各自企业的服务器上运行。这样服务器和***依然受客户方企业ABC本身管控,同时可以满足第三方企业持续更新部署的需求。
根据本发明的服务器自动化持续集成与部署的方法及***,其中所述方法包括如下步骤:
S1.开发人员完成编码后,使用当前软件依赖的工具进行构建并打包成独立的文件,并提取安装命令。不同的开发语言、工具对应不同的命令、方法,但是对于构建完成的最终产物(即打包文件)对本发明是一致的,本发明只需要最终的打包文件。每个软件都会随开发完成而生成独立的文件和安装命令,这一部分工作在第三方企业内完成(开发人员所属的公司)。以前后端分离项目并使用Vue框架的前端工程举例,使用vscode作为开发工具,通过执行`vue-cli-servicebuild`命令会生成打包后的文件,文件内容如下:
该示例为一般网站所使用的静态文件。对应的安装/运行命令为`servicesstartnginx`(此为使用Nginx工具作为运行载体)。
S2.在客户方企业(图2中企业A、企业B和企业C)需要部署的服务器上,此时一般为一台或多台运行着Linux操作***的服务器,由相关专业人员,通过对应的***管理工具,一般为“命令行工具”,上传本方案需要的CD脚本(脚本通常指shellscript,是一种电脑程序使用的文本文件,在Unix及所有的类Unix***中(即服务器所使用的***),如Linux、FreeBSD等操作***,都存在shellscript,在操作***层面就能执行的一系列的命令);CD脚本如下:
此脚本将根据配置,获取打包文件的网络位置,并基于该位置,下载打包文件,存放到当前服务器的指定目录后,执行一系列的解压缩、创建目录并存放、生成备份文件等常规部署任务。
S3.对CD程序运行进行配置,通过参数化的指令输入,指定步骤S1里的打包文件位置和安装命令,CD程序运行时,将根据配置的打包文件位置和安装命令,拿取S1中的打包文件,并对应的执行安装命令;此时若企业ABC仅限内部网络访问,则提供在内网环境下的文件位置,否则可提供公共网络的文件位置;文件位置使用的都是一个http协议的网络链接,相对于传统的部署方案,本发明可以支持基于企业外部网络的软件部署,由此,以图2为例,第三方企业可以提供一个统一的安装包的网络链接,同时支持企业ABC等的软件部署,同时,一旦文件内容有更新,企业ABC都能及时监听到并更新至最新版本以自动持续集成,大大降低了第三方企业的重复性工作、减少了软件交付过程的成本、缩短了软件交付周期,同时提高了企业ABC的软件使用效率。参数化的指令主要取决于当前CD程序支持的配置化的参数,以步骤S2中附的CD为例,参数为“project”和“env”,分别对应当前需要部署的“项目名称”和“指定环境”;如上代码所述,指定了打包文件的网络位置并从此位置下载。
S4.使用当前服务器操作***本身的命令运行CD脚本,将根据步骤S3中的打包文件位置自动拉取文件并执行部署目标软件的安装命令,这个过程不需要人为干预,CD脚本将自动按照预定的一系列命令开始执行,一般为完成目标软件需要的依赖的安装、自动配置目标软件需要的***环境并最终运行目标软件;如步骤S2的CD脚本,需要在部署服务器上执行`shscript-name.sh`命令,即可启动并执行脚本。此脚本为服务器的操作***可以在不安装任何其他依赖的情况下就可以执行的脚本,即本发明中不依赖其他要安装的软件。操作***本身的命令指的是sh命令,即上文S2中所述的shellscript。
S5.CD程序将持续运行并监听(一般为通过“监听当前服务器指定的某个网络端口,当该网络端口收到网络流量时,触发相对应的程序”的形式),每隔一段时间(根据步骤S3中对CD程序配置的间隔时间)自动检测目标文件的哈希值(是通过哈希函数,从任何一种数据中创建小的数字“指纹”的方法。哈希值通常用一个短的随机字母和数字组成的字符串来代表。哈希函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个哈希值的原始输入也是不相同的),并与当前已经部署的文件的哈希值进行比对,若检测到文件更改便再次执行步骤S4以完成持续集成;本发明降低了持续集成/交付应用门槛,提升了软件交付效率,降低了运维成本,消除了软件私有化部署对于网络差异、企业限制、不同软件的部署方式之间的壁垒
如图3所示,***持续部署的流程示意,第三方企业完成***基本的开发、打包工作,将文件上传到客户方企业ABC指定的位置。在企业内部,通过执行S2-S4脚本,将***部署到服务器上并运行,通过S5步骤,CD脚本持续监听***有无更新以持续集成。
远程操作部署时,通过发送http请求到服务器,服务器监听到信号后便触发脚本执行。例如,在远程操作者电脑上,执行`curl“https://host.xxx.com:8080/”`命令,将发送一条httpget请求到部署服务器,在部署服务器上,通过监听端口的http流量来触发脚本执行,例如以下脚本(文件名为`listen.sh`)
通过命令`shlisten.sh`启动后,当监听到流量后,执行结果如下:
检测文件哈希(hash)值的方法,是利用http协议中的etag字段,此字段的功能等同于文件的哈希值,具体方法如下:
如上第2行代码,会获取到远程文件的哈希值,第三行代码,会提取当前部署文件的哈希值,第8行代码会进行比对,如果不一致,则说明远程文件已经更新,然后运行部署命令,即第12行代码所示。执行结果如下:
脚本自动持续监听,是调用的***层级的定时任务的方法,执行命令`crontab-e`,会打开一个***文件,添加脚本和执行的时间,而后将每隔一段时间自动执行一次上述命令。比如,设定每十分钟自动执行一次检测部署文件更新与否的任务,代码如下:
*/10****/path/compare.sh
本发明通过在软件使用方企业的部署服务器上安装操作***级脚本的方案,使得软件在持续集成/部署的同时,不受限于复杂的企业内部的网络环境,不需要额外的服务器配置,不需要合作企业之间安装额外的管理程序,也不需要第三方企业消耗大量的人力来做重复性的软件运维、升级工作。这是一种自动化的、低成本的、私有化产品部署方案。
本发明的技术优势在于不需要额外的服务器配置,使用服务器操作***本身的功能就能正常使用本方案;不依赖复杂的网络环境,即使是企业内网使用的***也可以使用本方案正常部署;多个企业相互合作时,第三方企业(即软件提供公司)和客户方企业ABC(即软件实际使用公司)之间,可维持客户方企业ABC内原有的***照旧运行的同时,持续集成/部署第三方企业交付的软件。第三方企业可以统一管理、自动升级交付软件,降低了运维成本、提高了交付效率。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。
Claims (10)
1.一种服务器自动化持续集成与部署的方法,其特征在于,所述方法包括如下步骤:
S1.开发人员完成编码后,使用当前软件依赖的工具进行构建并形成独立的打包文件,并提取安装命令;这一部分在第三方企业内完成;
S2.在客户方企业需要部署的服务器上,上传软件的CD脚本;
S3.对CD程序运行进行配置,通过参数化的指令输入,指定步骤S1里的打包文件位置和安装命令,CD程序运行时,将根据配置的打包文件位置和安装命令,拿取S1中的打包文件,并对应得执行安装命令;
S4.使用当前服务器操作***本身的命令运行CD脚本,将根据步骤S3中的打包文件位置自动拉取文件并执行部署目标软件的安装命令,CD脚本将自动按照预定的一系列命令开始执行,完成目标软件需要的安装、自动配置目标软件需要的***环境并最终运行目标软件;
S5.CD程序将持续运行并监听,每隔设定的间隔时间自动检测目标文件的哈希值,并与当前已经部署的文件的哈希值进行比对,若检测到文件更改便再次执行步骤S4以完成持续集成。
2.根据权利要求1所述的一种服务器自动化持续集成与部署的方法,其特征在于,步骤S2中,所述CD脚本将根据配置,获取打包文件的网络位置,并基于该位置,下载打包文件,存放到当前服务器的指定目录后,执行一系列的解压缩、创建目录并存放、生成备份文件等常规部署任务。
3.根据权利要求1或2所述的一种服务器自动化持续集成与部署的方法,其特征在于,步骤S3中,若企业仅限内部网络访问,则提供在内网环境下的文件位置,若不限,则提供公共网络的文件位置,文件位置使用的是http协议的网络链接。
4.根据权利要求3所述的一种服务器自动化持续集成与部署的方法,其特征在于,所述CD脚本需要在部署服务器上执行`sh script-name.sh`命令,即可启动并执行脚本。
5.根据权利要求4所述的一种服务器自动化持续集成与部署的方法,其特征在于,步骤S5中,远程操作部署时,通过发送http请求到服务器,服务器监听到信号后便触发脚本执行。
6.根据权利要求5所述的一种服务器自动化持续集成与部署的方法,其特征在于,检测文件哈希值的方法,是利用http协议中的etag字段,此字段的功能等同于文件的哈希值;根据提供的网络文件的位置,发起一个http请求,通过解析http网络请求头中的etag字段以获取到远程文件的信息,提取当前部署文件的哈希值,与当前已经部署的文件的哈希值进行比对,如果一致,则不进行操作,如果不一致,则说明远程文件已经更新,然后运行部署命令;而后脚本自动持续监听,是调用的操作***层级的定时任务的方法,执行命令`crontab-e`,打开一个***文件,添加脚本和执行的时间,而后将每隔一段时间自动执行一次上述命令。
7.根据权利要求1所述的一种服务器自动化持续集成与部署的方法,其特征在于,步骤S2中,客户方企业需要补助的服务器为一台或多台运行着Linux操作***的服务器,通过对应的***管理工具“命令行工具”上传软件的CD脚本。
8.根据权利要求1所述的一种服务器自动化持续集成与部署的方法,其特征在于,步骤S5中,监听方法为通过监听当前服务器指定的某个网络端口,当该网络端口收到网络流量时,触发相对应的程序。
9.根据权利要求1所述的一种服务器自动化持续集成与部署的方法,其特征在于,打包文件为不同的开发语言、工具对应不同的命令、方法,构建完成的最终产物。
10.一种服务器自动化持续集成与部署的***,其特征在于,所述***用于实现根据权利要求1-9任一项所述的服务器自动化持续集成与部署的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211515665.7A CN115718606A (zh) | 2022-11-30 | 2022-11-30 | 一种服务器自动化持续集成与部署的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211515665.7A CN115718606A (zh) | 2022-11-30 | 2022-11-30 | 一种服务器自动化持续集成与部署的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115718606A true CN115718606A (zh) | 2023-02-28 |
Family
ID=85257031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211515665.7A Pending CN115718606A (zh) | 2022-11-30 | 2022-11-30 | 一种服务器自动化持续集成与部署的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718606A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904419A (zh) * | 2023-03-03 | 2023-04-04 | 杭州比智科技有限公司 | 一种基于自动化脚本安装应用软件的方法及装置 |
CN116389254A (zh) * | 2023-06-05 | 2023-07-04 | 天津金城银行股份有限公司 | 资源版本控制方法、弹窗确认方法、装置、设备及介质 |
-
2022
- 2022-11-30 CN CN202211515665.7A patent/CN115718606A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904419A (zh) * | 2023-03-03 | 2023-04-04 | 杭州比智科技有限公司 | 一种基于自动化脚本安装应用软件的方法及装置 |
CN116389254A (zh) * | 2023-06-05 | 2023-07-04 | 天津金城银行股份有限公司 | 资源版本控制方法、弹窗确认方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115718606A (zh) | 一种服务器自动化持续集成与部署的方法及*** | |
CN110572436B (zh) | 多地跨集群的服务器部署方法及*** | |
CN110768833B (zh) | 基于kubernetes的应用编排部署方法及装置 | |
CN107729066B (zh) | 一种基于svn资源库自动化构建发布方法与装置 | |
CN111506322B (zh) | 一种自动化集成构建开发部署平台及方法 | |
US8819670B2 (en) | Automated software installation with interview | |
CN105786564A (zh) | 一种Oracle的自动化定制安装部署方法 | |
US8640098B2 (en) | Offline configuration and download approach | |
CN108616384B (zh) | 一种集中式的服务管理部署工具及方法 | |
CN112437140B (zh) | 一种远程导出tbox日志的方法及装置 | |
EP3035644A2 (en) | Determined configuration update for edge components | |
CN113721931B (zh) | 一种自动化服务部署方法、***及计算机可读存储介质 | |
CN111026411A (zh) | 一种软件远程部署管理方法及管理机 | |
US20200065229A1 (en) | Systems and methods for on-demand container-based development environments | |
CN109558147A (zh) | 一种基于Jenkins和Gitlab的持续集成平台构建方法 | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
EP2137614A1 (en) | On-line configuration management system and method | |
CN116820493A (zh) | 一种镜像文件部署方法、***、设备及存储介质 | |
CN112130889A (zh) | 资源的管理方法和装置、存储介质、电子装置 | |
US9207928B2 (en) | Computer-readable medium, apparatus, and methods of automatic capability installation | |
CN115357258B (zh) | 应用的部署方法、装置、存储介质及电子装置 | |
CN115080076B (zh) | 一种云手机软件管理方法 | |
CN115599399A (zh) | 一种应用程序部署方法、装置及存储介质 | |
US10318284B2 (en) | System and method of generating and managing computing tasks | |
US20110055804A1 (en) | Using Ecoprint for Cloning of Applications |
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 |