CN112783515B - 插件的控制方法和装置、存储介质 - Google Patents
插件的控制方法和装置、存储介质 Download PDFInfo
- Publication number
- CN112783515B CN112783515B CN202110172119.7A CN202110172119A CN112783515B CN 112783515 B CN112783515 B CN 112783515B CN 202110172119 A CN202110172119 A CN 202110172119A CN 112783515 B CN112783515 B CN 112783515B
- Authority
- CN
- China
- Prior art keywords
- plug
- version number
- file
- version
- target
- 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
Links
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- 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
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 Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种插件的控制方法和装置、存储介质。其中,该方法包括:通过获取插件的描述信息;根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号;在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件;根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件,达到了应用的插件开发者可以将开发的插件上传至插件库中,项目使用者可以根据插件的版本号,在插件库中搜索对应的插件,下载该插件,完成本地环境部署目的,从而减少了插件开发者和插件使用中之间强依赖的技术效果,进而解决了现有技术中,应用工具开发的效率较低的技术问题。
Description
技术领域
本发明涉及应用开发的技术领域,具体而言,涉及一种插件的控制方法和装置、存储介质。
背景技术
在应用的开发流程中,一些项目的开发会需要各种工具和插件。通常技术部门的人员会直接开发工具并手工的交付功能开发者使用。但是这样的工作流程因为缺少版本信息,不利于迭代开发,在遇到问题时也很容易让整个工作流程进入一个停滞的状态。当团队规模和插件工具的数量达到一定规模的时候,传统的开发流程就会遇到很多问题,造成开发效率的低下。
目前,应用的工具开发流程为工具的开发者只负责工具的开发,并且手工传递给项目组具体的使用人员。应用工具的开发过程存在:工具开发团队和工具使用团队之间存在着强依赖关系,使用团队需要依赖开发团队去维护版本和修复bug,之间的顺接关系决定了一换必须扣着一环,无法并行开发,导致应用工具开发的效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种插件的控制方法和装置、存储介质,以至少解决现有技术中,应用工具开发的效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种插件的控制方法,包括:获取第一文件,其中,所述第一文件记录了所需要的目标插件集合中的每个插件的描述信息;根据所述每个插件的描述信息,在第一历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第一目标版本号,其中,所述第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,所述一个插件的所述历史构建信息包括所述一个插件的已构建过的版本号;在搜索到所述目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,所述第二文件记录了所述目标插件集合中的每个插件的名称以及所述每个插件对应的第一目标版本号;根据所述第二文件,下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件。
根据本发明实施例的另一方面,还提供了一种插件的控制装置,包括:第一获取单元,用于获取第一文件,其中,所述第一文件记录了所需要的目标插件集合中的每个插件的描述信息;搜索单元,用于根据所述每个插件的描述信息,在第一历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第一目标版本号,其中,所述第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,所述一个插件的所述历史构建信息包括所述一个插件的已构建过的版本号;生成单元,用于在搜索到所述目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,所述第二文件记录了所述目标插件集合中的每个插件的名称以及所述每个插件对应的第一目标版本号;下载单元,用于根据所述第二文件,下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述插件的控制方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的插件的控制方法。
在本发明实施例中,通过获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件,达到了应用的插件开发者可以将开发的插件上传至插件库中,项目使用者可以根据插件的版本号,在插件库中搜索对应的插件,下载该插件,完成本地环境部署目的,从而减少了插件开发者和插件使用中之间强依赖的技术效果,进而解决了现有技术中,应用工具开发的效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的插件的控制方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的插件的控制方法的流程图;
图3是根据本发明实施例的一种可选的第一文件的开发环境示意图;
图4是根据本发明实施例的一种可选的工具管线化开发的流程的结构图;
图5是根据本发明实施例的一种可选的触发构建机构建流程的示意图;
图6是根据本发明实施例的一种可选的目录结构示意图(一);
图7是根据本发明实施例的一种可选的目录结构示意图(二);
图8是根据本发明实施例的一种可选的构建历史文件示意图;
图9是根据本发明实施例的一种可选的文件开发环境示意图;
图10是根据本发明实施例的一种可选的软件开发过程中插件的流程结构图;
图11是根据本发明实施例的一种可选的插件的控制装置的结构示意图;
图12是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好的理解本申请提供的实施例,部分名词解释如下。
CI:持续集成(Continuous integration,简称CI)持续集成的目的,是让产品可以快速迭代的同时还能保持高质量。
构建:通过依次执行相关脚本,来对原始代码进行编译和组装,形成一个可供发布的安装包。
webhook:一种HTTP回调,某些条件下触发的HTTP POST请求;通过HTTP POST发送的简单事件通知。在代码托管平台上,当有代码提交或其他特殊操作时,自动向钩子目标发送通知,从而执行后续操作。
Pipeline:管线,代表一连串含有固定模式的开发流程。通过在流程上加入自动化部分,能进一步提高效率。
根据本发明实施例的一个方面,提供了一种插件的控制方法,可选地,作为一种可选的实施方式,上述插件的控制方法可以但不限于应用于如图1所示的环境中。终端设备102、网络104以及服务器106。
服务器106获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件,达到了应用的插件开发者可以将开发的插件上传至插件库中,项目使用者可以根据插件的版本号,在插件库中搜索对应的插件,下载该插件,完成本地环境部署目的,从而减少了插件开发者和插件使用中之间强依赖的技术效果,进而解决了现有技术中,应用工具开发的效率较低的技术问题。
可选地,在本实施例中,上述终端设备可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。目标客户端可以是视频客户端、即时通信客户端、浏览器客户端、教育客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述仅是一种示例,本实施例中对此不作任何限定。
在软件应用的开发流程中,软件功能会需要到各种工具和插件。通常工具开发者会直接将开发工具并手工的交付项目组使用。工作流程缺少版本信息,不利于迭代开发,在遇到问题时也很容易让整个工作流程进入一个停滞的状态。当团队规模和插件工具的数量达到一定规模的时候,开发流程就会遇到很多问题,造成开发效率的低下。
在本申请中提出插件的控制方法,通过模块化和标准化插件的开发,可以将容易出错和操作繁琐的进行自动化,还可以保证开发项目组具有统一、高机动性的开发环境。
可选地,作为一种可选的实施方式,如图2所示,上述插件的控制方法包括:
步骤S202,获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息。
步骤S204,根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号。
步骤S206,在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号。
步骤S208,根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件。
可选的,在本实施例中,上述插件的控制方法可以包括但不限于应用于应用软件的开发、维护过程。在应用软件的开发过程中,应用软件的某个功能可以需要一个插件或多个插件共同完成。
其中,在本实施例中,上述第一文件中记录了目标插件集合中的每个插件的描述信息,描述信息可以是用于描述插件的功能,如用于浏览资讯的插件,微信应用中的小程序可以理解为插件。
在实施例中,第一历史构建文件集合可以包括第一个或多个插件的历史构建信息,插件的历史构建信息可以理解生成插件的信息,即插件的开发过程是一个动态的,在对插件的代码进行更新后,都可以对应生成一个构建信息,也就是说,插件的历史构建信息可以是插件的版本号,而插件的版本号对应插件的一次更新。
在本实施例中,第一历史构建文件集合中可以包括一个或多个插件,每个插件的版本号可以包括一个或多个。其中,在第一历史构建文件集合中可以包括一个或多个子文件集合,一个子文件集合对应一个插件,子文件集合中记录一个插件的一个或多个版本号。
在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,下载目标插件集合中版本号为第一目标版本号的每个插件,根据每个插件可以完成本地环境的配置。
需要说明的是,应用软件或插件的版本号的定义如下:
版本号通常可以由三位或四位组成,形如:x.y.z.h;
版本是严格递增的,此处是:0.2.6.9≥0.2.6.10≥0.2.6.11;
在发布重要版本时,可以发布alpha,rc等先行版本;
alpha,rc等修饰版本的关键字后面可以带上次数和meta信息;
在本实施例中,上述描述信息可以包括插件版本号的部分或全部字段。描述信息可以是版本号的一个字段或多个字段,如描述信息为“2”、描述信息为“2.6”,其中,插件的描述信息可以理解为插件的关键词。
根据关键词在第一历史构建文件集合中搜索对应关键词的插件。
例如,第一文件中记录的目标插件集合为3个插件的描述信息,插件plugin_A,插件plugin_B以及插件plugin_C。根据3个插件的描述信息在第一历史构建文件集合中搜索插件plugin_A对应的第一目标版本号,插件plugin_B对应的以及插件plugin_C对应的第一目标版本号,下载第一目标版本号的插件plugin_A、第一目标版本号插件plugin_B以及第一目标版本号插件plugin_C,根据3个插件完成本地环境的配置。
如图3所示,第一文件的开发环境示意图,“name”:“dev”,名称为“dev”的第一文件;
在根据插件Plugin_A的描述信息,插件Plugin_B的描述信息、以及插件Plugin_C的描述信息,可以在第一历史构建文件技术中搜索到Plugin_A的第一版本号0.5.3.2,插件Plugin_B的第一版本号1.1.0.4,插件Plugin_A的第一版本号0.7.1.0,根据3个插件的第一目标版本号,下载3个插件,得到图3所示的右侧对应的.zip包,如3个插件下载后形成一个Plugin_A_0.6.1.0.zip包。
应用软件的开发过程中,需要不断的对应用软件的功能进行完善,有的软件功能需要到各种工具和插件,不同插件的开发者在自己的本地开发环境中开发插件,因此,插件的开发者和插件的使用团队之间存在着强依赖关系,使用团队需要依赖开发团队去维护版本和修复bug,之间的顺接关系决定了一换必须扣着一环,无法并行开发。
在本实施例中,插件的开发者在完成对插件的代码更新或修复后,将会对插件标签版本号,将更新的代码推送至第一历史构建文件集合(插件仓库),插件仓库中存在多种不同插件,每个插件存在不同的版本,使用团队可以根据需要在插件仓库调用需要的版本插件,而不需要插件开发者在对插件代码更新后,手动推送给使用团队,减小可插件开发者和插件的使用团队之间的强依赖关系,使用团队不需要依赖开发团队去维护版本和修复bug,插件开发者和插件使用者可以实现并行开发。
在本实施例中,在第一历史构建文件集合中的第一历史构建文件中记录一条历史构建记录是不断的更新的,可以包括如下更新的方式:
方式一:获取手动触发的第一插件更新信息,其中,第一插件更新信息用于表示完成对版本号为第二版本号的第一插件的构建;在第一历史构建文件中记录第一条历史构建记录,其中,第一条历史构建记录包括第二版本号以及第一更新类型,第一更新类型用于表示第二版本号为手动更新的版本号。
方式一:获取定期触发的第二插件更新信息,其中,第二插件更新信息用于表示完成对版本号为第二版本号的第一插件的构建;在第一历史构建文件中记录第二条历史构建记录,其中,第二条历史构建记录包括第二版本号以及第二更新类型,第二更新类型用于表示第二版本号为定期更新的版本号。
通过本申请提供的实施例,获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件,达到了应用的插件开发者可以将开发的插件上传至插件库中,项目使用者可以根据插件的版本号,在插件库中搜索对应的插件,下载该插件,完成本地环境部署目的,从而减少了插件开发者和插件使用中之间强依赖的技术效果,进而解决了现有技术中,应用工具开发的效率较低的技术问题。
可选的,根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,可以包括:
对每个插件的描述信息执行以下步骤,得到每个插件对应的第一目标版本号,其中,在执行以下步骤时,每个插件的描述信息被设为当前插件的当前描述信息:在当前描述信息包括版本锁定信息的情况下,在第一历史构建文件集合中的当前历史构建文件中搜索与版本锁定信息匹配的第一版本号,其中,当前插件对应的第一目标版本号为第一版本号,当前历史构建文件记录了当前插件的历史构建信息,当前插件的历史构建信息包括当前插件的已构建过的版本号,版本锁定信息用于表示当前插件的部分版本字段的取值。
在本实施例中,由于插件开发者在更新插件代码后,都会将插件的最新版本号推送至第一历史构建文件集合,因此,第一历史构建文集集合中的插件的版本号是不断增多的。
在当前描述信息包括当前插件的部分版本字段的取值的情况下,在第一历史构建文件集合中的搜索与版本锁定信息匹配的第一版本号,如插件Plugin_A的当前描述信息的锁定信息为版本号从左至右的第2位“5”,则可以得到版本号从左至右的第2位为“5”的所有版本号,即第一版本号可以包括多个。在锁定信息越详细则可以得到更准确的版本号,如锁定信息为“0.5.3.2”,则可以得到一个匹配的第一版本号“0.5.3.2”。
可选的,在第一历史构建文件集合中的当前历史构建文件中搜索与版本锁定信息匹配的第一版本号,可以包括:在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值。
在本实施例中,可以插件的最新版本号,以及得到插件的最新版本。即得到版本号从左至右的第2位为“5”的最新版本号,如当前历史构建文件中插件Plugin_A的版本号有“0.5.3.2”、“0.5.3.1”,则第一版本号为最新的版本号“0.5.3.2”。
可选的,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,可以包括如下方式:
方式一:在忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值,第一版本号中的补丁版本字段的取值为目标值,目标值表示忽略补丁版本字段的取值。
方式二:在考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值,第一版本号中的补丁版本字段的取值为当前历史构建文件中的最新版本号中的补丁版本字段的取值。
在本实施例中,考虑到存在补丁版本字段的情况下,如何在得到第一版本号。可以忽略补丁版本字段的情况下,第一版本号中的补丁版本字段可以不是最新的版本号,在考虑补丁版本字段的情况下,第一版本号中的补丁版本字段是最新的版本号。
可选的,上述方法还可以包括:
在忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,包括:在当前描述信息还包括第一选项字段、且第一选项字段的取值表示忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号;
在考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,包括:在当前描述信息还包括第一选项字段、且第一选项字段的取值表示考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号。
可选的,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,可以包括如下方式:
方式三:在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号。
方式四:在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号。
方式五:在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号。
在本实施例中,第一版本号的确定,还可以包括方式一和方式三的结合,方式一和方式四的结合,方式一和方式五的结合,方式二和方式三的结合,方式二和方式四的结合,方式二和方式五的结合等情况下,确定第一版本号。
可选的,在本实施例中,得到第一版本号的方式包括如下内容:
方式六:在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号,可以包括:在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在所有的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值的所有版本号中搜索最新版本号,得到第一版本号。
方式七:在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号,包括:在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在更新类型为手动更新的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号。
方式八:在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号,包括:在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在更新类型为定期更新的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号。
可选的,上述方法还可以包括:在第一历史构建文件集合更新为第二历史构建文件集合的情况下,根据第一文件记录的每个插件的描述信息,在第二历史构建文件集合中搜索目标插件集合中的每个插件对应的第二目标版本号,其中,第一历史构建文件集合中与目标插件集合相关的历史构建文件至少部分不同于第二历史构建文件集合中与目标插件集合相关的历史构建文件;
在搜索到目标插件集合中的每个插件对应的第二目标版本号的情况下,生成第三文件,其中,第三文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第二目标版本号;
根据第三文件,下载目标插件集合中版本号为第二目标版本号的每个插件。
在本实施例中,第一历史构建文件集合是动态更新的状态,根据插件的描述信息搜索每个插件对应的第二目标版本号时,可以在最新的第一历史构建文件集合,即第二历史构建文件集合中进行搜索第一目标版本号,进而可以保证下载的插件是最新的插件。
可选的,上述方法还可以包括:
响应于回退指令,根据第二文件,重新下载目标插件集合中版本号为第一目标版本号的每个插件,以替换目标插件集合中版本号为第二目标版本号的每个插件。
在第二文件中的插件出现重大bug的情况下,可以将目标插件集合中的版本号替换为之前修改的版本号。例如,第二文件中的插件Plugin_A的第二版本号0.5.3.3,在0.5.3.3版本的插件存在不可逆修复的情况下,可以重新下载插件Plugin_A的第一版本号0.5.3.2。
在本实施例中,一旦工具链上某一环出现问题,使用团队可以快速回退到一个备选方案,从而避免开发工作被阻塞,软件开发响应快。
其中,在本实施例中,在目标插件集合中版本号为第二目标版本号的每个插件中的部分或全部插件存在问题的情况下,获取回退指令。
在本实施例中,在目标插件集合中版本号的每个插件的部分或全部插件出现不可修复的bug时,可以根据回退指令,回到第二目标版本号之前的一个版本号。
例如,插件A的构建历史文件:版本号:0.5.1.0
trigger_type=Tag,手动触发更新
版本号:0.5.1.1
trigger_type=Tag,手动触发更新
版本号:0.5.2.0
trigger_type=Time_Trigger,自动触发更新
版本号:0.5.2.1
trigger_type=Time_Trigger,自动触发更新
在"plugin_A":{
"lock":"0.5.x.x",
"nightly":true,
"patched":true
返回0.5.2.1。
在"plugin_A":{
"lock":"0.5.x.x",
"nightly:rue,
"patched":false
返回0.5.2.0。
在"plugin_A":{
"lock":"0.5.x.x",
"nightly":false,
"patched":true
其中,考虑补丁版本,除定期更新的版本号之外的最新版本号,返回0.5.1.1。
在"plugin_A":{
"lock":"0.5.x.x",
"nightly:alse,
"patched":false
其中,不考虑补丁版本,除定期更新的版本号之外的最新版本号,返回0.5.1.0。
可选的,上述方法还可以包括:在目标软件中对目标插件集合中版本号为第一目标版本号的每个插件进行运行配置,以使得在目标软件中允许使用目标插件集合中版本号为第一目标版本号的每个插件。
可选的,上述方法还可以包括:在完成对版本号为第二版本号的第一插件的构建的情况下,在第一历史构建文件集合中的第一历史构建文件中记录一条历史构建记录,其中,一条历史构建记录包括第二版本号,第一历史构建文件记录了第一插件的历史构建信息,第一插件的历史构建信息包括一条或多条历史构建记录,每条历史构建记录包括第一插件的已构建过的一个版本号。
可选的,作为一种可选的实施方式,本申请还提供了一种可选的工具管线化开发的方法。
在游戏的开发流程中,美术会需要到各种工具和插件。传统的习惯上,技术部门的同事会直接开发工具并手工的交付美术使用。但是这样的工作流程因为缺少版本信息,不利于迭代开发,在遇到问题时也很容易让整个工作流程进入一个停滞的状态。当团队规模和插件工具的数量达到一定规模的时候,传统的开发流程就会遇到很多问题,造成开发效率的低下。
如图4所示,工具管线化开发的流程的结构图。
在图4中,按照不同的环境,可以分为4个部分,开发团队的本地环境;工具管线化开发的平台系统;用于构建和发布的服务器;项目组使用环境。这四部分的时间线并不是依次执行的,而是并行执行的,可以让不同开发团队的协同开发。
首先,不同插件的开发者在自己的本地开发环境中开发插件,实现构建接口后并交由工蜂进行托管。在达到某个版本的要求之后,向工蜂推送插件版本号tag。平台触发自动构建,通知构建机按照构建接口对项目进行自动构建。并根据触发条件,将不同版本的插件进行归档处理,并使用一个module文件记录各个构建信息。
需要说明的是,根据应用软件的需求,插件的代码是不断的进行更新,开发者需要根据需求不断对插件的代码进行更新,代码的更新可以包括但不限于代码bug修复,根据需求新增部分代码等。开发者还可以在本地编码环境对代码进行更新,将更新的代码输出到安装目标install中,执行install可以直接指定安装目录下的目录。
每个项目组,会根据项目组的需要将,上传特定的.rule文件(第一文件)来注明项目组的开发需求中需要哪些插件和模块,以及它们的更新规则是什么。构建服务器可以在满足定期构建的条件或者手动触发时,根据所有项目的.rule文件进行一次pipeline文件的生成。会对所有插件的生成记录进行一次检索和判断,对所有满足条件的插件进行组合和记录,形成一个Pipeline文件,即客户端的开发环境的所有依赖项列表。
每次项目组的开发人员在通过启动器启动开发工具的时候,会检索所有的可行Pipeline,开发人员可以根据项目的要求快速切换到统一的pipeline,启动器将会自动根据pipeline的内容为用户配置好所有的开发环境。
完成本地环境中与插件相关的配置(配置信息在插件版本文件中),配置完之后,打开软件,才能使用插件,插件可以是发布的软件中的一款软件。
1)开发团队在本地开发插件环境:
对于每个插件,要求插件的开发者提供一个统一的构建接口,从而使得构建机能够按照一套统一的规则进行构建。构建可以包括两个文件:
install_make.py:在每个插件中的相同相对路径下设置一个用于publish的脚本,其中,py可以最大程度的保证跨平台。
Install_run.rawbat:包含插件启动时的环境变量的设置,具体可以根据平台衍生为不同的脚本,或是封装成py类供启动器集成。
插件的构建接口是产出最小化插件执行环境,供后续Pipeline包装。
2)工蜂和平台系统担任的是中间人的角色,负责监控开发更新和通知构建。
3)触发构建机构建流程
每当插件开发者push一个tag之后,其中,该tag表示插件的最新版本号。构建机收到钩子会先将当前版本的仓库代码pull到本地,接着调用构建接口,执行相关命令。产出物是该插件的一个工具最小化运行环境。如图5所示,触发构建机构建流程的示意图,如图5所示,构建机构建流程的触发方式3种,手动触发、和Git事件触发以及定时触发。构建机构建环境包括批处理脚本Batch Script和归档构件。
最后会根据当前的构建产物标上版本记号并归档。同时记录构建信息,方便后续检索。
构建两个主要的目录结构,其中,如图6所示,目录结构示意图(一),图6所示,module_repos目录结构,每次触发CI,都会保持相关代码库的更新。
如图7所示,目录结构示意图(二),图7所示,module_archives目录结构,Build完成后归档的构建会按照版本存储,并会更新构建历史信息,方便后续pipeline的检索和获取。
如图8所示,构建历史文件示意图,其中,每个插件具有一个构建历史文件。
对于每个插件最新tag版本,会记录它的构建commit id和触发类型,其中,commitid表示该插件对应的版本的源代码,触发类型包括:手动提交最新版本号tag和定期触发,例如通过手动提交tag触发还是进行了一些patch(补丁)产生的。
在构建完不同版本的插件之后,还需要定期构建pipeline文件,从而提供给使用它的项目团队一个稳定的工具链,Pipeline文件它不包含具体的插件,但是它会将当前一组稳定的工具/插件集合的信息包装到一起。
自动检索:当客户使用时,它无需关注或者寻找它所需要的版本,而是通过pipeline中的定义,一次性将相关插件下载到本机。不同插件各自完成自己所需的环境设置之后,整个开发环境即配置完成。
定期更新,每次都会产生一个完整的可运行工具链:Pipeline文件会定期更新,如果某一条pipeline中出现了问题,整个开发团队可以快速回归到上一个版本的环境,从而避免因为插件的开发产生的bug而被完全block住。
其中,.rule文件定义了一个pipeline是如何产生的,即每个项目组开发团队的管理员制定pipeline的规则。.pipeline文件是最终实际组成pipeline的插件版本信息,也即后续launcher实际去搜索的文件。
如图9所示,dev.rule文件开发环境示意图,此开发环境中,需依赖插件plugin_A,plugin_B,plugin_C。
dev.rule
{
dependencies":{
"plugin_A":{
"lock":"0.5.x.x",
"nightly":true,
"patched":true
},
"plugin_B":{
lock":"1.1.0.x",
"nightly":false,
"patched":true
},
"plugin_C":{
"lock";"0.7.x.x",
"nightly":true,
"patched":false
}
}
}
如插件plugin_A被锁定在0.5的版本,它会检测所有基于0.5.x.x的开发更新,如0.5.0.0,其中,0.5可以被理解为是一个版本号的字段。
同时它开启了nightly选项,则会更新定期更新的版本号,如0.5.2.0,否则忽视;
nightly=true,会考虑定期更新(Time_trigger)的版本号,所有方式更新的版本号中的最新版本号;
nightly=false,不会去考虑定期更新(Time_trigger)的版本号,除此之外的最新版本。
其中,如果他开启了patched选项,则会更新补丁版本,如0.5.1.1,否则忽视。Patch选项的最大用处是应对开发人员不断的修正一个branch,而不想引入新功能的情况。
在当前第一文件为Pipeline 0929:
plugin_A:“0.5.4.2”
plugin_B:“1.1.2.1”
plugin_C:“0.7.2.0”
或者
当前第一文件为Pipeline 0929
plugin_A:“0.5.3.2”
plugin_B:“1.1.2.1”
plugin_C:“0.7.2.0”
可以直接回到图9所述的左侧对应的每个插件的版本号。
4)用户使用环境:
在本实施例中,提供了一个命令行环境,用户可以选择自己需要哪一条pipeline。
如果当前Pipeline broke了,可以快速切换到另一条pipeline并保持整个团队一致。
如图10所示,软件开发过程中插件的流程结构图。在图9所示的三条水平的箭头,自上而下依次代表插件开发者管线,构建机生成Pipeline管线,和项目使用开发Pipeline的管线。
在本实施例中,提供一套工具管线化开发的流程,通过模块化和标准化插件的开发,在自动化一些容易出错和繁琐的操作的同时,提供了一套简单易操作的方法保证开发组拥有统一而高机动性的开发环境。
本申请提供的实施例,可以建立一套系统,使得不同部分的开发人员能够最大程度上实现并行开发。同时,由于标准化了构建和发布的流程。所以开发人员能够以一种更安全便捷的方法发布和推送自己的插件和工具。而对于项目管理人员。通过定制管线规则和成分,可以统一项目组成员的开发环境,如因为某个工具出现致命bug而阻碍开发进一步进行的时候,也可以快速的切换到上一个稳定的开发版本,从而减少因为无法继续工作而造成的人力损失。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述插件的控制方法的插件的控制装置。如图11所示,该插件的控制装置包括:第一获取单元1101、第一搜索单元1103、第一生成单元1105以及第一下载单元1107。
第一获取单元1101,用于获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息。
第一搜索单元1103,用于根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号。
第一生成单元1105,用于在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号。
第一下载单元1107,用于根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件。
通过本申请提供的实施例,第一获取单元1101获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;第一搜索单元1103根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;第一生成单元1105在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;第一下载单元1107根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件。达到了应用的插件开发者可以将开发的插件上传至插件库中,项目使用者可以根据插件的版本号,在插件库中搜索对应的插件,下载该插件,完成本地环境部署目的,从而减少了插件开发者和插件使用中之间强依赖的技术效果,进而解决了现有技术中,应用工具开发的效率较低的技术问题。
可选的,上述第一搜索单元1103,可以包括:
对每个插件的描述信息执行以下步骤,得到每个插件对应的第一目标版本号,其中,在执行以下步骤时,每个插件的描述信息被设为当前插件的当前描述信息:
第一搜索模块,用于在当前描述信息包括版本锁定信息的情况下,在第一历史构建文件集合中的当前历史构建文件中搜索与版本锁定信息匹配的第一版本号,其中,当前插件对应的第一目标版本号为第一版本号,当前历史构建文件记录了当前插件的历史构建信息,当前插件的历史构建信息包括当前插件的已构建过的版本号,版本锁定信息用于表示当前插件的部分版本字段的取值。
其中,上述第一搜索模块,可以包括:
1)第一子搜索模块,用于在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值。
2)第二子搜索模块,用于在忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值,第一版本号中的补丁版本字段的取值为目标值,目标值表示忽略补丁版本字段的取值。
3)第三子搜索模块,用于在考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号,其中,第一版本号包括部分版本字段的取值,第一版本号中的补丁版本字段的取值为当前历史构建文件中的最新版本号中的补丁版本字段的取值。
可选的,上述装置,所述第二子搜索模块还用于执行如下操作:在当前描述信息还包括第一选项字段、且第一选项字段的取值表示忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在忽略当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号。
所述第三子搜索模块还用于执行如下操作:在当前描述信息还包括第一选项字段、且第一选项字段的取值表示考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在考虑当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号。
可选的,上述第一搜索模块,可以包括:
4)第四子搜索模块,用于在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号。
5)第五子搜索模块,用于在当前历史构建文件中包括部分版本字段的取值的版本号中搜索最新版本号,得到第一版本号。
6)第六子搜索模块,用于在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号。
可选的,上述装置还可以包括:第二搜索模块,用于在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在所有的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值的所有版本号中搜索最新版本号,得到第一版本号。
第三搜索模块,用于在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在更新类型为手动更新的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到第一版本号。
第四搜索模块,用于在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号,包括:在当前描述信息还包括第二选项字段、且第二选项字段的取值表示在更新类型为定期更新的版本号中进行搜索的情况下,在当前历史构建文件中包括部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到第一版本号。
可选的,上述装置还可以包括:第二搜索单元,用于在第一历史构建文件集合更新为第二历史构建文件集合的情况下,根据第一文件记录的每个插件的描述信息,在第二历史构建文件集合中搜索目标插件集合中的每个插件对应的第二目标版本号,其中,第一历史构建文件集合中与目标插件集合相关的历史构建文件至少部分不同于第二历史构建文件集合中与目标插件集合相关的历史构建文件;
第二生成单元,用于在搜索到目标插件集合中的每个插件对应的第二目标版本号的情况下,生成第三文件,其中,第三文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第二目标版本号;
第二下载单元,用于根据第三文件,下载目标插件集合中版本号为第二目标版本号的每个插件。
可选的,上述装置还可以包括:第三下载单元,用于响应于回退指令,根据第二文件,重新下载目标插件集合中版本号为第一目标版本号的每个插件,以替换目标插件集合中版本号为第二目标版本号的每个插件。
可选的,上述装置还可以包括:第二获取单元,用于在目标插件集合中版本号为第二目标版本号的每个插件中的部分或全部插件存在问题的情况下,获取回退指令。
可选的,上述装置还可以包括:配置单元,用于在目标软件中对目标插件集合中版本号为第一目标版本号的每个插件进行运行配置,以使得在目标软件中允许使用目标插件集合中版本号为第一目标版本号的每个插件。
可选的,上述装置还可以包括:记录单元,用于在完成对版本号为第二版本号的第一插件的构建的情况下,在第一历史构建文件集合中的第一历史构建文件中记录一条历史构建记录,其中,一条历史构建记录包括第二版本号,第一历史构建文件记录了第一插件的历史构建信息,第一插件的历史构建信息包括一条或多条历史构建记录,每条历史构建记录包括第一插件的已构建过的一个版本号。
其中,上述记录单元,可以包括:
第一记录模块,用于获取手动触发的第一插件更新信息,其中,第一插件更新信息用于表示完成对版本号为第二版本号的第一插件的构建;在第一历史构建文件中记录第一条历史构建记录,其中,第一条历史构建记录包括第二版本号以及第一更新类型,第一更新类型用于表示第二版本号为手动更新的版本号;或者
第二记录模块,用于获取定期触发的第二插件更新信息,其中,第二插件更新信息用于表示完成对版本号为第二版本号的第一插件的构建;在第一历史构建文件中记录第二条历史构建记录,其中,第二条历史构建记录包括第二版本号以及第二更新类型,第二更新类型用于表示第二版本号为定期更新的版本号。
根据本发明实施例的又一个方面,还提供了一种用于实施上述插件的控制方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图12所示,该电子设备包括存储器1202和处理器1204,该存储器1202中存储有计算机程序,该处理器1204被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;
S2,根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;
S3,在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;
S4,根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件。
可选地,本领域普通技术人员可以理解,图12所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图12其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图12中所示更多或者更少的组件(如网络接口等),或者具有与图12所示不同的配置。
其中,存储器1202可用于存储软件程序以及模块,如本发明实施例中的插件的控制方法和装置对应的程序指令/模块,处理器1204通过运行存储在存储器1202内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的插件的控制方法。存储器1202可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1202可进一步包括相对于处理器1204远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1202具体可以但不限于用于第一文件、描述信息、第一目标版本号、插件的历史构建信息、插件等信息。作为一种示例,如图12所示,上述存储器1202中可以但不限于包括上述插件的控制装置中的第一获取单元1101、第一搜索单元1103、第一生成单元1105以及第一下载单元1107。此外,还可以包括但不限于上述插件的控制装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1206包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1206为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1208,用于显示上述第一目标版本号;和连接总线1210,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述插件的控制方面或者插件的控制方面的各种可选实现方式中提供的插件的控制方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取第一文件,其中,第一文件记录了所需要的目标插件集合中的每个插件的描述信息;
S2,根据每个插件的描述信息,在第一历史构建文件集合中搜索目标插件集合中的每个插件对应的第一目标版本号,其中,第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,一个插件的历史构建信息包括一个插件的已构建过的版本号;
S3,在搜索到目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,第二文件记录了目标插件集合中的每个插件的名称以及每个插件对应的第一目标版本号;
S4,根据第二文件,下载目标插件集合中版本号为第一目标版本号的每个插件。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种插件的控制方法,其特征在于,包括:
获取第一文件,其中,所述第一文件记录了所需要的目标插件集合中的每个插件的描述信息;
根据所述每个插件的描述信息,在第一历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第一目标版本号,其中,所述第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,所述一个插件的所述历史构建信息包括所述一个插件的已构建过的版本号;
在搜索到所述目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,所述第二文件记录了所述目标插件集合中的每个插件的名称以及所述每个插件对应的第一目标版本号;
根据所述第二文件,下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件;
在所述第一历史构建文件集合更新为第二历史构建文件集合的情况下,根据所述第一文件记录的所述每个插件的描述信息,在所述第二历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第二目标版本号,其中,所述第一历史构建文件集合中与所述目标插件集合相关的历史构建文件至少部分不同于所述第二历史构建文件集合中与所述目标插件集合相关的历史构建文件;
响应于回退指令,根据所述第二文件,重新下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件,以替换所述目标插件集合中版本号为所述第二目标版本号的所述每个插件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每个插件的描述信息,在第一历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第一目标版本号,包括:
对所述每个插件的描述信息执行以下步骤,得到所述每个插件对应的第一目标版本号,其中,在执行以下步骤时,所述每个插件的描述信息被设为当前插件的当前描述信息:
在所述当前描述信息包括版本锁定信息的情况下,在所述第一历史构建文件集合中的当前历史构建文件中搜索与所述版本锁定信息匹配的第一版本号,其中,所述当前插件对应的第一目标版本号为所述第一版本号,所述当前历史构建文件记录了所述当前插件的历史构建信息,所述当前插件的历史构建信息包括所述当前插件的已构建过的版本号,所述版本锁定信息用于表示所述当前插件的部分版本字段的取值。
3.根据权利要求2所述的方法,其特征在于,所述在所述第一历史构建文件集合中的当前历史构建文件中搜索与所述版本锁定信息匹配的第一版本号,包括:
在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,其中,所述第一版本号包括所述部分版本字段的取值。
4.根据权利要求3所述的方法,其特征在于,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,包括:
在忽略所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,其中,所述第一版本号包括所述部分版本字段的取值,所述第一版本号中的补丁版本字段的取值为目标值,所述目标值表示忽略补丁版本字段的取值;或者
在考虑所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,其中,所述第一版本号包括所述部分版本字段的取值,所述第一版本号中的补丁版本字段的取值为所述当前历史构建文件中的所述最新版本号中的补丁版本字段的取值。
5.根据权利要求4所述的方法,其特征在于,
在忽略所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,包括:在所述当前描述信息还包括第一选项字段、且所述第一选项字段的取值表示忽略所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在忽略所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号;
在考虑所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,包括:在所述当前描述信息还包括所述第一选项字段、且所述第一选项字段的取值表示考虑所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,则在考虑所述当前历史构建文件中的版本号中的补丁版本字段的取值的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号。
6.根据权利要求3或4所述的方法,其特征在于,所述在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号,包括:
在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到所述第一版本号;或者
在所述当前历史构建文件中包括所述部分版本字段的取值的版本号中搜索最新版本号,得到所述第一版本号;或者
在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到所述第一版本号。
7.根据权利要求6所述的方法,其特征在于,
在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到所述第一版本号,包括:在所述当前描述信息还包括第二选项字段、且所述第二选项字段的取值表示在所有的版本号中进行搜索的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值的所有版本号中搜索最新版本号,得到所述第一版本号;或者
在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到所述第一版本号,包括:在所述当前描述信息还包括所述第二选项字段、且所述第二选项字段的取值表示在更新类型为手动更新的版本号中进行搜索的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为手动更新的版本号中搜索最新版本号,得到所述第一版本号;或者
在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到所述第一版本号,包括:在所述当前描述信息还包括所述第二选项字段、且所述第二选项字段的取值表示在更新类型为定期更新的版本号中进行搜索的情况下,在所述当前历史构建文件中包括所述部分版本字段的取值、且更新类型为定期更新的版本号中搜索最新版本号,得到所述第一版本号。
8.根据权利要求1所述的方法,其特征在于,在所述根据所述第一文件记录的所述每个插件的描述信息,在所述第二历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第二目标版本号之后,还包括:
在搜索到所述目标插件集合中的每个插件对应的第二目标版本号的情况下,生成第三文件,其中,所述第三文件记录了所述目标插件集合中的每个插件的名称以及所述每个插件对应的第二目标版本号;
根据所述第三文件,下载所述目标插件集合中版本号为所述第二目标版本号的所述每个插件。
9.根据权利要求1所述的方法,其特征在于,在所述响应于回退指令之前,还包括:
在所述目标插件集合中版本号为所述第二目标版本号的所述每个插件中的部分或全部插件存在问题的情况下,获取所述回退指令。
10.根据权利要求1至5、8至9中任一项所述的方法,其特征在于,所述方法还包括:
在目标软件中对所述目标插件集合中版本号为所述第一目标版本号的所述每个插件进行运行配置,以使得在所述目标软件中允许使用所述目标插件集合中版本号为所述第一目标版本号的所述每个插件。
11.根据权利要求1至5、8至9中任一项所述的方法,其特征在于,所述方法还包括:
在完成对版本号为第二版本号的第一插件的构建的情况下,在所述第一历史构建文件集合中的第一历史构建文件中记录一条历史构建记录,其中,所述一条历史构建记录包括所述第二版本号,所述第一历史构建文件记录了所述第一插件的历史构建信息,所述第一插件的所述历史构建信息包括一条或多条历史构建记录,每条历史构建记录包括所述第一插件的已构建过的一个版本号。
12.根据权利要求11所述的方法,其特征在于,所述在所述第一历史构建文件集合中的第一历史构建文件中记录一条历史构建记录,包括:
获取手动触发的第一插件更新信息,其中,所述第一插件更新信息用于表示完成对版本号为所述第二版本号的所述第一插件的构建;在所述第一历史构建文件中记录第一条历史构建记录,其中,所述第一条历史构建记录包括所述第二版本号以及第一更新类型,所述第一更新类型用于表示所述第二版本号为手动更新的版本号;或者
获取定期触发的第二插件更新信息,其中,所述第二插件更新信息用于表示完成对版本号为所述第二版本号的所述第一插件的构建;在所述第一历史构建文件中记录第二条历史构建记录,其中,所述第二条历史构建记录包括所述第二版本号以及第二更新类型,所述第二更新类型用于表示所述第二版本号为定期更新的版本号。
13.一种插件的控制装置,其特征在于,包括:
第一获取单元,用于获取第一文件,其中,所述第一文件记录了所需要的目标插件集合中的每个插件的描述信息;
搜索单元,用于根据所述每个插件的描述信息,在第一历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第一目标版本号,其中,所述第一历史构建文件集合中的每个历史构建文件记录了一个插件的历史构建信息,所述一个插件的所述历史构建信息包括所述一个插件的已构建过的版本号;
生成单元,用于在搜索到所述目标插件集合中的每个插件对应的第一目标版本号的情况下,生成第二文件,其中,所述第二文件记录了所述目标插件集合中的每个插件的名称以及所述每个插件对应的第一目标版本号;
下载单元,用于根据所述第二文件,下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件;
所述装置还用于在所述第一历史构建文件集合更新为第二历史构建文件集合的情况下,根据所述第一文件记录的所述每个插件的描述信息,在所述第二历史构建文件集合中搜索所述目标插件集合中的每个插件对应的第二目标版本号,其中,所述第一历史构建文件集合中与所述目标插件集合相关的历史构建文件至少部分不同于所述第二历史构建文件集合中与所述目标插件集合相关的历史构建文件;响应于回退指令,根据所述第二文件,重新下载所述目标插件集合中版本号为所述第一目标版本号的所述每个插件,以替换所述目标插件集合中版本号为所述第二目标版本号的所述每个插件。
14.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至12任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110172119.7A CN112783515B (zh) | 2021-02-08 | 2021-02-08 | 插件的控制方法和装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110172119.7A CN112783515B (zh) | 2021-02-08 | 2021-02-08 | 插件的控制方法和装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783515A CN112783515A (zh) | 2021-05-11 |
CN112783515B true CN112783515B (zh) | 2023-08-25 |
Family
ID=75761277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110172119.7A Active CN112783515B (zh) | 2021-02-08 | 2021-02-08 | 插件的控制方法和装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783515B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056115B (zh) * | 2023-10-10 | 2024-03-15 | 腾讯科技(深圳)有限公司 | 应用程序的修复方法和装置、存储介质及电子设备 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
WO2001023998A1 (en) * | 1999-09-24 | 2001-04-05 | Phoenix Technologies Ltd. | Software development system for facilitating selection of components |
US6341291B1 (en) * | 1998-09-28 | 2002-01-22 | Bentley Systems, Inc. | System for collaborative engineering using component and file-oriented tools |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
CN103853585A (zh) * | 2014-02-19 | 2014-06-11 | 浪潮软件股份有限公司 | 一种通过云端集中管理版本的实现方法 |
CN104077131A (zh) * | 2014-06-13 | 2014-10-01 | 科大讯飞股份有限公司 | 一种组件部署系统及方法 |
CN104717301A (zh) * | 2015-03-27 | 2015-06-17 | 北京奇虎科技有限公司 | 插件下载方法及装置 |
US9229702B1 (en) * | 2013-08-28 | 2016-01-05 | Lithium Technologies, Inc. | Systems and methods for application plugin deployment for websites |
CN106708537A (zh) * | 2017-01-22 | 2017-05-24 | 百度在线网络技术(北京)有限公司 | 应用更新方法和装置 |
CN107608663A (zh) * | 2017-09-27 | 2018-01-19 | 北京蜂语网络科技有限公司 | 一种移动应用插件及移动应用的开发方法及装置 |
CN108196877A (zh) * | 2018-01-16 | 2018-06-22 | 北京三快在线科技有限公司 | 组件发布管理的方法和装置以及计算设备 |
CN108845812A (zh) * | 2018-05-31 | 2018-11-20 | 康键信息技术(深圳)有限公司 | 插件更新方法、装置、计算机设备和存储介质 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
CN110543324A (zh) * | 2019-08-27 | 2019-12-06 | 贝壳技术有限公司 | 一种应用程序的插件增量更新方法及装置 |
CN110990023A (zh) * | 2019-12-16 | 2020-04-10 | 上海钧正网络科技有限公司 | aar文件的依赖关系上传方法、装置、存储介质及电子设备 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
CN111324359A (zh) * | 2020-02-27 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 插件部署方法及装置 |
WO2020233058A1 (zh) * | 2019-05-20 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 代码下载的方法、装置、电子设备及计算机存储介质 |
CN112162795A (zh) * | 2020-10-09 | 2021-01-01 | 广州博冠信息科技有限公司 | 一种插件启动方法、装置、计算机设备和存储介质 |
CN112286586A (zh) * | 2019-07-12 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种插件的配置方法及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442717B2 (en) * | 2014-07-15 | 2016-09-13 | Vmware, Inc. | Techniques for automatically identifying input files used to generate output files in a software build process |
CN106569869B (zh) * | 2016-11-14 | 2019-04-19 | 平安科技(深圳)有限公司 | 插件化打包方法及装置 |
US10437586B2 (en) * | 2017-01-03 | 2019-10-08 | Infosys Limited | Method and system for dynamic impact analysis of changes to functional components of computer application |
US11635908B2 (en) * | 2017-06-22 | 2023-04-25 | Adobe Inc. | Managing digital assets stored as components and packaged files |
US10620935B2 (en) * | 2018-01-31 | 2020-04-14 | Salesforce.Com, Inc. | Version management automation and consistent application builds for different target systems |
-
2021
- 2021-02-08 CN CN202110172119.7A patent/CN112783515B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
US6341291B1 (en) * | 1998-09-28 | 2002-01-22 | Bentley Systems, Inc. | System for collaborative engineering using component and file-oriented tools |
WO2001023998A1 (en) * | 1999-09-24 | 2001-04-05 | Phoenix Technologies Ltd. | Software development system for facilitating selection of components |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
US9229702B1 (en) * | 2013-08-28 | 2016-01-05 | Lithium Technologies, Inc. | Systems and methods for application plugin deployment for websites |
CN103853585A (zh) * | 2014-02-19 | 2014-06-11 | 浪潮软件股份有限公司 | 一种通过云端集中管理版本的实现方法 |
CN104077131A (zh) * | 2014-06-13 | 2014-10-01 | 科大讯飞股份有限公司 | 一种组件部署系统及方法 |
CN104717301A (zh) * | 2015-03-27 | 2015-06-17 | 北京奇虎科技有限公司 | 插件下载方法及装置 |
CN106708537A (zh) * | 2017-01-22 | 2017-05-24 | 百度在线网络技术(北京)有限公司 | 应用更新方法和装置 |
CN107608663A (zh) * | 2017-09-27 | 2018-01-19 | 北京蜂语网络科技有限公司 | 一种移动应用插件及移动应用的开发方法及装置 |
CN108196877A (zh) * | 2018-01-16 | 2018-06-22 | 北京三快在线科技有限公司 | 组件发布管理的方法和装置以及计算设备 |
CN108845812A (zh) * | 2018-05-31 | 2018-11-20 | 康键信息技术(深圳)有限公司 | 插件更新方法、装置、计算机设备和存储介质 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
WO2020233058A1 (zh) * | 2019-05-20 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 代码下载的方法、装置、电子设备及计算机存储介质 |
CN112286586A (zh) * | 2019-07-12 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种插件的配置方法及相关设备 |
CN110543324A (zh) * | 2019-08-27 | 2019-12-06 | 贝壳技术有限公司 | 一种应用程序的插件增量更新方法及装置 |
CN110990023A (zh) * | 2019-12-16 | 2020-04-10 | 上海钧正网络科技有限公司 | aar文件的依赖关系上传方法、装置、存储介质及电子设备 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
CN111324359A (zh) * | 2020-02-27 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 插件部署方法及装置 |
CN112162795A (zh) * | 2020-10-09 | 2021-01-01 | 广州博冠信息科技有限公司 | 一种插件启动方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
陈宏君 ; 王国栋 ; .组件系统接口匹配识别方案和应用.计算机技术与发展.(02),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112783515A (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628661B (zh) | 云制造服务的自动建置方法、云制造系统 | |
US20200249939A1 (en) | Maintaining and updating software versions via hierarchy | |
US10970194B2 (en) | Systems and methods for initializing test environments | |
US20160350102A1 (en) | Multivariate metadata based cloud deployment monitoring for lifecycle operations | |
TW201737126A (zh) | 執行資料恢復操作的方法及裝置 | |
CN107704256B (zh) | 一种Ubuntu上实现Python依赖系统库自动化安装的方法 | |
US20160034258A1 (en) | System and Methods of Generating Build Dependencies Radiator | |
WO2013109554A1 (en) | Client-side minimal download and simulated page navigation features | |
US20080276253A1 (en) | Automated event correlation | |
KR102432807B1 (ko) | 마이크로서비스 구조 재구성 방법 및 장치 | |
US11418544B2 (en) | Solution management systems and methods for addressing cybersecurity vulnerabilities | |
CN110795139A (zh) | 客户端批量打包方法、装置、计算机设备和存储介质 | |
CN112783515B (zh) | 插件的控制方法和装置、存储介质 | |
CN115202669A (zh) | 一种基于配置文件的项目构建方法、系统及相关设备 | |
CN110704122A (zh) | 插件加载方法及装置 | |
CN109542942B (zh) | 函数调用的查询方法及装置、电子设备 | |
CN113918437A (zh) | 用户行为数据分析方法、装置、计算机设备和存储介质 | |
Manases et al. | Automation of Network Traffic Monitoring using Docker images of Snort3, Grafana and a custom API | |
US20230359457A1 (en) | Software development environment prebuild triggered by environment change commits | |
US20150347402A1 (en) | System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace | |
CN115291935A (zh) | 组件更新方法、组件更新装置、设备和存储介质 | |
US11403293B1 (en) | Database scanning tool for optimizing queries | |
JP2017091532A (ja) | 製品ライフサイクル管理(plm)システムからソースコード管理(scm)システムへの階層的なデータのエクスポート | |
Bierer | MongoDB 4 Quick Start Guide: Learn the skills you need to work with the world's most popular NoSQL database | |
Uphill et al. | Puppet Cookbook |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40043869 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |