一种变更提醒方法、装置、设备及存储介质与流程

文档序号:28595953发布日期:2022-01-22 10:22阅读:84来源:国知局
一种变更提醒方法、装置、设备及存储介质与流程

1.本技术涉及计算机技术领域,具体涉及一种变更提醒方法、装置、设备及存储介质。


背景技术:

2.企业在进行ios项目开发时会涉及对不同pod的开发及管理。相关技术中,企业内部通常利用cocoapods的私有仓库来进行pod的管理,在某个pod发生改时,会自动通知该pod的相关人员。
3.然而,当某个pod发生变更时,依赖该pod的相关pod也会受到影响,由于对pod之间的依赖无法及时管理和更新,导致在自动通知该pod相关人员的同时无法自动通知所有依赖该pod的相关pod的相关人员,从而影响了相关pod的正常运行,因此,需要提供更加有效的技术方案。


技术实现要素:

4.本技术提供了一种变更提醒方法、装置、设备及存储介质,可以提升对变更组件的反向依赖组件的分析效率,快速及时地更新组件之间的依赖关系,从而提升变更提醒的针对性和有效性,本技术技术方案如下:
5.一方面,提供了一种变更提醒方法,所述方法包括:
6.基于持续集成工具对私有仓库进行变更监控;
7.当监控到所述私有仓库发生变更时,基于变更分析脚本对所述私有仓库进行变更分析,得到所述私有仓库中的变更组件和所述变更组件的变更信息;
8.基于依赖分析脚本对所述变更组件进行依赖分析,确定依赖所述变更组件的目标组件;
9.向所述目标组件的关联设备推送所述变更信息。
10.另一方面,提供了一种变更提醒装置,所述装置包括:
11.变更监控模块,用于基于持续集成工具对私有仓库进行变更监控;
12.变更分析模块,用于当监控到所述私有仓库发生变更时,基于变更分析脚本对所述私有仓库进行变更分析,得到所述私有仓库中的变更组件和所述变更组件的变更信息;
13.依赖分析模块,用于基于依赖分析脚本对所述变更组件进行依赖分析,确定依赖所述变更组件的目标组件;
14.信息推送模块,用于向所述目标组件的关联设备推送所述变更信息。
15.另一方面,提供了一种变更提醒设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的变更提醒方法。
16.另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如
上述的变更提醒方法。
17.本技术提供的变更提醒方法、装置、设备及存储介质,具有如下技术效果:
18.利用本技术提供的技术方案,可以基于持续集成工具对私有仓库进行变更监控;当监控到所述私有仓库发生变更时,能够基于变更分析脚本对所述私有仓库进行变更分析,得到所述私有仓库中的变更组件和所述变更组件的变更信息;并基于依赖分析脚本对所述变更组件进行依赖分析,确定依赖所述变更组件的目标组件,一方面,能够提升对变更组件的反向依赖组件的分析效率,从而对组件之间的依赖关系进行快速及时地更新;另一方面,向所述目标组件的关联设备推送所述变更信息,能够提升变更提醒的针对性和有效性,以便于提醒组件管理人员对组件进行及时地维护更新。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
20.图1是本技术实施例提供的一种变更提醒方法的流程示意图;
21.图2是本技术实施例提供的一种基于变更分析脚本对上述私有仓库进行变更分析,得到上述私有仓库中的变更组件和上述变更组件的变更信息的流程示意图;
22.图3是本技术实施例提供的另一种基于变更分析脚本对上述私有仓库进行变更分析,得到上述私有仓库中的变更组件和上述变更组件的变更信息的流程示意图;
23.图4是本技术实施例提供的一种基于依赖分析脚本对上述变更组件进行依赖分析,确定依赖上述变更组件的目标组件的流程示意图;
24.图5是本技术实施例提供的另一种基于依赖分析脚本对上述变更组件进行依赖分析,确定依赖上述变更组件的目标组件的流程示意图;
25.图6是本技术实施例提供的一种组件依赖关系的示意图;
26.图7是本技术实施例提供的一种变更提醒装置示意图;
27.图8是本技术实施例提供的一种变更提醒方法的服务器的硬件结构框图。
具体实施方式
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
30.首先对本技术实施例中涉及的相关名词做以下解释:
31.持续集成(continuous integration,ci):根据预设条件,可以自动触发相应流程;
32.git:开源的分布式版本控制工具,可以有效高速地处理任何或小或大的项目;
33.gitlab:用于仓库管理平台的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务;
34.commit id:代码管理过程中,每次提交都成为一次commit,每个commit都拥有一个唯一且不重复的id,用来标识此次提交;
35.cocoapods:基于ruby开发的开源ios依赖包管理工具;
36.pod:cocoapods中将每个依赖包称为pod,pod可以理解为组件,应用程序(app)通常由多个pod组成;
37.podspec文件:pod的描述文件,包括pod源码文件的地址、应用编译设置以及其他元数据(如pod的名称、版本和描述)的详细信息等;
38.私有代码仓库(code repository):用来托管pod的源码文件的企业内部的git仓库;
39.私有配置仓库(spec repository):用来托管pod的podspec文件的企业内部的git仓库。
40.以下介绍本技术实施例提供的一种变更提醒方法,图1为本技术实施例提供的一种变更提醒方法的流程示意图。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图1所示,上述方法可以包括:
41.s101,基于持续集成工具对私有仓库进行变更监控。
42.在本说明书实施例中,持续集成工具可以为仓库管理平台的ci,在实际应用中,ci通常用来进行提交的变更代码的日常编译和自动化测试,来及时验证提交的变更代码,发现其中的问题,可选的实施例中,仓库管理平台可以为gitlab。
43.在本说明书实施例中,私有仓库可以为cocoapods的私有配置仓库,私有配置仓库可以用于存放所有pod组件的podspec文件。在实际应用中,当组件的代码出现变更时,首先需要更新cocoapods的私有代码仓库中的podspec文件的版本,然后将更新后的podspec文件提交到私有配置仓库。在代码管理过程中,每次提交commit都会生成一个唯一且不重复的id用来标识此次提交,该id即commit id变更提交标识,因此,ci可以通过监控代码管理工具git是否生成新的变更提交标识来判断私有仓库是否出现变更。
44.s103,当监控到上述私有仓库发生变更时,基于变更分析脚本对上述私有仓库进行变更分析,得到上述私有仓库中的变更组件和上述变更组件的变更信息。
45.在实际应用中,当监控到私有仓库发生变更即监控到代码管理工具生成新的变更提交标识时,自动触发变更分析脚本对私有仓库进行变更分析。
46.在一些实施例中,如图2所示,上述基于变更分析脚本对上述私有仓库进行变更分
析,得到上述私有仓库中的变更组件和上述变更组件的变更信息可以包括:
47.s201,查询本地保存中的目标变更提交标识。
48.具体的,目标变更提交标识可以为上一次监控到私有仓库发生变更时该次变更对应的变更提交标识,在执行脚本对该次变更进行变更分析和依赖分析之后将对应的变更提交标识保存到本地。
49.s203,当在上述本地保存中查询到上述目标变更提交标识时,在上述私有仓库中查询在上述目标变更提交标识对应的变更提交操作之后生成的变更文件。
50.具体的,可以通过文件筛选命令“git log
‑‑
name-only“comm id
””
来筛选出在目标变更提交标识之后生成的变更文件。
51.s205,基于上述变更文件,确定上述变更组件和上述变更组件的变更信息。
52.具体的,变更文件可以包括变更的podspec文件等,变更的podspec文件为对应变更组件即变更pod的描述文件,变更的podspec文件可以包括但不限于:变更组件的源码文件的地址、应用编译设置以及其他元数据(如变更组件的名称、版本和描述)的详细信息等,相应的,变更组件的变更信息可以包括但不限于:源码文件的变更信息、应用编译设置的变更信息、其他元数据的变更信息等。
53.在另一些实施例中,如图3所示,在上述查询本地保存中的目标变更提交标识之后,上述方法还可以包括:
54.s207,当在上述本地保存中未查询到上述目标变更提交标识时,遍历上述私有仓库中的组件。
55.具体的,当在上述本地保存中未查询到上述目标变更提交标识,即表明为第一次执行变更分析脚本和依赖分析脚本,此前未对私有仓库中的变更进行过变更分析和依赖分析,因此,需要对私有仓库中的每个组件进行变更分析,得到每个组件对应的最新podspec文件,从而进行组件之间依赖关系的初次管理。
56.s209,基于当前遍历到的组件的最新版本标识,得到上述最新版本标识对应的版本描述文件。
57.在实际应用中,私有仓库中当前遍历到的组件的最新版本标识可以为当前遍历到的组件的最大的podspec文件标签,将最大的podspec文件标签对应的podspec文件作为最新版本标识对应的版本描述文件。
58.s211,将上述当前遍历到的组件作为上述变更组件。
59.s213,基于上述最新版本标识对应的版本描述文件,生成上述变更组件的变更信息。
60.具体的,最新版本标识对应的版本描述文件即最大的podspec文件标签对应的podspec文件可以包括但不限于:当前遍历到的组件的源码文件的地址、应用编译设置以及其他元数据(如当前遍历到的组件的名称、版本和描述)的详细信息等,相应的,变更组件的变更信息可以包括但不限于:源码地址的变更信息、应用编译设置的变更信息、其他元数据的变更信息等。
61.由以上实施例可见,能够基于变更分析脚本得到变更组件,一方面,当在本地保存中查询到目标变更提交标识时,通过文件筛选命令确定变更组件的变更信息;另一方面,当在本地保存中未查询到目标变更提交标识时,将私有仓库中的每个组件都作为变更组件,
从而进行组件之间依赖关系的初次管理,并根据每个组件的最新版本标识对应的版本描述文件,生成对应的变更信息,通过两种变更分析方法,能够有效提升对私有仓库中的组件进行变更分析的准确性和效率。
62.s105,基于依赖分析脚本对上述变更组件进行依赖分析,确定依赖上述变更组件的目标组件。
63.在一些实施例中,如图4所示,上述基于依赖分析脚本对上述变更组件进行依赖分析,确定依赖上述变更组件的目标组件可以包括:
64.s401,将上述变更组件作为目标对象。
65.s403,从上述目标对象的最新版本标识对应的版本描述文件中得到上述目标对象的依赖列表。
66.s405,根据上述目标对象的依赖列表,确定上述目标对象的反向依赖组件。
67.s407,将上述反向依赖组件加入上述目标组件。
68.具体的,从目标对象的最大的podspec文件标签对应的podspec文件中得到目标对象的dependency即依赖列表,将依赖列表中的反向依赖组件加入目标组件,其中,依赖列表中依赖目标对象的组件即为目标对象的反向依赖组件。
69.在另一些实施例中,如图5所示,在上述将上述反向依赖组件加入上述目标组件之后,上述方法还可以包括:
70.s409,基于上述目标对象的反向依赖组件,更新上述目标对象。
71.s411,基于更新后的目标对象,重复执行上述从上述目标对象的最新版本标识对应的版本描述文件中得到上述目标对象的依赖列表至上述将上述反向依赖组件加入上述目标组件的递归过程,直至当前目标对象不存在对应的依赖列表。
72.以图6为例,图6是本技术实施例提供的一种组件依赖关系的示意图,如图6所示,pod a依赖pod b,pod b依赖pod c,即pod b为pod c的反向依赖组件,pod a为pod b的反向依赖组件,当pod c发生变更时,pod b和pod a均会受到影响,需要将pod c的变更信息通知pod b和pod a。
73.在实际应用中,当目标对象的反向依赖组件自身也存在对应的反向依赖组件时,目标对象的变更也会影响反向依赖组件自身对应的反向依赖组件,因此,可以执行上述递归过程,将会受到变更组件影响的所有组件作为目标组件。
74.由以上实施例可见,基于依赖分析脚本确定变更组件的所有反向依赖组件,能够提升依赖分析的准确性,从而提升变更提醒的针对性和有效性。
75.s107,向上述目标组件的关联设备推送上述变更信息。
76.具体的,关联设备可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序(app)、网页、微信小程序等。通过向目标组件的关联设备推送变更信息,能够提醒组件管理人员对组件进行及时地维护更新,提升变更提醒的针对性和有效性。
77.在本说明书实施例中,在上述向上述目标组件的关联设备推送上述变更信息之前,上述方法还可以包括:
78.将上述变更组件的变更信息同步到上述私有仓库的仓库管理平台;
79.基于上述仓库管理平台,确定上述目标组件的关联设备;
80.相应的,执行上述向上述目标组件的关联设备推送上述变更信息的步骤。
81.具体的,上述仓库管理平台可以为基于git的代码托管平台,可选的实施例中,仓库管理平台可以为gitlab。
82.在本说明书实施例中,在上述向上述目标组件的关联设备推送上述变更信息之后,上述方法还可以包括:
83.获取上述私有仓库的最新变更提交标识;
84.基于上述最新变更提交标识,更新上述目标变更提交标识。
85.由以上实施例可见,基于最新变更提交标识更新目标变更提交标识,以便于下一次监控到私有仓库发生变更时,能够基于更新后的目标变更提交标识进行变更分析,确定在更新后的目标变更提交标识对应的变更提交操作之后发生变更的变更组件,提升变更分析的准确性和效率,从而提升变更提醒的针对性和有效性。
86.由以上本技术书实施例可见,利用本技术实施例提供的技术方案,可以基于持续集成工具对私有仓库进行变更监控,一方面,当监控到私有仓库发生变更时,能够基于变更分析脚本对私有仓库进行变更分析,通过两种变更分析方法,能够有效提升对私有仓库中的组件进行变更分析的准确性和效率;另一方面,基于依赖分析脚本对变更组件进行依赖分析,确定依赖变更组件的目标组件,能够提升依赖分析的准确性,从而对组件之间的依赖关系进行快速及时地更新;另一方面,向目标组件的关联设备推送变更信息,能够提升变更提醒的针对性和有效性,以便于提醒组件管理人员对组件进行及时地维护更新。
87.本技术实施例提供了一种变更提醒装置,如图7所示,上述装置包括:
88.变更监控模块710,用于基于持续集成工具对私有仓库进行变更监控;
89.变更分析模块720,用于当监控到上述私有仓库发生变更时,基于变更分析脚本对上述私有仓库进行变更分析,得到上述私有仓库中的变更组件和上述变更组件的变更信息;
90.依赖分析模块730,用于基于依赖分析脚本对上述变更组件进行依赖分析,确定依赖上述变更组件的目标组件;
91.信息推送模块740,用于向上述目标组件的关联设备推送上述变更信息。
92.在一些实施例中,上述变更分析模块720可以包括:
93.标识查询单元,用于查询本地保存中的目标变更提交标识;
94.变更文件查询单元,用于当在上述本地保存中查询到上述目标变更提交标识时,在上述私有仓库中查询在上述目标变更提交标识对应的变更提交操作之后生成的变更文件;
95.第一变更组件确定单元,用于基于上述变更文件,确定上述变更组件和上述变更组件的变更信息。
96.在另一些实施例中,上述变更分析模块720还可以包括:
97.组件遍历单元,用于当在上述本地保存中未查询到上述目标变更提交标识时,遍历上述私有仓库中的组件;
98.版本描述文件单元,用于基于当前遍历到的组件的最新版本标识,得到上述最新版本标识对应的版本描述文件;
99.第二变更组件确定单元,用于将上述当前遍历到的组件作为上述变更组件;
100.变更信息生成单元,用于基于上述最新版本标识对应的版本描述文件,生成上述变更组件的变更信息。
101.在一些实施例中,依赖分析模块730可以包括:
102.目标对象单元,用于将上述变更组件作为目标对象;
103.依赖列表单元,用于从上述目标对象的最新版本标识对应的版本描述文件中得到上述目标对象的依赖列表;
104.反向依赖组件确定单元,用于根据上述目标对象的依赖列表,确定上述目标对象的反向依赖组件;
105.目标组件单元,用于将上述反向依赖组件加入上述目标组件。
106.在另一些实施例中,依赖分析模块730还可以包括:
107.目标对象更新单元,用于基于上述目标对象的反向依赖组件,更新上述目标对象;
108.递归单元,用于基于更新后的目标对象,重复执行上述从上述目标对象的最新版本标识对应的版本描述文件中得到上述目标对象的依赖列表至上述将上述反向依赖组件加入上述目标组件的递归过程,直至当前目标对象不存在对应的依赖列表。
109.在本说明书实施例中,上述装置还可以包括:
110.变更信息同步模块,用于将上述变更组件的变更信息同步到上述私有仓库的仓库管理平台;
111.关联设备确定模块,用于基于上述仓库管理平台,确定上述目标组件的关联设备。
112.在本说明书实施例中,上述装置还可以包括:
113.最新变更提交标识获取模块,用于获取上述私有仓库的最新变更提交标识;
114.目标变更提交标识更新模块,用于基于上述最新变更提交标识,更新上述目标变更提交标识。
115.本技术实施例提供了一种变更提醒设备,该变更提醒设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的变更提醒方法。
116.存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据上述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
117.本技术实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行,即上述计算机设备可以包括移动终端、计算机终端、服务器或者类似的运算装置。以运行在服务器上为例,图8是本技术实施例提供的一种变更提醒方法的服务器的硬件结构框图。如图8所示,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)810(处理器810可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器830,一个或一个以上存储应用程序823或数据822的存储介质820(例如一个或一个以上海量存储设备)。其中,存储器830和存储介质820可以是短暂存储或持久存储。存储在存储介
质820的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器810可以设置为与存储介质820通信,在服务器800上执行存储介质820中的一系列指令操作。服务器800还可以包括一个或一个以上电源860,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口840,和/或,一个或一个以上操作系统821,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
118.输入输出接口840可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器800的通信供应商提供的无线网络。在一个实例中,输入输出接口840包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口840可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
119.本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器800还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。
120.本技术实施例还提供了一种存储介质,上述存储介质可设置于服务器之中以保存用于实现方法实施例中一种的变更提醒方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的变更提醒方法。
121.可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
122.由上述本技术提供的变更提醒方法、装置、设备或存储介质的实施例可见,利用本技术实施例提供的技术方案,可以基于持续集成工具对私有仓库进行变更监控,一方面,当监控到私有仓库发生变更时,能够基于变更分析脚本对私有仓库进行变更分析,通过两种变更分析方法,能够有效提升对私有仓库中的组件进行变更分析的准确性和效率;另一方面,基于依赖分析脚本对变更组件进行依赖分析,确定依赖变更组件的目标组件,能够提升依赖分析的准确性,从而对组件之间的依赖关系进行快速及时地更新;另一方面,向目标组件的关联设备推送变更信息,能够提升变更提醒的针对性和有效性,以便于提醒组件管理人员对组件进行及时地维护更新。
123.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
124.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
125.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
126.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1