一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种脚本调试方法以及相关设备与流程

2022-08-30 23:10:15 来源:中国专利 TAG:


1.本技术实施例涉及互联网技术领域,尤其涉及一种脚本调试方法以及相关设备。


背景技术:

2.在基于云的持续交付流水线中,构建、编译和部署都通过脚本实现自动化,构建需要编写构建脚本,编译需要编写编译脚本,部署需要编写部署脚本。脚本的执行需要受到主机环境和参数的影响,脚本的执行有可能失败,所以需要对编写的脚本提前进行调试,以确保能够在实际生产环境中成功执行脚本。
3.一种脚本调试技术是在本地云主机上编写完整过程脚本,向目标云主机发送在本地云主机上编写的完整过程脚本,完整过程脚本在目标云主机上执行后,目标云主机上会生成脚本执行日志,通过人工登录到目标云主机上查看脚本执行日志后,针对脚本执行日志中执行失败的脚本进行多次模糊修改,直到修改后的脚本在目标云主机上执行成功。
4.但是,对脚本中的问题修改后,必须把能够实现完整功能的脚本发送给目标云主机执行,例如将完整的构建脚本、编译脚本或部署脚本发送给目标云主机以完整运行构建、编译或部署。为了调试某个步骤的脚本,需要多次进行整个构建、编译或部署过程的运行,大量消耗了目标云主机的存储和算力。


技术实现要素:

