CN114217821A - 多服务器代码灰度发布方法、装置、电子设备及存储介质 - Google Patents
多服务器代码灰度发布方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114217821A CN114217821A CN202210158552.XA CN202210158552A CN114217821A CN 114217821 A CN114217821 A CN 114217821A CN 202210158552 A CN202210158552 A CN 202210158552A CN 114217821 A CN114217821 A CN 114217821A
- Authority
- CN
- China
- Prior art keywords
- code
- server
- issued
- gray scale
- gray
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机技术,揭露一种多服务器代码灰度发布方法,包括:对待发布代码进行运行测试,在待发布代码通过测试时,计算待发布代码的代码标识;根据代码标识在服务器数据库中提取线上服务器名单;获取灰度发布规则,根据灰度发布规则及线上服务器名单生成灰度服务器名单;根据灰度服务器名单判断待检测服务器是否为灰度服务器;当待检测服务器为灰度服务器时,将待发布代码上传至待检测服务器所对应的回归机,利用回归机对待发布代码进行回归测试;当回归测试成功时,在待检测服务器上部署待发布代码。本发明还提出一种多服务器代码灰度发布装置、设备以及介质。本发明可以解决难以有效控制代码的安全发布以及代码发布后运行稳定性低的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多服务器代码灰度发布方法、装置、电子设备及计算机可读存储介质。
背景技术
开发端的工程师开发完毕的代码部署至服务器运行的过程,称之为代码发布,通过代码发布才能间接的为用户提供服务。代码开发时所使用的机器称为开发机,运行代码并为用户提供服务的服务器称为线上服务器。因此代码发布这个应用场景可以抽象为:将程序代码从开发机拷贝到线上服务器。
传统的代码发布过程为复制、粘贴,或者通过编写脚本,对所有服务器执行拷贝工作,但是这种发布方式效率较低,且代码发布后直接使用,如果代码存在漏洞,会直接影响用户的使用;除此之外,还可以利用构建发布任务,调取源码,实现代码预发布,但是依然存在难以有效控制代码的安全发布以及代码发布后运行稳定性的问题。
发明内容
本发明提供一种多服务器代码灰度发布方法、装置及计算机可读存储介质,其主要目的在于解决难以有效控制代码的安全发布以及代码发布后运行稳定性低的问题。
为实现上述目的,本发明提供的一种多服务器代码灰度发布方法,包括:
获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
可选地,所述对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识,包括:
获取所述待发布代码的代码文本,并对所述代码文本执行第一次运行测试,得到第一测试结果;
将所述代码文本插入预设项目位置执行第二次运行测试,得到第二测试结果;
当所述第一测试结果及第二测试结果均通过时,根据所述代码文本的摘要生成MD5值,并将所述MD5值作为所述待发布代码的代码标识。
可选地,所述根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单,包括:
获取所述灰度发布规则中的服务器判定属性,提取所述线上服务器名单中每一个服务器对应的服务器属性;
根据所述服务器判定属性在所述每一个服务器对应的服务器属性中进行筛选;
将筛选出的服务器判定属性对应的服务器作为灰度服务器,并汇总所述灰度服务器,生成灰度服务器名单。
可选地,所述将所述待发布代码上传至所述待检测服务器所对应的回归机,包括:
获取所述待发布代码的代码版本,并根据所述代码版本在预设的开发机数据库中提取原始代码;
判断是否能够在所述回归机中检索到所述原始代码;
若不能检索所述原始代码,则将所述待发布代码上传至所述回归机;
若能够检索所述原始代码,则将所述原始代码与所述待发布代码进行代码比对,根据比对结果判断所述原始代码与所述待发布代码是否存在差异;
若所述原始代码与所述待发布代码不存在差异,则继续使用所述原始代码;
若所述原始代码与所述待发布代码存在差异,则利用所述待发布代码更新所述回归机中的所述原始代码。
可选地,所述将所述原始代码与所述待发布代码进行代码比对,包括:
调用diff命令,并对所述原始代码与所述待发布代码执行diff命令,得到执行结果;
利用预设的超文本处理工具对所述执行结果进行文本处理,得到文本比对结果。
可选地,所述利用所述回归机对所述待发布代码进行回归测试,包括:
根据代码比对结果确定所述待发布代码相对于所述原始代码的增量代码函数清单;
根据所述增量代码函数清单生成代码路径,并根据所述代码路径从预设的回归测试库中提取历史回归测试案例;
根据所述回归测试案例对所述待发布代码进行测试。
可选地,所述在所述待检测服务器上部署所述待发布代码,包括:
获取所述待发布代码的上传路径,并将所述上传路径软链接至所述待检测服务器;
利用所述待检测服务器加载所述待发布代码,完成代码发布。
为了解决上述问题,本发明还提供一种多服务器代码灰度发布装置,所述装置包括:
运行测试模块,用于获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
线上服务器名单生成模块,用于根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
灰度服务器名单生成模块,用于获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
灰度服务器验证模块,用于获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
回归测试模块,用于当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
待发布代码部署模块,用于当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的多服务器代码灰度发布方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的多服务器代码灰度发布方法。
本发明实施例通过对待发布代码进行运行测试以及回归测试两方面的代码测试,并在测试完成后,才可以提取线上服务器名单以及将待发布代码同步至线上服务器,提高了代码发布的安全性;通过灰度发布规则,实现批量对线上服务器进行灰度发布,有限避免了有漏洞和隐患的代码直接全部上线,提高了代码发布后运行稳定性。因此本发明提出的多服务器代码灰度发布方法、装置、电子设备及计算机可读存储介质,可以解决难以有效控制代码的安全发布以及代码发布后运行稳定性低的问题。
附图说明
图1为本发明一实施例提供的多服务器代码灰度发布方法的流程示意图;
图2为本发明一实施例提供的生成代码标识的流程示意图;
图3为本发明一实施例提供的生成灰度服务器名单的流程示意图;
图4为本发明一实施例提供的多服务器代码灰度发布装置的功能模块图;
图5为本发明一实施例提供的实现所述多服务器代码灰度发布方法的电子设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种多服务器代码灰度发布方法。所述多服务器代码灰度发布方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述多服务器代码灰度发布方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
参照图1所示,为本发明一实施例提供的多服务器代码灰度发布方法的流程示意图。在本实施例中,所述多服务器代码灰度发布方法包括:
S1、获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识。
本发明实施例中,所述待发布代码可以是程序开发人员新开发完成的代码程序,也可以是对以往完成的代码文件程序进行更新、修复等处理得到的代码等。
本发明实施例中,所述代码标识可以为所述待发布代码对应的产品/项目名称、ID(Identity,身份标识号码)等。
本发明一可选实施例中,所述代码标识还可以为根据待发布代码的摘要生成的MD5值;MD5可以将所述待发布代码对应的产品摘要信息,通过其不可逆的字符串变换算法,生成唯一的MD5值。
本发明一可选实施例中,可以对所述待发布代码进行至少两次的运行测试,所有运行测试均完成后,方为测试通过,并将测试通过的待发布代码保存至开发机对应的存储区域中。
本发明实施例中,请参阅图2所示,所述对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识,包括:
S11、获取所述待发布代码的代码文本,并对所述代码文本执行第一次运行测试,得到第一测试结果;
S12、将所述代码文本插入预设项目位置执行第二次运行测试,得到第二测试结果;
S13、当所述第一测试结果及第二测试结果均通过时,根据所述代码文本的摘要生成MD5值,并将所述MD5值作为所述待发布代码的代码标识。
具体地,执行第一次运行测试以及第二次运行测试可以通过预设的jenkins项目对代码文件执行编译来实现。
本发明实施例中,为确保接收到编写的待发布代码的正确无误,需对待发布代码至少两次的运行测试;第一次运行测试是对获取到的待发布代码的代码文本执行测试,生成第一测试结果,即对代码文本进行测试;第二次运行测试是将待发布代码的代码文本插入预设项目位置执行测试,生成第二测试结果,即预设项目的整个代码运行一次,测试代码文本在该预设项目正确性和兼容性。
本发明实施例中,所述测试包括性能测试及功能测试,其中所述性能测试包括但不限于接口连接、代码编写或代码格式等,功能测试包括但不限于待发布代码所展示的功能、显示的状态、反应快慢或弹出窗口等。
本发明实施例中,当所述第一测试结果或第二测试结果不通过时,触发预警生成不通过的测试日志,日志记录待发布代码中错误的地方,开发人员可根据日志记录对待发布代码进一步修正,以更好的通过测试并完成发布。
S2、根据所述代码标识在预构建的服务器数据库中提取线上服务器名单。
本发明实施例可以将所述代码标识与预设的服务器数据库中的代码标识进行匹配,并从代码标识匹配成功的服务器数据库中提取线上服务器名单。
本发明实施例中,所述线上服务器名单中包括有多个线上服务器的名称或路径、地址等。所述线上服务器可以为用户终端提供网页服务或向用户终端的应用程序提供方法调用,从而向用户终端提供相应的服务或功能;所述线上服务器包括但不限于Nginx服务器、Node.js搭建的Web服务器、HTTP服务器。
本发明实施例中,在服务器数据库中的代码标识与线上服务器名单可以是关联存储的,例如,所述代码标识为产品名称,该产品名称在服务器数据库中可以存在对应的多个线上服务器。
进一步地,本发明实施例中在所述服务器数据库中匹配到所述代码标识时,则可以根据所述代码标识在预构建的服务器数据库中提取所述代码标识对应的线上服务器名单。
本发明一可选实施例中,假设所述代码标识为根据待发布代码生成的MD5值,所述数据库中存在与该MD5值相同的预置MD5值时,将预置MD5值对应的服务器名单确定为待发布代码的线上服务器名单,其中,所述数据库中可以包含不同的预置MD5值,以及不同的预置MD5值分别对应的服务器名单。
S3、获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单。
本发明实施例中,所述灰度发布规则可以由代码发布人员制定,通过所述灰度发布规则可以控制某些特定服务器运行待发布代码,其余的线上服务器则不运行待发布代码,进而保证了代码发布的稳定性。
进一步地,本发明实施例中所述灰度发布规则可以按照地域来划分(例如让某些省份、地区的线上服务器运行待发布代码等),按照流量来划分(例如在一段时间内的访问中,设置一定时间比例的线上服务器运行待发布代码等),按照硬件配置来划分(例如设置采用某种操作系统的线上服务器运行待发布代码等)等。
本发明实施例中,所述灰度服务器可以与上述的线上服务器相同,在此不过多赘述。
本发明实施例中,请参阅图3所示,所述根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单,包括:
S31、获取所述灰度发布规则中的服务器判定属性,提取所述线上服务器名单中每一个服务器对应的服务器属性;
S32、根据所述服务器判定属性在所述每一个服务器对应的服务器属性中进行筛选;
S33、将筛选出的服务器判定属性对应的服务器作为灰度服务器,并汇总所述灰度服务器,生成灰度服务器名单。
本发明实施例中,所述服务器判定属性可以为地域属性、硬件配置属性等,所述每一个服务器对应的服务器属性包含有多种类型的属性,如地域属性、硬件配置属性、流量属性等。在确定具体的服务器判定属性时,可以根据该服务器判定属性在服务器名单中每一个服务器对应的服务器属性中进行遍历检索,进而筛选出符合服务器判定属性这一条件的灰度服务器。
S4、获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器。
本发明实施例中,所述待检测服务器为线上服务器。
本发明实施例中,可以通过提取所述待检测服务器的服务器名称,根据该服务器名称在灰度服务器名单中检索,当检索到相同的服务器名称时,判定所述待检测服务器为灰度服务器;当未检索到相同的服务器名称时,判定所述待检测服务器不为灰度服务器。
若所述待检测服务器不为灰度服务器,则执行S5、停止代码发布。
本发明实施例中,当待检测服务器不为灰度服务器时,则说明该待检测服务器不属于待发布代码对应的线上服务器,进而需停止对该待检测服务器进行待发布代码的发布。
若所述待检测服务器为灰度服务器,则执行S6、将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试。
本发明实施例中,所述回归机是用来模拟线上服务器的环境,为进行代码测试而设置的回归环境,可以运行代码,但是不对用户提供服务,只用于回归测试;每个服务器可以对应一个回归机,或者每个服务器集群可以对应一个回归机,对需要发送到该服务器/服务器集群上的代码首先在与该服务器/服务器集群对应的回归机上进行回归测试。
本发明实施例中,所述将所述待发布代码上传至所述待检测服务器所对应的回归机,包括:
获取所述待发布代码的代码版本,并根据所述代码版本在预设的开发机数据库中提取原始代码;
判断是否能够在所述回归机中检索到所述原始代码;
若不能检索所述原始代码,则将所述待发布代码上传至所述回归机;
若能够检索所述原始代码,则将所述原始代码与所述待发布代码进行代码比对,根据比对结果判断所述原始代码与所述待发布代码是否存在差异;
若所述原始代码与所述待发布代码不存在差异,则继续使用所述原始代码;
若所述原始代码与所述待发布代码存在差异,则利用所述待发布代码更新所述回归机中的所述原始代码。
本发明实施例中,所述将所述原始代码与所述待发布代码进行代码比对,包括:
调用diff命令,并对所述原始代码与所述待发布代码执行diff命令,得到执行结果;
利用预设的超文本处理工具对所述执行结果进行文本处理,得到文本比对结果。
本发明实施例中,预设的超文本处理工具可以为PHP(超文本预处理语言,Hypertext Preprocessor),用PHP对diff的执行结果按行分析,将结果解析成四个数组,分别是new、old、intra和visible,他们分别记录原始代码的每一行、待发布代码的每一行、原始代码和待发布代码在每一行的差异和需要显示的行数,由这四个数组明确的标识出原始代码和待发布代码的具体差异。
本发明实施例中,所述利用所述回归机对所述待发布代码进行回归测试,包括:
根据代码比对结果确定所述待发布代码相对于所述原始代码的增量代码函数清单;
根据所述增量代码函数清单生成代码路径,并根据所述代码路径从预设的回归测试库中提取历史回归测试案例;
根据所述回归测试案例对所述待发布代码进行测试。
本发明实施例中,所述待发布代码相对于所述原始代码的增量代码函数清单可以表示待发布代码相对于原始代码所发生的代码变化;后续在回归测试时需要针对该代码变化相关的功能进行测试,而对于与该代码变化无关的功能无需进行测试。
本发明实施例中,与增量代码函数清单相关联的目标代码路径表征与上述代码变化相关联的各个函数的调用路径,可以统称为目标代码路径。
进一步地,本发明实施例中根据所述增量代码函数清单生成代码路径可以通过深度优先搜索(Depth First Search,DFS)算法对待发布代码进行遍历,以确定待发布代码中多个函数各自的执行路径。
本发明实施例中,回归测试库可以包括多个历史测试案例,在确定代码路径后,可以从测试案例库中找到与代码路径相匹配的历史测试案例,以生成针对待发布代码的回归测试案例。
本发明实施例中,通过上述回归测试,将测试范围从全部代码路径整体缩小定位至仅与代码变化相关联的目标代码路径,能够有效提高回归测试效率及有效性。
S7、当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
本发明实施例中,所述在所述待检测服务器上部署所述待发布代码,包括:
获取所述待发布代码的上传路径,并将所述上传路径软链接至所述待检测服务器;
利用所述待检测服务器加载所述待发布代码,完成代码发布。
本发明一可选实施例中,可以采用Rsync协议(同步命令)作为文件传输协议将回归机上的代码同步到待检测服务器,从而保证发布的安全性和效率。
本发明实施例中,待检测服务器中可以包含有历史版本的代码,当检测出发布的所述待发布代码出现问题时,可以通过预置恢复操作函数(例如,ROLLBACK函数)将所述待发布代码调整为可成功发布的版本信息的代码。
例如,上传服务器中保留5种版本信息的代码,当对待发布代码进行发布,并检测出发布该待发布代码出现问题时,通过预置恢复操作函数进行回滚到可成功发布的版本信息的代码,以进行成功发布待发布代码。
本发明一可选实施例中,当所述待发布代码在所述灰度服务器上的运行达到预设要求(如代码运行稳定)时,既可逐步将所述待发布代码同步到其余线上服务器。
本发明实施例通过对待发布代码进行运行测试以及回归测试两方面的代码测试,并在测试完成后,才可以提取线上服务器名单以及将待发布代码同步至线上服务器,提高了代码发布的安全性;通过灰度发布规则,实现批量对线上服务器进行灰度发布,有限避免了有漏洞和隐患的代码直接全部上线,提高了代码发布后运行稳定性。因此本发明提出的多服务器代码灰度发布方法,可以解决难以有效控制代码的安全发布以及代码发布后运行稳定性低的问题。
如图4所示,是本发明一实施例提供的多服务器代码灰度发布装置的功能模块图。
本发明所述多服务器代码灰度发布装置100可以安装于电子设备中。根据实现的功能,所述多服务器代码灰度发布装置100可以包括运行测试模块101、线上服务器名单生成模块102、灰度服务器名单生成模块103、灰度服务器验证模块104、回归测试模块105及待发布代码部署模块106。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述运行测试模块101,用于获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
所述线上服务器名单生成模块102,用于根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
所述灰度服务器名单生成模块103,用于获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
所述灰度服务器验证模块104,用于获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
所述回归测试模块105,用于当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
所述待发布代码部署模块106,用于当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
详细地,本发明实施例中所述多服务器代码灰度发布装置100中所述的各模块在使用时采用与上述图1至图3中所述的多服务器代码灰度发布方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图5所示,是本发明一实施例提供的实现多服务器代码灰度发布方法的电子设备的结构示意图。
所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如多服务器代码灰度发布程序。
其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行多服务器代码灰度发布程序等),以及调用存储在所述存储器11内的数据,以执行电子设备的各种功能和处理数据。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card, SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备的应用软件及各类数据,例如多服务器代码灰度发布程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线12可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
所述通信接口13用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的多服务器代码灰度发布程序是多个指令的组合,在所述处理器10中运行时,可以实现:
获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
具体地,所述处理器10对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种多服务器代码灰度发布方法,其特征在于,所述方法包括:
获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
2.如权利要求1所述的多服务器代码灰度发布方法,其特征在于,所述对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识,包括:
获取所述待发布代码的代码文本,并对所述代码文本执行第一次运行测试,得到第一测试结果;
将所述代码文本插入预设项目位置执行第二次运行测试,得到第二测试结果;
当所述第一测试结果及第二测试结果均通过时,根据所述代码文本的摘要生成MD5值,并将所述MD5值作为所述待发布代码的代码标识。
3.如权利要求1所述的多服务器代码灰度发布方法,其特征在于,所述根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单,包括:
获取所述灰度发布规则中的服务器判定属性,提取所述线上服务器名单中每一个服务器对应的服务器属性;
根据所述服务器判定属性在所述每一个服务器对应的服务器属性中进行筛选;
将筛选出的服务器判定属性对应的服务器作为灰度服务器,并汇总所述灰度服务器,生成灰度服务器名单。
4.如权利要求1所述的多服务器代码灰度发布方法,其特征在于,所述将所述待发布代码上传至所述待检测服务器所对应的回归机,包括:
获取所述待发布代码的代码版本,并根据所述代码版本在预设的开发机数据库中提取原始代码;
判断是否能够在所述回归机中检索到所述原始代码;
若不能检索所述原始代码,则将所述待发布代码上传至所述回归机;
若能够检索所述原始代码,则将所述原始代码与所述待发布代码进行代码比对,根据比对结果判断所述原始代码与所述待发布代码是否存在差异;
若所述原始代码与所述待发布代码不存在差异,则继续使用所述原始代码;
若所述原始代码与所述待发布代码存在差异,则利用所述待发布代码更新所述回归机中的所述原始代码。
5.如权利要求4所述的多服务器代码灰度发布方法,其特征在于,所述将所述原始代码与所述待发布代码进行代码比对,包括:
调用diff命令,并对所述原始代码与所述待发布代码执行diff命令,得到执行结果;
利用预设的超文本处理工具对所述执行结果进行文本处理,得到文本比对结果。
6.如权利要求4所述的多服务器代码灰度发布方法,其特征在于,所述利用所述回归机对所述待发布代码进行回归测试,包括:
根据代码比对结果确定所述待发布代码相对于所述原始代码的增量代码函数清单;
根据所述增量代码函数清单生成代码路径,并根据所述代码路径从预设的回归测试库中提取历史回归测试案例;
根据所述回归测试案例对所述待发布代码进行测试。
7.如权利要求1至6中任一项所述的多服务器代码灰度发布方法,其特征在于,所述在所述待检测服务器上部署所述待发布代码,包括:
获取所述待发布代码的上传路径,并将所述上传路径软链接至所述待检测服务器;
利用所述待检测服务器加载所述待发布代码,完成代码发布。
8.一种多服务器代码灰度发布装置,其特征在于,所述装置包括:
运行测试模块,用于获取待发布代码,对所述待发布代码进行运行测试,在所述待发布代码通过测试时,计算所述待发布代码的代码标识;
线上服务器名单生成模块,用于根据所述代码标识在预构建的服务器数据库中提取线上服务器名单;
灰度服务器名单生成模块,用于获取灰度发布规则,根据所述灰度发布规则及所述线上服务器名单生成灰度服务器名单;
灰度服务器验证模块,用于获取待检测服务器,根据所述灰度服务器名单判断所述待检测服务器是否为灰度服务器;
回归测试模块,用于当所述待检测服务器为灰度服务器时,将所述待发布代码上传至所述待检测服务器所对应的回归机,并利用所述回归机对所述待发布代码进行回归测试;
待发布代码部署模块,用于当所述待发布代码回归测试成功时,在所述待检测服务器上部署所述待发布代码。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任意一项所述的多服务器代码灰度发布方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的多服务器代码灰度发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210158552.XA CN114217821A (zh) | 2022-02-21 | 2022-02-21 | 多服务器代码灰度发布方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210158552.XA CN114217821A (zh) | 2022-02-21 | 2022-02-21 | 多服务器代码灰度发布方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114217821A true CN114217821A (zh) | 2022-03-22 |
Family
ID=80709081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210158552.XA Pending CN114217821A (zh) | 2022-02-21 | 2022-02-21 | 多服务器代码灰度发布方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114217821A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226485A (zh) * | 2013-05-21 | 2013-07-31 | 北京奇虎科技有限公司 | 代码发布方法、代码发布机和代码发布系统 |
CN106775602A (zh) * | 2015-11-20 | 2017-05-31 | 北京国双科技有限公司 | 一种代码发布方法及装置 |
CN108574720A (zh) * | 2017-05-09 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种服务上线方法及装置 |
CN110071960A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 管理灰度发布的方法、系统、设备及存储介质 |
CN112988219A (zh) * | 2021-03-12 | 2021-06-18 | 中国建设银行股份有限公司 | 一种信息系统的部署方法及装置 |
CN113050981A (zh) * | 2021-03-23 | 2021-06-29 | 深圳杰微芯片科技有限公司 | 代码线上自动发布方法、服务器和存储介质 |
CN113805935A (zh) * | 2021-09-16 | 2021-12-17 | 平安健康保险股份有限公司 | 代码模块发布方法、装置、计算机设备和可读存储介质 |
-
2022
- 2022-02-21 CN CN202210158552.XA patent/CN114217821A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226485A (zh) * | 2013-05-21 | 2013-07-31 | 北京奇虎科技有限公司 | 代码发布方法、代码发布机和代码发布系统 |
CN106775602A (zh) * | 2015-11-20 | 2017-05-31 | 北京国双科技有限公司 | 一种代码发布方法及装置 |
CN108574720A (zh) * | 2017-05-09 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种服务上线方法及装置 |
CN110071960A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 管理灰度发布的方法、系统、设备及存储介质 |
CN112988219A (zh) * | 2021-03-12 | 2021-06-18 | 中国建设银行股份有限公司 | 一种信息系统的部署方法及装置 |
CN113050981A (zh) * | 2021-03-23 | 2021-06-29 | 深圳杰微芯片科技有限公司 | 代码线上自动发布方法、服务器和存储介质 |
CN113805935A (zh) * | 2021-09-16 | 2021-12-17 | 平安健康保险股份有限公司 | 代码模块发布方法、装置、计算机设备和可读存储介质 |
Non-Patent Citations (1)
Title |
---|
褚英双: "天津港智慧工作平台灰度发布系统和流程设计", 《集装箱化 装备技术》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11599453B2 (en) | Vehicle function test apparatus and method of controlling the same | |
CN113238929B (zh) | 基于Mock数据的代码测试方法、装置、电子设备及存储介质 | |
CN113138929A (zh) | 分布式接口测试方法、装置、电子设备及存储介质 | |
CN111694612A (zh) | 配置检查方法、装置、计算机系统及存储介质 | |
CN107169000A (zh) | 静态资源发布方法及装置 | |
CN113778898A (zh) | 用户界面自动化测试方法、装置、电子设备及存储介质 | |
CN113377661A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN112527664A (zh) | 生成测试用例的方法、装置、电子设备及存储介质 | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN101131663B (zh) | 计算机PCI/PCI Express设备安装正确性的检测方法 | |
CN112579475A (zh) | 代码测试方法、装置、设备及可读存储介质 | |
CN113434542A (zh) | 数据关系识别方法、装置、电子设备及存储介质 | |
CN113434397B (zh) | 任务系统的测试方法、装置、电子设备及存储介质 | |
CN114217821A (zh) | 多服务器代码灰度发布方法、装置、电子设备及存储介质 | |
CN114896164A (zh) | 接口优化方法、装置、电子设备及存储介质 | |
CN114510400A (zh) | 任务执行方法、装置、电子设备及存储介质 | |
CN112527655B (zh) | 软件版本质量异常检测方法、装置、电子设备及存储介质 | |
CN115033489A (zh) | 代码资源检测方法、装置、电子设备及存储介质 | |
CN114911479A (zh) | 基于配置化的界面生成方法、装置、设备及存储介质 | |
CN114936111A (zh) | 前端变量异常检测及修复方法、装置、设备及存储介质 | |
CN114116488A (zh) | 测试覆盖率信息获取方法、装置、设备及存储介质 | |
CN113051171A (zh) | 接口测试方法、装置、设备及存储介质 | |
CN113469649A (zh) | 项目进度分析方法、装置、电子设备及存储介质 | |
CN113505079A (zh) | 应用程序测试方法、装置、设备及介质 | |
CN113434359B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220322 |
|
RJ01 | Rejection of invention patent application after publication |