5.本技术实施例提供了一种脚本调试方法以及相关设备,用于节约目标云主机在脚本调试过程中的存储和算力。
6.本技术实施例第一方面提供了一种脚本调试方法:
7.作业平台是基于云计算技术搭建的服务器或服务器群,用于将脚本转换成作业,技术人员在本地云主机上编写完整过程脚本,目标云主机是应用软件运行的实际生产环境,本地云主机和作业平台具有连接关系,可以双向通信;作业平台和目标云主机之间具有连接关系,可以双向通信;本地云主机和目标云主机之间的连接是从本地云主机到目标云主机之间的单向连接,目标云主机不能向本地云主机发送信息。
8.本地云主机会预先确定待调试脚本,在确定需要进行调试的待调试脚本后,作业平台会接收本地云主机发送的待调试脚本。
9.作业平台在收到本地云主机发送的需要进行调试的待调试脚本后,会根据待调试脚本中是否含有形式参数以及实际的需求,将待调试脚本按照需要的方式转换成作业并获取目标作业。
10.作业平台在完成脚本转换为作业后,向作为脚本运行实际环境的目标主机发送根据需要获取的目标作业,使目标云主机执行该目标作业。
11.可以理解的是,作业平台将待调试脚本转换成目标作业后,就可以使目标云主机仅执行待调试脚本对应的目标作业,而不用执行待调试脚本所属的构建或部署的整个过程的脚本,节约了目标云主机的存储和算力。
12.基于本技术实施例第一方面,本技术实施例提供了第一方面的第一种实施方式:
13.待调试脚本可以是包含形式参数的形参脚本,也可以是不包含参数的普通脚本,当待调试脚本是形参脚本时,作业平台对待调试形参脚本中的形式参数赋值,可以对一个形式参数赋予一组值,在对待调试形参脚本中的形式参数赋值之后得到了该形式参数对应的一组实际参数,待调试形参脚本就转换为实参作业组了,该实参作业组中至少包含一个实参作业,也可以包含多个实参作业,最多可以对形式参数进行全量赋值,即将形式参数所有可能的取值都进行赋值,得到全部取值的实参作业组。
14.因为在实际的脚本调试过程中,由于需求的不同可以对脚本转化后的作业按照不同的策略进行执行,作业平台根据需求的策略确定实参作业组中的一个或多个实参作业为目标作业,目标作业用于在作为实际生产环境的目标云主机上执行。
15.可以理解的是,当待调试脚本为包含形式参数脚本时,作业平台对形式参数赋值后得到实参作业组,通过将实参作业组中的实参作业确定为目标作业发送给目标云主机执行后,可以使具体的实际参数在作为实际生产环境的目标云主机中执行,提高了待调试脚本的调试精度,避免了在基于云的环境由于无法获取实际参数导致无法对包含参数的脚本进行调试的问题。
16.基于第一方面或第一方面第一种实施方式,本技术实施例提供了第一方面的第二种实施方式:
17.当待调试脚本为不包含形式参数的普通脚本时,作业平台将待调试普通脚本转化为普通作业。
18.作业平台根据实际需求的策略将一个或多个普通作业确定为需要在目标云主机上执行的目标作业。
19.可以理解的是,作业平台将待调试普通脚本转化为作业后,确定需要在目标云主机中执行的目标作业后,就可以通过目标云主机执行目标作业反映出待调试普通脚本的执行情况,而不用执行待调试普通脚本所属云部署或云构建的整个过程,节约了目标云主机的存储和算力。
20.基于第一方面至第一方面第二种实施方式中任一种,本技术实施例提供了第一方面的第三种实施方式:
21.作业平台在向目标云主机发送需要执行的目标作业之后,作业平台会收到目标云主机发送的目标作业的执行结果,该执行结果表示目标作业在目标云主机上执行成功或执行失败。
22.作业平台在收到目标云主机发送的执行结果之后,会向本地云主机转发该执行结果。
23.可以理解的是,作业平台接收目标云主机对目标作业的执行结果后,向本地云主机转发该执行结果,也可以使本地云主机通过目标作业的执行结果反映出目标作业对应的脚本的问题,可以更精确得定位问题脚本。
24.基于第一方面至第一方面第三种实施方式中任一种,本技术实施例提供了第一方面的第四种实施方式:
25.云部署脚本或云构建脚本是在本地云主机上完成编写的,本地云主机将云部署脚本或云构建脚本进行分解后,在根据分解后的脚本根据实际需求确定待调试脚本。
26.基于第一方面至第一方面第四种实施方式中任一种,本技术实施例提供了第一方面的第五种实施方式:
27.作业平台在将脚本转化成作业的过程中,不仅可以按照脚本的编写顺序正向转化成作业,也可以将脚本的编写顺序逆向转化为逆向脚本。逆向脚本可以对正向脚本进行回退,例如将mkdir/usr/local/abc可以通过匹配mkdir生成逆向脚本rmdir/usr/local/abc。这个逆向脚本是推荐生成,可自定义修改,减少脚本编写。
28.可以理解的是,将脚本转化为逆向脚本后,就可以对已有的正向脚本进行回退,以进一步提升调试能力。
29.本技术实施例第二方面提供了一种脚本调试方法:
30.技术人员在本地云主机上完成了用于云部署或云构建的完整过程脚本,本地云主机根据实际需求在完整过程脚本中选择全部或者部分脚本为需要进行调试的待调试脚本。
31.本地云主机在确定了待调试脚本后,向基于云服务搭建的将脚本转化为作业的作业平台,使作业平台将根据待调试脚本获取目标作业后,再将目标作业发送给目标云主机执行。
32.可以理解的是,本地云主机在确定了待调试脚本后,可以使作业平台根据待调试脚本获取目标作业后发送给目标云主机执行,从而实现了通过目标作业的执行实现部分脚本执行情况的反映,避免了必须将完整过程脚本直接发送给目标云主机执行,节约了目标云主机的存储和算力。
33.基于第二方面,本技术实施例提供了第二方面的第一种实施方式:
34.本地云主机需要自动化从完整过程脚本中确定待调试脚本,这就需要按照固定的方式。本地云主机按照一定的依据将完整过程脚本分解,得到分解脚本。
35.本地云主机根据实际需求的调试策略从分解脚本中确定待调试脚本。
36.可以理解的是,将完整过程脚本分解后,得到更小的分解脚本,可以更精确得定位脚本的问题点。
37.基于第二方面或第二方面第一种实施方式,本技术实施例提供了第二方面的第二种实施方式:
38.完整过程脚本的编写有多种方式,当完整过程脚本包括多个文件时,本地云主机就按照每个文件为依据进行分解,每个文件为一个分解脚本。
39.基于第二方面至第二方面第二种实施方式中任一种,本技术实施例提供了第二方面的第三种实施方式:
40.当完整过程脚本在一个文件中时,本地云主机可以按照每个段落为依据进行分解,每一段为一个分解脚本。
41.基于第二方面至第二方面第三种实施方式中任一种,本技术实施例提供了第二方面的第四种实施方式:
42.当完整过程脚本在一个文件中时,本地云主机可以按照每一行为依据进行分解,每一行为一个分解脚本。
43.基于第二方面至第二方面第四种实施方式中任一种,本技术实施例提供了第二方面的第五种实施方式:
44.当完整过程脚本在一个文件中时,本地云主机可以按照每个符号为依据进行分
解,每相邻两个符号中间的脚本为一个分解脚本。
45.基于第二方面至第二方面第五种实施方式中任一种,本技术实施例提供了第二方面的第六种实施方式:
46.本地云主机按照符号分解完整过程脚本时,符号可以是分隔符号、注释符号或特殊字符。
47.本技术实施例第三方面提供了一种脚本调试方法:
48.目标云主机上通过代理技术与作业平台连接,目标云主机不能向本地云主机发送信息。目标云主机在收到作业平台发送的通过待调试脚本转换得到的目标作业后,执行该目标作业。
49.可以理解的是,目标云主机可以通过执行目标作业而实现目标作业对应的待调试脚本在实际生产环境中的执行,而不用执行构建或部署整个过程的脚本,节约了目标云主机的存储和算力。
50.基于第三方面,本技术实施例提供了第三方面第一种实施方式:
51.目标云主机在执行作业平台发送的目标作业后,向作业平台发送目标作业的执行结果,并使作业平台将执行结果发送给本地云主机,该执行结果表示目标作业在目标云主机上执行成功或执行失败。
52.可以理解的是,目标云主机通过作业平台将目标作业的执行结果间接送到本地云主机后,本地云主机可以根据目标作业的执行结果定位问题脚本,从而达到精确调试脚本的目的。
53.本技术实施例第四方面提供了一种作业平台,该作业平台具有实现上述第一方面中脚本调试方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能对应的模块。
54.本技术实施例第五方面提供了一种本地云主机,该本地云主机具有实现上述第二方面中脚本调试方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能对应的模块。
55.本技术实施例第六方面提供了一种目标云主机,该目标云主机具有实现上述第三方面中脚本调试方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能对应的模块。
56.本技术实施例第七方面提供了一种作业平台,包括处理器、存储器、输入输出设备以及总线;
57.处理器、存储器、输入输出设备与总线相连;
58.处理器用于执行上述第一方面中任一项所述的方法。
59.本技术实施例第八方面提供了一种本地云主机,包括处理器、存储器、输入输出设备以及总线;
60.处理器、存储器、输入输出设备与总线相连;
61.处理器用于执行上述第二方面中任一项所述的方法。
62.本技术实施例第九方面提供了一种目标云主机,包括处理器、存储器、输入输出设备以及总线;
63.处理器、存储器、输入输出设备与总线相连;
64.处理器用于执行上述第二方面中任一项所述的方法。
65.本技术实施例第十方面提供了一种计算机存储介质,该计算机可读存储介质中保存有程序,当所述计算机执行所述程序时,执行前述第一方面至第三方面中任一项所述的方法。
66.本技术实施例第十一方面提供了一种计算机程序产品,当该计算机程序产品在计算机上执行时,计算机执行前述第一方面至第三方面中任一项所述的方法。
67.从以上技术方案可以看出,本技术实施例具有以下优点:作业平台接收本地云主机发送的待调试脚本,根据待调试脚本获取目标作业,向目标云主机发送目标作业,使目标云主机执行目标作业,作业平台将待调试脚本转换成作业后,就可以使目标主机仅执行待调试脚本对应的目标作业,通过目标作业的执行实现目标作业对应的待调试脚本的在作为实际生产环境的目标云主机上执行,而不用执行构建或部署整个过程的脚本,节约了目标云主机的存储和算力。
附图说明
68.图1为本技术实施例中脚本调试的系统架构示意图;
69.图2为本技术实施例中云计算架构示意图;
70.图3为本技术实施例中脚本调试方法的一个方法流程图;
71.图4为本技术实施例中脚本调试方法的另一方法流程图;
72.图5为本技术实施例中脚本调试方法的一个应用场景示意图;
73.图6为本技术实施例中脚本调试方法的另一应用场景示意图;
74.图7为本技术实施例中脚本调试方法的另一应用场景示意图;
75.图8为本技术实施例中脚本调试方法的另一应用场景示意图;
76.图9为本技术实施例中脚本调试方法的另一应用场景示意图;
77.图10为本技术实施例中作业平台的一个结构示意图;
78.图11为本技术实施例中作业平台的另一结构示意图;
79.图12为本技术实施例中作业平台的另一结构示意图;
80.图13为本技术实施例中本地云主机的一个结构示意图;
81.图14为本技术实施例中本地云主机的另一结构示意图;
82.图15为本技术实施例中本地云主机的另一结构示意图;
83.图16为本技术实施例中目标云主机的一个结构示意图;
84.图17为本技术实施例中目标云主机的另一结构示意图;
85.图18为本技术实施例中目标云主机的另一结构示意图。
具体实施方式
86.本技术实施例提供了一种脚本调试方法以及相关设备,能够在调试脚本时仅执行待调试脚本对应的目标作业,而不用执行构建或部署整个过程的脚本,节约了目标云主机的存储和算力。
87.随着互联网技术的迅速发展,社会的信息化程度不断提高,人们在工作和生活中越来越多得使用应用软件。随着应用软件在人们的工作和生活中的普及程度提高的同时,
对于应用软件的质量和交付速度的需求也越来越高,传统的大版本的软件开发过程已经无法满足人们对于应用软件的需求。一种软件工程领域的工程方法——开发和运维一体化(development and operations,devops)应运而生,基于devops的理念,提出了持续交付流水线式的软件开发工程方法,以实现缩短交付周期和提升交付质量的效果。
88.持续交付流水线是为了创建一个可重复且可靠的自动化过程,其中构建、测试或部署等都通过相应的脚本以实现自动化。构建脚本、测试脚本或部署脚本不能保证一次在实际生产环境中成功执行,均需要进行调试。脚本调试方法和传统方法一样,是通过打断点的方式定位脚本的问题从而进行修改,最终实现脚本在实际环境中的正常运行。
89.随着云计算的发展,基于云的持续交付流水线应运而生。基于云的持续交付流水线与传统的从持续交付流水线的功能是类似的,但是基于云的持续交付流水线在脚本调试的时候不能打断点,只能对构建脚本或部署脚本进行整个过程的完整运行,该过程不断中断,这就给脚本调试带来了极大的难度。在完整过程脚本的本地云主机上调试脚本完全是黑盒的形式,只能依靠日志输出的方式进行整体过程的调试,同时由于本地云主机和目标云主机之间只能由本地云主机向目标云主机进行单向通信,面临目标云主机环境复杂带来的调试困难,同时会由于无法获取关键参数而在作为实际生产环境的目标云主机上调试脚本会面临一系列困难。在当前基于云的持续交付流水线中脚本调试面临的挑战下,急需一种在基于云的持续交付流水线中能够方便得进行脚本调试的方法。
90.为了便于理解本技术,下面将对本技术涉及到的一些术语定义进行介绍:
91.1、持续交付:
92.持续交付是指,所有开发人员都在主干上进行小批量工作,或者在短时间存在的特性分支上工作,并且定期向主干合并,同时始终让主干保持可发布状态,并能做到在正常的工作时段里按需进行一键式发布。开发人员在引入任何回归错误时(包括缺陷、性能问题、安全问题、可用性问题等),都能快速得到反馈。一旦发现这类问题,就立即加以解决,从而保持主干始终处于可部署状态。
93.2、云流水线:
94.基于云的持续交付流水线,提供可视化、可定制的持续交付流水线服务,实现缩短交付周期和提升交付质量的效果。
95.3、部署:
96.一键自动化快速部署应用到物理机、虚机、容器。
97.4、持续部署:
98.持续部署是指,在持续交付的基础上,由开发人员或运维人员自助式的定期向生产环境部署优质的构建版本,这通常意味着每天每人至少做一次生产环境部署,甚至每当开发人员提交代码变更时,就触发一次自动化部署。
99.5、云部署:
100.提供可视化、一键式部署服务,支持部署到虚拟机或者容器,提供自由组装编排原子步骤进行部署,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。
101.6、脚本:
102.用于计算机运行的程序代码。
103.7、作业(job):
104.从一个程序被选中执行,到到其运行结束并再次成为一个程序的这段过程中,该程序称为作业。作业包括计算机运行的程序和该程序运行所需要的数据。
105.8、构建:
106.从代码库的各个分支中获取所有的功能代码,合并后最终通过一个编译器编译代码,该过程称为构建。
107.9、代理技术(agent):
108.agent是部署到云服务器操作系统中的轻量化进程,可以进行数据的通信。
109.10、形参:
110.形参即形式参数,形式参数是被调函数中的变量。
111.11、实参:
112.实参即实际参数,实际参数是调用函数分配给被调函数变量的特定数值。
113.12、作业平台:
114.作业平台是基于云计算技术搭建的服务器或服务器群,用于实现将脚本转化为作业的功能。
115.本技术实施例可以应用如图1所示的云流水线脚本调试的系统架构:
116.如图1所示的云流水线脚本调试的系统架构中,包括本地云主机101,作业平台102和目标云主机103。
117.本地云主机101用于编写部署脚本或构建脚本,首先使部署脚本或构建脚本能够在本地云主机101的环境中正常运行,并且可以修改已经编写的脚本,或是对脚本进行分解,得到不同的脚本文件或脚本块,并确定哪些脚本文件或脚本块是需要进行调试的脚本。
118.作业平台102是云服务平台,用于和本地云主机101和目标云主机103进行通信,并且将本地云主机101发送的待调试脚本转换成作业。
119.目标云主机103是软件实际运行的生产环境,用于执行脚本文件和日志输出,并且可以执行作业,并通过预先设置的agent将作业执行的结果发送给作业平台。
120.需要说明的是,图1所示的云流水线脚本调试的系统架构可以是云流水线中的云部署架构,也可以是其他云计算架构,例如云流水线中的云构建架构,具体此处不做限定。
121.本技术实施例可以应用于如图2所示的云部署架构:
122.本地云主机201用于开发人员编写脚本,开发人员在完成脚本编写后,将脚本提交到代码库202。
123.代码库202,也称为版本控制系统,代码库202可以是git库,也可以是svn库。开发人员编写的所有脚本都会提交至代码库202。
124.持续集成服务器203用于每当开发人员提交了新代码之后,就对整个应用进行构建,并对其执行全面的自动化测试集合。根据构建和测试结果,我们可以确定新代码和原有代码是否正确的集成在一起。持续集成服务器203会将集成的结果反馈给本地云主机201,当整个应用集成失败时,开发团队就要停下手中的工作,立即修复它。
125.测试模块204对持续集成服务器203所集成的应用进行测试,并将测试结果反馈给本地云主机201。若对应用测试失败,则需要开发人员修改脚本重新进行集成后进行测试。
126.类生产环境205用于运行经过测试模块204测试成功的应用,并将应用在类生产环
境205上运行的结果反馈给本地云主机201。
127.实际生产环境206用于将在类生产环境205中成功运行的应用部署到实际生产环境206中。该部署过程是自动化部署,以达到持续部署的目的。实际生产环境206与图1所示脚本调试的系统架构中的目标云主机103类似。
128.结合上述介绍,下面对本技术实施例中的脚本调试方法进行介绍:
129.本技术实施例中,本地云主机根据在本地云主机上完成编写的完整过程脚本确定待调试脚本,向作业平台发送需要进行调试的待调试脚本,由作业平台将待调试脚本转换成目标作业,向作为实际生产环境的目标云主机发送目标作业,使目标云主机执行目标作业。
130.需要说明的是,待调试脚本可以是脚本文件,也可以是其他形式的脚本,例如脚本块,具体此处不做限定。
131.需要说明的是,完整过程脚本可以是云部署脚本,也可以是其他类型的脚本,例如云构建脚本,具体此处不做限定,本技术实施例仅以完整过程脚本为云部署脚本为例进行介绍。
132.本技术实施例中,待调试脚本的内容可以是不包含形式参数的普通脚本,也可以是形式参数脚本,作业平台可以将待调试形参脚本转化为实参作业组后根据实参作业组中的实参作业确定目标作业,也可以将待调试普通脚本转化成普通作业后根据普通作业确定目标作业,下面分别进行说明:
133.一、作业平台将待调试普通脚本转换成普通作业,根据普通作业确定目标作业:
134.请参阅图3,本实施例中,本地云主机根据完整过程脚本确定待调试脚本后将待调试脚本发送给作业平台,当待调试脚本是不含有形式参数的普通脚本时,作业平台将待调试普通脚本转化为普通作业,在普通作业中确定目标作业后,向目标云主机发送目标作业,使目标云主机执行目标作业并返回目标作业的执行结果。
135.301、本地云主机分解部署脚本,得到分解脚本。
136.技术人员预先在本地云主机上编写的部署脚本,得到分解后的脚本。分解脚本是将多个文件的脚本分解为每个文件的脚本,或将一个文件中的脚本按照不同的依据分解为大小不同的脚本块。本地云主机在对部署脚本分解后,得到分解脚本,分解脚本可以是单个文件,也可以是一个文件分解后的脚本快。
137.302、本地云主机在分解脚本中确定待调试脚本。
138.对脚本的调试会进行多次,如果是之前未调试过的脚本,那么第一次调试时,所有脚本都没有调试过,无法确定各部分脚本是否正常,那么第一次调试时需要将所有的分解脚本都进行调试,所以确定所有分解脚本都是待调试脚本。如果是已经调试过的脚本,确定了其中的一部分脚本有问题,另一些脚本没问题,那么就需要将可能有问题的脚本修改后,将脚本文件分解得到分解脚本,然后将可能有问题的脚本部分确定为待调试脚本。即在所有脚本中将需要调试的脚本确定为待调试脚本,确定的依据根据实际调试的需求确定。
139.303、本地云主机向作业平台发送待调试脚本。
140.本地云主机在确定待调试普通脚本后,将待调试普通脚本发送给作业平台,作业平台是基于云计算技术搭建的服务器或服务器群,用于实现将脚本转化为作业的功能。因为不完整的部署脚本,在基于云的场景下,不能够直接发送给目标云主机执行,所以需要对
不完整的待调试普通脚本进一步操作,才能达到调试的目的。
141.在分解脚本中,分为形式参数脚本和不含有形式参数的脚本,不含有形式参数的脚本称为普通脚本,根据分解脚本确定待调试普通脚本,就是将分解脚本中不带有形式参数的脚本确定为待调试普通脚本。
142.304、当待调试脚本为待调试普通脚本时,作业平台将待调试普通脚本转化为普通作业。
143.当待调试脚本为不包含参数的待调试普通脚本时,作业平台将表示命令的待调试普通脚本,提供执行待调试普通脚本中的命令中所需要的资源,将资源落实到待调试普通脚本表示的命令中时,就将待调试脚本转化为运行状态的普通作业,该普通作业可以在计算机设备或基于云的计算机设备上运行。
144.305、作业平台在普通作业中确定目标作业。
145.作业在将分解脚本中的待调试脚本转换为普通作业后,根据需要在普通作业中确定目标作业,目标作业用于体现待调试脚本在作为实际生产环境的目标云主机的执行情况。
146.目标作业可以是一个独立的普通作业,也可以是具有依赖关系的多个普通作业,具有依赖关系的多个普通作业中,每个普通作业和前置的普通作业具有依赖关系,当前置的普通作业执行后,依赖于前置的普通作业才可以执行。
147.306、作业平台向目标云主机发送目标作业。
148.作业平台在确定目标作业后,可以有多种方式向目标云主机下发目标作业,可以是批量下发,也可以是定时下发。
149.307、目标云主机执行目标作业。
150.目标云主机在接收作业平台发送的目标作业后,在目标云主机上根据实际环境运行目标作业,因为实际环境可能会和完整过程脚本的本地云主机存在差异,所以可能会运行失败。
151.308、目标云主机向作业平台发送目标作业的执行结果。
152.当目标作业在目标云主机上执行成功或执行失败,目标云主机都会向作业平台发送一个目标作业执行失败或执行成功的执行结果消息。
153.309、作业平台将目标作业的执行结果转发给本地云主机。
154.当作业平台收到目标云主机发送的目标作业的执行结果时,会将该执行结果转发给本地云主机,使本地云主机根据该执行结果定位脚本问题并对脚本进行修改后再次调试。
155.可以理解的是,作业平台接收本地云主机发送的待调试普通脚本,将待调试普通脚本转化为独立作业或依赖作业后,确定独立作业或依赖作业为目标作业,向目标云主机发送待调试普通脚本转化后的目标作业,通过目标作业的执行实现目标作业对应的待调试脚本的在作为实际生产环境的目标云主机上执行,而不用执行构建或部署整个过程的脚本,节约了目标云主机的存储和算力。
156.二、作业平台将待调试形参脚本转换成实参作业组,根据实参作业组中的实参作业确定目标作业:
157.请参阅图4,本实施例中,本地云主机根据完整过程脚本确定待调试脚本后将待调
试脚本发送给作业平台,当待调试脚本是含有形式参数的形参脚本时,作业平台将待调试形参脚本转化为实参作业组,在实参作业组中确定目标作业后,向目标云主机发送目标作业,使目标云主机执行目标作业并返回目标作业的执行结果。
158.401、本地云主机分解部署脚本,得到分解脚本。
159.402、本地云主机在分解脚本中确定待调试脚本。
160.403、本地云主机向作业平台发送待调试脚本。
161.本实施例中的步骤401至403与前述图3所示实施例中的步骤301至303类似,此处不再赘述。
162.404、当待调试脚本为待调试形参脚本时,作业平台将待调试形参脚本转化为实参作业组。
163.当待调试脚本为形参脚本时,作业平台对待调试形参脚本中的形式参数赋值,使其变为实际参数,相应地,待调试形参脚本被转化为了包含多个实参作业的实参作业组,每个实参作业组对应一个待调试形参脚本,实参作业是将表示命令的形式参数脚本通过赋值和提供资源的方式转化为实际参数作业。
164.405、作业平台在实参作业组上确定目标作业。
165.作业平台可以将一个实参作业组中的每个实参作业确定为独立的目标作业,也可以将多个具有依赖关系的实参作业确定为目标作业,前置的实参作业执行后紧接着就执行具有依赖关系的下一个实参作业。
166.406、作业平台向目标云主机发送目标作业。
167.407、目标云主机执行目标作业。
168.408、目标云主机向作业平台发送目标作业的执行结果。
169.409、作业平台将目标作业的执行结果转发给本地云主机。
170.本实施例中的步骤406至409与前述图3所示实施例中的步骤306至309类似,此处不再赘述。
171.可以理解的是,当待调试脚本为包含形式参数脚本时,作业平台对形式参数赋值后得到实参作业组,通过将实参作业组中的实参作业确定为目标作业发送给目标云主机执行后,可以使具体的实际参数在作为实际生产环境的目标云主机中执行,提高了待调试脚本的调试精度,避免了在基于云的环境由于无法获取实际参数导致无法对包含参数的脚本进行调试的问题。
172.结合上述对本技术实施例中脚本调试方法的介绍,下面对本技术实施例中脚本调试方法的应用场景进行介绍:
173.如图3所示实施例中步骤301和图4所示实施例中步骤401所述,本地云主机会将在本地云主机上编写的完整过程脚本进行分解,分解脚本可以有多种方式。
174.当编写的脚本是将每个步骤的脚本单独放在文件中时,分解是将每个步骤所对应的脚本文件确定为分解脚本,例如:将部署过程的脚本分解为安装脚本install.sh和启动脚本start.sh。
175.当编写的脚本是在一个脚本文件时,分解脚本是将脚本文件按照不同的需求分解为脚本块,将脚本文件分解为脚本块可以有多种方式:
176.请参阅图5,下面介绍本技术实施例中脚本调试方法的一个应用场景:
177.本地云主机可以将脚本文件500按照段落分解为1号分解脚本501,2号分解脚本502,3号分解脚本503和4号分解脚本504。每个分解脚本是脚本文件中的一个段落。
178.请参阅图6,下面介绍本技术实施例中脚本调试方法的一个应用场景:
179.本地云主机可以将脚本文件600按照分隔符号分解为1号分解脚本601,2号分解脚本602,3号分解脚本603和4号分解脚本604。每个分解脚本是脚本文件中相邻的两个分隔符号之间的部分。
180.请参阅图7,下面介绍本技术实施例中脚本调试方法的一个应用场景:
181.本地云主机可以将脚本文件700按照每行分解为1号分解脚本701,2号分解脚本702,3号分解脚本703,4号分解脚本704,5号分解脚本705,6号分解脚本706,7号分解脚本707,8号分解脚本708,9号分解脚本709和10号分解脚本710。
182.结合上述对本技术实施例中脚本分解的介绍,下面对下面介绍本技术实施例中脚本调试方法的一个应用场景进行介绍,本技术实施例中脚本调试方法中在分解脚本时可以采用如下的数据结构,请参阅图8:
183.将待调试脚本转成树结构,每个节点还可以按照脚本分解方式继续进行分解,最后所有的叶子节点可单独执行或依赖执行。执行调试的时候,通过作业服务将脚本转成作业后,然后下发到目标主机,并将执行结果进行返回展示。
184.例如,将待调试脚本分解为分解脚本1、分解脚本2和分解脚本3分别转化为目标作业后在目标云主机上执行,假设分解脚本2执行失败,需要进一步精确定位问题,则可以将分解脚本2进一步分解为分解脚本2-1和分解脚本2-2,并且分别转化为目标作业后在目标云主机上进一步执行。
185.结合上述介绍,下面对本技术实施例中脚本调试方法的另一应用场景进行介绍,请参阅图9:
186.本技术实施例中的脚本调试方法是在现有技术上新增加的额外的功能,不影响原有的现有技术,可以与原有的现有技术结合使用,可以根据调试脚本的需求综合考虑对于待调试脚本使用本技术实施例中的转化为目标作业的脚本调试方法或现有技术中的日志输出方法。
187.例如,首先使用现有技术中的日志输出方法执行图9中的(a)图所示的完整过程脚本,通过日志输出确定问题脚本900,确定问题脚本900为待调试脚本后,将问题脚本900分解为如图9中的(b)图所示的粒度更小的1号待调试脚本901、2号待调试脚本902、3号待调试脚本903、4号待调试脚本904和5号待调试脚本905,再根据本技术实施例中的脚本调试方法,分别将1号待调试脚本901、2号待调试脚本902、3号待调试脚本903、4号待调试脚本904和5号待调试脚本905转化为目标作业后,在目标云主机上执行,对问题脚本进行更精确得定位。
188.下面对本技术实施例中的作业平台进行描述:
189.请参阅图10,本技术实施例中,作业平台的一个结构包括接收单元1001,获取单元1002和发送单元1003。
190.接收单元1001,用于接收本地云主机发送的待调试脚本;
191.获取单元1002,用于根据待调试脚本获取目标作业;
192.发送单元1003,用于向目标云主机发送目标作业,使目标云主机执行目标作业。
193.请参阅图11,本技术实施例中,作业平台的另一结构包括接收单元1101,获取单元1102、发送单元1103、转化单元1104和确定单元1105。
194.转化单元1104,用于当待调试脚本为待调试形参脚本时,将待调试形参脚本转化为实参作业组,实参作业组包括至少一个实参作业;
195.确定单元1105,用于根据实参作业确定目标作业。
196.转化单元1104,还用于当待调试脚本为待调试普通脚本时,将待调试普通脚本转化为普通作业;
197.确定单元1105,还用于根据普通作业确定目标作业。
198.接收单元1101,用于接收目标云主机发送的目标作业的执行结果,执行结果表示目标作业执行成功或执行失败;
199.发送单元1103,还用于向本地云主机发送执行结果。
200.请参阅图12,本技术实施例还提供了一种作业平台1200。
201.作业平台1200可以包括处理器1202、收发器1203,收发器1203可以与处理器1202连接,如图12所示。收发器1203可以包括接收器和发送器,可以用于接收或者发送消息或数据,收发器1203可以是网卡。作业平台1200还可以包括加速部件(可称为加速器),当加速部件为网络加速部件时,加速部件可以为网卡。处理器1202可以是作业平台1200的控制中心,利用各种接口和线路连接整个作业平台1200的各个部分,如收发器1203等。在本发明中,处理器1202可以是中央处理器(central processing unit,cpu),可选的,处理器1202可以包括一个或多个处理单元。处理器1202还可以是数字信号处理器、专用集成电路、现场可编程门阵列、gpu或者其他可编程逻辑器件等。作业平台1200还可以包括存储器1201,存储器1201可用于存储软件程序以及模块,处理器1202通过读取存储在存储器1201的软件代码以及模块,从而执行作业平台1200的各种功能应用以及数据处理。
202.下面对本技术实施例中的本地云主机进行描述:
203.请参阅图13,本技术实施例中本地云主机的一个结构包括确定单元1301和发送单元1302。
204.确定单元1301,用于根据完整过程脚本确定待调试脚本,完整过程脚本是在本地云主机上完成编写的脚本;
205.发送单元1302,用于向作业平台发送待调试脚本,使作业平台根据待调试脚本获取目标作业并向目标云主机发送目标作业。
206.请参阅图14,本技术实施例中本地云主机的另一结构包括确定单元1401、分解单元1402和发送单元1403。
207.分解单元1402,用于分解完整过程脚本,得到分解脚本;
208.确定单元1401,用于根据分解脚本确定待调试脚本。
209.分解单元1402,还用于当完整过程脚本包括多个文件时,根据多个文件中的每个文件分解完整过程脚本。
210.分解单元1402,还用于当完整过程脚本是一个文件时,根据完整过程脚本中的每个段落分解完整过程脚本。
211.分解单元1402,还用于当完整过程脚本是一个文件时,根据完整过程脚本中的每一行分解完整过程脚本。
212.分解单元1402,还用于当完整过程脚本是一个文件时,根据完整过程脚本中的每个符号分解完整过程脚本。
213.请参阅图15,本技术实施例还提供了一种本地云主机1500。
214.本地云主机1500可以包括处理器1502、收发器1503,收发器1503可以与处理器1502连接,如图15所示。收发器1503可以包括接收器和发送器,可以用于接收或者发送消息或数据,收发器1503可以是网卡。本地云主机1500还可以包括加速部件(可称为加速器),当加速部件为网络加速部件时,加速部件可以为网卡。处理器1502可以是本地云主机1500的控制中心,利用各种接口和线路连接整个本地云主机1500的各个部分,如收发器1503等。在本发明中,处理器1502可以是中央处理器(central processing unit,cpu),可选的,处理器1502可以包括一个或多个处理单元。处理器1502还可以是数字信号处理器、专用集成电路、现场可编程门阵列、gpu或者其他可编程逻辑器件等。本地云主机1500还可以包括存储器1501,存储器1501可用于存储软件程序以及模块,处理器1802通过读取存储在存储器1501的软件代码以及模块,从而执行本地云主机1500的各种功能应用以及数据处理。
215.下面介绍本技术实施例中的目标云主机:
216.请参阅图16,本技术实施例中的目标云主机的一个结构包括接收单元1601和执行单元1602。
217.接收单元1601,用于接收作业平台发送的目标作业,目标作业是作业平台根据本地云主机发送的待调试脚本获取的;
218.执行单元1602,用于执行目标作业。
219.请参阅图17,本技术实施例中的目标云主机的另一结构包括接收单元1701、执行单元1702和发送单元1703。
220.发送单元1703,用于向作业平台发送目标作业的执行结果,使作业平台向本地云主机发送执行结果,执行结果表示目标作业执行成功或执行失败。
221.请参阅图18,本技术实施例还提供了一种目标云主机1800。
222.目标云主机1800可以包括处理器1802、收发器1803,收发器1803可以与处理器1802连接,如图18所示。收发器1803可以包括接收器和发送器,可以用于接收或者发送消息或数据,收发器1803可以是网卡。目标云主机1800还可以包括加速部件(可称为加速器),当加速部件为网络加速部件时,加速部件可以为网卡。处理器1802可以是目标云主机1800的控制中心,利用各种接口和线路连接整个目标云主机1800的各个部分,如收发器1803等。在本发明中,处理器1802可以是中央处理器(central processing unit,cpu),可选的,处理器1802可以包括一个或多个处理单元。处理器1802还可以是数字信号处理器、专用集成电路、现场可编程门阵列、gpu或者其他可编程逻辑器件等。目标云主机1800还可以包括存储器1801,存储器1801可用于存储软件程序以及模块,处理器1802通过读取存储在存储器1801的软件代码以及模块,从而执行目标云主机1800的各种功能应用以及数据处理。
223.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
224.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
225.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
226.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
227.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献