CN114385160A - 一种分布式动态组件推送方法、装置、电子设备及介质 - Google Patents
一种分布式动态组件推送方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN114385160A CN114385160A CN202210040656.0A CN202210040656A CN114385160A CN 114385160 A CN114385160 A CN 114385160A CN 202210040656 A CN202210040656 A CN 202210040656A CN 114385160 A CN114385160 A CN 114385160A
- Authority
- CN
- China
- Prior art keywords
- component
- dynamic library
- pushed
- pushing
- dynamic
- 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/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种分布式动态组件推送方法、装置、电子设备及计算机可读存储介质。本发明所述的分布式动态组件推送方法,包括:获取待推送组件,将所述待推送组件推送至远端代码仓库;将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。本发明提供了一种分布式动态组件推送方法通过上述技术方案实现了分布式动态组件推送,可以实现多业务组独立开发,各业务组可以独立维护自己的组件,提高了应用开发的效率。
Description
技术领域
本发明涉及组件推送技术领域,尤其涉及一种分布式动态组件推送方法、装置、电子设备及计算机可读存储介质。
背景技术
现有大多数的应用都是以项目的方式开发;而现有项目开发方式的效率较低,主要体现在以下几个方面,当项目被合作研发组要求引入时,由于耦合过重的原因,无法提供给合作研发组;由于两个研发组之间持续反馈,中间会有非常多临时包的产生,很多时候使用哪个临时包是靠人的意识主观判断,容易产生混淆的现象,也不利于后期的回滚;对于业务较多、且模板划分细致的研发组,模板库每次变化一点,重装可能要半小时或者更久,严重影响研发效率。在一个研发组中,往往会安排固定的人去打包,一旦这个人因为特殊因素不在场,导致延期或者出错的概率激增。此外,现有项目开发方式还存在安全性较差的问题,主要表现为,很多公司会将一个项目中的所有源代码都放到一个仓库中,仓库中的源代码对所有人可见,没有对源代码做保护,使得源代码的泄露风险非常大。
发明内容
本发明的目的在于一种分布式动态组件推送方法、装置、电子设备及计算机可读存储介质,以解决现有技术中应用开发效率较低的技术问题。
本发明的技术方案如下,提供一种分布式动态组件推送方法,包括:
获取待推送组件,将所述待推送组件推送至远端代码仓库;
将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;
将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。
可选地,所述获取待推送组件,包括:
根据目标需求的功能确定对应的版本分支,在所述版本分支上更新所述目标需求的源代码;
对所述版本分支上的所有源代码进行合并,得到合并后的源代码,将所述合并后的源代码作为所述待推送组件。
可选地,所述获取待推送组件之后,还包括:
获取所述待推送组件的组件描述文件,更新所述组件描述文件的版本字段及版本标记号,所述版本字段与所述版本标记号对应;
更新当前工程的依赖组件,更新所述当前工程版本,在更新后的依赖组件的主工程上安装依赖库。
可选地,所述在更新后的依赖组件的主工程上安装依赖库之后,还包括:为所述待推送组件设置组件标记号,根据所述待推送组件对应的索引设置索引标记号;
所述将所述待推送组件推送至远端代码仓库,具体包括:
确定推送所述待推送组件时需要的故事卡片唯一标志符,对所述故事卡片唯一标志符进行校验;
若校验通过,则将所述待推送组件及所述组件标记号、所述索引及所述索引标记号分别推送至远端代码仓库和远端索引仓库。
可选地,在所述动态库工程中创建动态库,具体包括:
设置动态库构建参数,所述构建参数包括链接地址、链接工程以及需要链接的组件标记号;
根据所述链接地址、链接工程以及需要链接的组件标记号获取需要链接的待推送组件;
在所述动态库工程中,为获取的所述待推送组件创建动态库。
可选地,所述构建参数还包括需要清理的工程名称及所述工程中需要清理的内容,所述动态库的框架及环境;所述为获取的所述待推送组件创建动态库之前,还包括,
根据所述需要清理的工程名称及所述工程中需要清理的内容,清理运行的缓存;
所述为获取的所述待推送组件创建动态库,包括:
在所述框架及所述环境下,为所述需要链接的待推送组件创建动态库。
可选地,所述按照指定路径对所述存储空间中的动态库进行推送之前,还包括:
对动态库推送条件进行监听,当监听到所述动态库推送条件时,则将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送;其中,所述动态库推送条件包括当前时间为预设推送时间或所述动态工程库中创建了新的动态库。
本发明的另一技术方案如下,一种分布式动态组件推送装置,包括组件推送模块、动态库创建模块及动态库推送模块;
所述组件推送模块,用于获取待推送组件,将所述待推送组件推送至远端代码仓库;
所述动态库创建模块,用于将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;
所述动态库推送模块,用于将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。
本发明的另一技术方案如下,一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一项技术方案所述的分布式动态组件推送方法。
本发明的另一技术方案如下,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项技术方案所述的分布式动态组件推送方法。
本发明的有益效果在于:本发明技术方案提供的分布式动态组件推送方法,获取待推送组件,将待推送组件推送至远端代码仓库;将远端代码仓库中的待推送组件复制到动态库工程中,在动态库工程中为待推送组件创建动态库,将动态库移动并存储到对应的存储空间,移动并剔除存储空间中原有的动态库,按照指定路径对存储空间中的动态库进行推送;通过上述技术方案实现了分布式动态组件推送,可以实现多业务组独立开发,各业务组可以独立维护自己的组件,提高了应用开发的效率。
附图说明
图1为本发明第一实施例提供的分布式动态组件推送方法的流程示意图;
图2为本发明第二实施例提供的分布式动态组件推送装置的结构示意图;
图3为本发明第三实施例提供的电子设备的结构示意图;
图4为本发明第四实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1是本发明第一实施例的分布式动态组件推送方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该分布式动态组件推送方法主要包括以下步骤S101~S103:
S101,获取待推送组件,将所述待推送组件推送至远端代码仓库;
其中,该步骤S101中的待推送组件的具体表现形式为源代码。组件是应用的最基本的单元,实际企业应用中,很少有通过一个的组件即可满足需求的简单业务,而是通过将多个组件组装在一起,形成复合组件,或者将复合组件和单一组件继续组合,通过不断组装、重用己有组件,形成更大粒度的组件,满足更高层面、更复杂的业务需求。一个组件通常描述了该类型的组件所能提供的功能,描述了该类型的组件相关功能的依赖性,定义了配置参数,控制程序逻辑如何实现,描述了组件行为策略。
在一个可选的实施方式中,所述获取待推送组件,包括:
根据目标需求的功能确定对应的版本分支,在所述版本分支上更新所述目标需求的源代码;
对所述版本分支上的所有源代码进行合并,得到合并后的源代码,将所述合并后的源代码作为所述待推送组件。
需要说明的是,将待推送组件上传至对应的版本分支,然后将其推送至远端仓库或者其他业务组的模式为路由模式,路由模式是一种可以由多业务组独立开发,并维护自己所在业务组的组件的模式;该路由模式,能灵活提供给其他业务组接入。提供方定义数据接口,业务组通过这些接口将数据传递给提供方,在不破坏内部实现的情况下,极大提高了可扩展性。
其中,版本分支是按照发版时间定义的,发版时间的时间间隔可以为一个月,也可以为其他的一段时间,版本分支包括该段时间内的所有代码,只有在版本分支上才可以更新标记号,一般都是固定的版本分支上进行打包。只有确定了目标需求的功能对应的版本分支,才会将目标需求的源代码(待更新源代码)上传至该版本分支,并在所述版本分支上合并待更新源代码。
需要说明的是,在所述版本分支上更新所述目标需求的源代码,由于不同业务组更新的源代码会不同,不同业务组更新的源代码之间,可能会产生冲突,在解决代码冲突之后,对所述版本分支上的所有源代码进行合并,将所述合并后的源代码作为所述待推送组件。
在一个可选的实施方式中,所述获取待推送组件之后,还包括:
获取所述待推送组件的组件描述文件,更新所述组件描述文件的版本字段及版本标记号,所述版本字段与所述版本标记号对应;
更新当前工程的依赖组件,更新所述当前工程版本,在更新后的依赖组件的主工程上安装依赖库。
需要说明的是,组件描述文件(podspec)是用于描述一个库的源代码和资源将如何被打包编译成链接库或动态库的文件,而组件描述文件中的这些描述内容最终将映会映射到一个类中。每个组件会提前设置一个对应的起始标记号,若需要更新标记号,则需要获取组件描述文件、更新组件描述文件。更新组件描述文件具体为更新组件描述文件的版本字段及标记号。更新组件描述文件版本字段及标记号时,需要使版本字段与标记号保持一致。
在一个应用中包括多个工程,每个工程中又可以包括多个组件,当前工程可能依赖于其他组件,因此需要更新当前工程的依赖组件(对于不同的业务组来说,不同工程之间都可能存在互相依赖的库)。使当前工程的依赖组件更新为最新,更新当前工程版本。更新当前工程版本后,使业务交互工程(依赖组件的主工程、数组工程)安装依赖的库。
在一个可选的实施方式中,所述在更新后的依赖组件的主工程上安装依赖库之后,还包括:为所述待推送组件设置组件标记号,根据所述待推送组件对应的索引设置索引标记号;
所述将所述待推送组件推送至远端代码仓库,具体包括:
确定推送所述待推送组件时需要的故事卡片唯一标志符,对所述故事卡片唯一标志符进行校验;
若校验通过,则将所述待推送组件及所述组件标记号、所述索引及所述索引标记号分别推送至远端代码仓库和远端索引仓库。
其中,给待推送组件(即当前组件)设置标记号(tag),同时给当前索引设置标记号,所述索引为当前组件的索引。待推送组件的标记号和索引的标记号分别存储于不同位置,其他业务组可以直接访问索引的标记号,而不能直接访问组件的标记号,以确保待推送组件的安全性。故事卡片唯一标志符为神兵工作平台的故事卡片唯一标志符,若无该故事唯一标识符或者故事唯一标识符校验失败,则不进行组件推送。当组件推送(发布)后,当其他业务组可以根据所述最新索引的标记号,确定当前组件。需要说明的是,更新目标需求的源代码,对源代码进行合并均是在本地的版本分支上进行操作的,更新和合并的操作完成后,则将所述待推送组件及所述组件标记号、所述索引及所述索引标记号分别推送至远端代码仓库和远端索引仓库。
其中,将组件及其标记号、索引及其标记号分别推送至远端代码仓库和远端索引仓库,为了保证源代码的安全性,防止其他业务组直接获取当前组件,防止当前组件被意外修改,同时,由于当前代码涉及的内容比较多,为了保证其他业务的获取组件的效率,所以其他的业务组可以通过远端索引仓库获取索引及其标记号,根据获取的标记号确定是否有标记号变更,若有标记号的变更,则根据所述标记号的下载对应组件。整个推送过程中的组件(源代码)按业务组(business develop group)分别部署在不同的代码仓库中,不同业务组之间是不能互相访问代码,提高代码的安全性,方便后期对问题的排查以及代码的回滚。
S102,将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;
需要说明的是,对于较小业务组,大多是通过源代码的格式提业务库(动态库)能力,对于有多个业务组,大多采取预编译,将编译好的动态库提供给业务方。在待调用脚本中设置动态库构建参数,调用脚本,根据所述动态库构建参数在所述动态库工程中创建所述动态库。动态库即为动态链接库,动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个动态链接库文件中,该动态链接库包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。动态链接库还有助于共享数据和资源。多个应用程序可同时访问内存中单个动态链接库副本的内容。使用动态链接库可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。
在一个可选的实施方式中,在所述动态库工程中创建动态库,具体包括:
设置动态库构建参数,所述构建参数包括链接地址、链接工程以及需要链接的组件标记号;
根据所述链接地址、链接工程以及需要链接的组件标记号获取需要链接的待推送组件;
在所述动态库工程中,为所述需要链接的待推送组件创建动态库。
需要说明的是,为了获取需要链接的待推送组件,需要确定链接地址,即链接工程所在地址,又由于链接的工程中可能会存在多个组件,因此需要确定组件标记号。通过链接地址、链接工程以及需要链接的组件标记号可以获取需要链接的待推送组件。
其中,构建动态库的工具一般由ios脚本提供,构建动态库时,调用ios脚本(shell脚本),通过不同的环境(测试或是生产环境)去设置不同的参数,若环境选择错误或者参数选择错误,则会编译失败。需要说明是,编译的时间较长,若出错,则时间成本较高。因此,设置的环境和参数需要准确。在执行ios脚本时,不需要从外部传递参数,但是脚本内部的特定参数,是需要在脚本中设置。需要设置的特定参数包括需要清理的工程名称及该工程的内容、需要链接的组件标记号、链接地址、链接工程名称、动态库的框架及环境。
在一个可选的实施方式中,所述构建参数还包括需要清理的工程名称及所述工程中需要清理的内容,所述动态库的框架及环境;所述为获取的所述待推送组件创建动态库之前,还包括,
根据所述需要清理的工程名称及所述工程中需要清理的内容,清理运行的缓存;
所述为获取的所述待推送组件创建动态库,包括:
在所述框架及所述环境下,为获取的所述待推送组件创建动态库。
其中,所述需要清理的工程名称及所述工程中需要清理的内容即为上一次运行的缓存,运行的缓存清理后链接待推送组件,将待推送组件的源代码复制到一个动态库工程中,准备下一步构建动态库;创建动态库时,在Release(发布)环境下,待推送组件的源代码的会被复制到一个动态库中,最终提供给业务方调用。
S103,将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。
其中,动态库对应的存储空间为指定的本地路径下的存储空间(仓库),该指定的本地路径与上述指定路径不同。动态库存储在该存储空间中,在需要使用的时候,则需要按照指定路径对所述存储空间中的动态库进行推送。为了防止在将所述动态库移动并存储到对应的存储空间时,将原有的动态库完全覆盖,需要移动并剔除所述存储空间中原有的动态库,以确保推送的动态库为最新的动态库。推送操作的目的在于将本地路径下的存储空间的动态库同步至远端(服务端)。
需要说明的是,在构建及推送动态库时,组件也可以称之为动态库;在开发阶段,会有大量缺陷(bug)需要返工修改,需要频繁的打包和发布(推送),这时会存一个debug(测试)的参数,等到组件功能稳定后,将组件合并至生产分支,形成一个生产包进行生产验证;为了避免将测试组件推送到生产分支上去,需要进行分支的环境校验,根据Debug(测试)/Release(生产)参数来校验当前分支是否准确,保证测试代码推送至测试分支,生产代码推送至生产分支;若当前分支准确,即分支的环境校验完成,则会先拉取远端代码(动态库);拉取远端代码为git仓库管理的一个特性,是为了防止推送的动态库覆盖之前推送的其他动态库;拉取远端代码后,将构建的动态库存放到其他业务指定的路径。
为避免动态库与之前的动态库一致,需要进行动态校验,以剔除、移动旧的缓存动态库,再把最新的动态移动至指定本地仓库;由于上一个过程中构建的动态库会存在缓存中,所以先找到动态库并将其从缓存中移动到指定的仓库中;将最新动态库进行推送,对变更的代码打上新的标记,然后就是将新的代码和新的标记推送至远端仓库。便完成了整个组件包的打包推送过程。
需要说明的是,远端仓库是指托管在因特网或其他网络中的项目的版本库。一个应用可以有好几个远端仓库,通常有些仓库只读,有些则可以读写。与其他业务组协作涉及管理远端仓库以及根据需要推送或拉取数据。管理远端仓库包括了解如何添加远端仓库、移除无效的远端仓库、管理不同的远端仓库分支并定义它们是否被跟踪等。
其中,将所述动态库移动到存放到指定的路径(存储空间),移动并剔除该路径上(存储空间)原先的动态库,按照指定的路径对所述动态库进行推送的步骤可以是用shell脚本实现的,该脚本中涉及的参数包括神兵工作平台的故事卡片唯一标志符story_id、本地仓库路径及动态库环境。在推送动态库时,同样需要故事卡片唯一标志符,对所述故事卡片唯一标志符进行校验,若校验通过,才执行动态库的推送过程。在多业务组合作中,往往会将某类三方库放在一个指定的远端仓库,提供方往这个仓库中推送动态库,使用方从这个仓库中拉取动态库;因此还需要提供本地仓库的路径,用来存放最新的动态库。
在一个可选的实施方式中,所述按照指定路径对所述存储空间中的动态库进行推送之前,还包括:
对动态库推送条件进行监听,当监听到所述动态库推送条件时,则将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送;其中,所述动态库推送条件包括当前时间为预设推送时间或所述动态工程库中创建了新的动态库。
对于预设推送时间,例如,若预设推送时间为2021年10月15日10:00,当当前时间为2021年10月15日10:00时,则监听到此动态库推送条件,此时,将所述动态库并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定的路径对所述动态库进行推送。
其中,如果动态库的宿主方有集成Jenkins(一种持续集成工具)之类的平台,可以设置定时任务,每天几点进行打包,打包过程即推送动态库的全过程,打完包之后,测试、开发成员只用去取安装包即可,整个打包过程完全自动化。同样,也可以设定只要检测到有新的推送,便开始新的打包流程,也可以人工触发打包流程。整个过程将变得非常自动化,最大程度的减少了沟通成本、人力成本,加快了出包速度,提升了测试效率,让整个团队一直处在一个稳定、快速、可持续集成的开发环境中。
本发明实施例的分布式动态组件推送方法,获取待推送组件,将待推送组件推送至远端代码仓库;将远端代码仓库中的待推送组件复制到动态库工程中,在动态库工程中为待推送组件创建动态库,将动态库移动并存储到对应的存储空间,移动并剔除存储空间中原有的动态库,按照指定路径对存储空间中的动态库进行推送;通过上述技术方案实现了分布式动态组件推送,可以实现多业务组独立开发,各业务组可以独立维护自己的组件,提高了应用开发的效率。
本发明实施例中的组件是通过组件管理工具的途径来管理的,具体是根据项目中的依赖,下载对应组件的源代码,然后将下载后的源代码编译进工程。整个非常依赖网络,一旦因为网络波动下载失败,只能重新开始,如果出现编译报错,也需要重新开始。因此,本发明实施例将组件描述文件和组件源文件,分别缓存在两个仓库(即远端代码仓库和远端索引仓)中,对远端代码仓库的链接,则采用SSH(安全外壳协议)加密方式的链路,确保下载速度以及成功率。借助git仓库管理工具对文件的差异分析算法,每次更新组件时,只需要更新部分代码,而不是对所有的源代码进行下载,极大的提高了开发效率。
本发明实施例的分布式动态组件推送方法可以使用shell脚本完成,并且可以实现内部执行流程的封装,内部执行流程的封装对外部使用者来说是一个黑盒。所有用户在执行该shell脚本时都是走的相同的流程,相同的环境,避免因开发者本地环境偏差生成了无法使用的组件包(组件)。同时,由于可以使用shell脚本完成,节省了很多中间步骤,极大提高了编译速度,提高了组件包的推送速度,并且极大提高了测试回归验证的效率。
本实施例的应用分布式动态组件推送方法可以实现智能化的动态组件推送,基于人工智能技术对待推送组件进行获取和处理,实现无人值守的人工智能动态组件推送。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
图2是本发明第二实施例的分布式动态组件推送装置的结构示意图。如图2所示,该分布式动态组件推送装置20包括组件推送模块21、动态库创建模块22及动态库推送模块23,其中,组件推送模块21,用于获取待推送组件,将所述待推送组件推送至远端代码仓库;动态库创建模块22,用于将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;动态库推送模块23,用于将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。其中,动态库对应的存储空间为指定的本地路径下的存储空间,该指定的本地路径与上述指定路径不同。为了防止在将所述动态库移动并存储到对应的存储空间时,将原有的动态库完全覆盖,需要移动并剔除所述存储空间中原有的动态库,以确保推送的动态库为最新的动态库。
上述实施例获取待推送组件,将待推送组件推送至远端代码仓库;将远端代码仓库中的待推送组件复制到动态库工程中,在动态库工程中为待推送组件创建动态库,将动态库移动并存储到对应的存储空间,移动并剔除存储空间中原有的动态库,按照指定路径对存储空间中的动态库进行推送;通过上述技术方案实现了分布式动态组件推送,可以实现多业务组独立开发,各业务组可以独立维护自己的组件,提高了应用开发的效率。
进一步地,该组件推送模块21还用于根据目标需求的功能确定对应的版本分支,在所述版本分支上更新所述目标需求的源代码;对所述版本分支上的所有源代码进行合并,得到合并后的源代码,将所述合并后的源代码作为所述待推送组件。其中,版本分支是按照发版时间定义的,发版时间的时间间隔可以为一个月,也可以为其他的一段时间,版本分支包括该段时间内的所有代码,只有确定了目标需求的功能对应的版本分支,才会将目标需求的源代码上传至该版本分支,并在所述版本分支上合并待更新源代码。
进一步地,该组件推送模块21还用于在所述获取待推送组件之后,获取所述待推送组件的组件描述文件,更新所述组件描述文件的版本字段及版本标记号,所述版本字段与所述版本标记号对应;更新当前工程的依赖组件,更新所述当前工程版本,在更新后的依赖组件的主工程上安装依赖库。其中,组件描述文件是用于描述一个库的源代码和资源将如何被打包编译成链接库或动态库的文件。
进一步地,该组件推送模块21还用于在更新后的依赖组件的主工程上安装依赖库之后,为所述待推送组件设置组件标记号,根据所述待推送组件对应的索引设置索引标记号;确定推送所述待推送组件时需要的故事卡片唯一标志符,对所述故事卡片一标志符进行校验;若校验通过,则将所述待推送组件及所述组件标记号、所述索引及所述索引标记号分别推送至远端代码仓库和远端索引仓库。
进一步地,该动态库创建模块22还用于设置动态库构建参数,所述构建参数包括链接地址、链接工程以及需要链接的组件标记号;根据所述链接地址、链接工程以及需要链接的组件标记号获取需要链接的待推送组件;在所述动态库工程中,为所述需要链接的待推送组件创建动态库。其中,为了获取需要链接的待推送组件,需要确定链接地址,即链接工程所在地址,又由于链接的工程中可能会存在多个组件,因此需要确定组件标记号。通过链接地址、链接工程以及需要链接的组件标记号可以获取需要链接的待推送组件。
进一步地,该动态库创建模块22还用于在为获取的所述待推送组件创建动态库之前,根据所述需要清理的工程名称及所述工程中需要清理的内容,清理运行的缓存;还用于在所述框架及所述环境下,为获取的所述待推送组件创建动态库;所述构建参数还包括需要清理的工程名称及所述工程中需要清理的内容,所述动态库的框架及环境。其中,所述需要清理的工程名称及所述工程中需要清理的内容即为上一次运行的缓存,运行的缓存清理后链接待推送组件,将待推送组件的源代码复制到一个动态库工程中,准备下一步构建动态库。
进一步地,该动态库推送模块23还用于在按照指定路径对所述存储空间中的动态库进行推送之前,对动态库推送条件进行监听,当监听到所述动态库推送条件时,则将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送;其中,所述动态库推送条件包括当前时间为预设推送时间或所述动态工程库中创建了新的动态库。
图3是本发明第三实施例的电子设备的结构示意图。如图3所示,该电子设备30包括处理器31及和处理器31耦接的存储器32。
存储器32存储有用于实现上述任一实施例的所述分布式动态组件推送方法的程序指令。
处理器31用于执行存储器32存储的程序指令以进行代码测试。
其中,处理器31还可以称为CPU(Central Processing Unit,中央处理单元)。处理器31可能是一种集成电路芯片,具有信号的处理能力。处理器31还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图4,图4为本发明第四实施例的计算机可读存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述所有方法的程序指令41,所述存储介质可以是非易失性,也可以是易失性。其中,该程序指令41可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
在本发明所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
Claims (10)
1.一种分布式动态组件推送方法,其特征在于,包括:
获取待推送组件,将所述待推送组件推送至远端代码仓库;
将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;
将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。
2.根据权利要求1所述的分布式动态组件推送方法,其特征在于,所述获取待推送组件,包括:
根据目标需求的功能确定对应的版本分支,在所述版本分支上更新所述目标需求的源代码;
对所述版本分支上的所有源代码进行合并,得到合并后的源代码,将所述合并后的源代码作为所述待推送组件。
3.根据权利要求1所述的分布式动态组件推送方法,其特征在于,所述获取待推送组件之后,还包括:
获取所述待推送组件的组件描述文件,更新所述组件描述文件的版本字段及版本标记号,所述版本字段与所述版本标记号对应;
更新当前工程的依赖组件,更新所述当前工程版本,在更新后的依赖组件的主工程上安装依赖库。
4.根据权利要求3所述的分布式动态组件推送方法,其特征在于,所述在更新后的依赖组件的主工程上安装依赖库之后,还包括:为所述待推送组件设置组件标记号,根据所述待推送组件对应的索引设置索引标记号;
所述将所述待推送组件推送至远端代码仓库,具体包括:
确定推送所述待推送组件时需要的故事卡片唯一标志符,对所述故事卡片唯一标志符进行校验;
若校验通过,则将所述待推送组件及所述组件标记号、所述索引及所述索引标记号分别推送至远端代码仓库和远端索引仓库。
5.根据权利要求1所述的分布式动态组件推送方法,其特征在于,在所述动态库工程中创建动态库,具体包括:
设置动态库构建参数,所述构建参数包括链接地址、链接工程以及需要链接的组件标记号;
根据所述链接地址、链接工程以及需要链接的组件标记号获取需要链接的待推送组件;
在所述动态库工程中,为所述需要链接的待推送组件创建动态库。
6.根据权利要求5所述的分布式动态组件推送方法,其特征在于,所述构建参数还包括需要清理的工程名称及所述工程中需要清理的内容,所述动态库的框架及环境;所述为获取的所述待推送组件创建动态库之前,还包括,
根据所述需要清理的工程名称及所述工程中需要清理的内容,清理运行的缓存;
所述为获取的所述待推送组件创建动态库,包括:
在所述框架及所述环境下,为获取的所述待推送组件创建动态库。
7.根据权利要求6所述的分布式动态组件推送方法,其特征在于,所述按照指定路径对所述存储空间中的动态库进行推送之前,还包括:
对动态库推送条件进行监听,当监听到所述动态库推送条件时,则将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送;其中,所述动态库推送条件包括当前时间为预设推送时间或所述动态工程库中创建了新的动态库。
8.一种分布式动态组件推送装置,其特征在于,包括组件推送模块、动态库创建模块及动态库推送模块;
所述组件推送模块,用于获取待推送组件,将所述待推送组件推送至远端代码仓库;
所述动态库创建模块,用于将远端代码仓库中的所述待推送组件复制到动态库工程中,在所述动态库工程中为至少一个所述待推送组件创建动态库;
所述动态库推送模块,用于将所述动态库移动并存储到对应的存储空间,移动并剔除所述存储空间中原有的动态库,按照指定路径对所述存储空间中的动态库进行推送。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述分布式动态组件推送方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述分布式动态组件推送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210040656.0A CN114385160A (zh) | 2022-01-14 | 2022-01-14 | 一种分布式动态组件推送方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210040656.0A CN114385160A (zh) | 2022-01-14 | 2022-01-14 | 一种分布式动态组件推送方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385160A true CN114385160A (zh) | 2022-04-22 |
Family
ID=81202776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210040656.0A Pending CN114385160A (zh) | 2022-01-14 | 2022-01-14 | 一种分布式动态组件推送方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385160A (zh) |
-
2022
- 2022-01-14 CN CN202210040656.0A patent/CN114385160A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766126B (zh) | 容器镜像的构建方法、系统、装置及存储介质 | |
CN111158674B (zh) | 组件管理方法、系统、设备及存储介质 | |
US10585785B2 (en) | Preservation of modifications after overlay removal from a container | |
CN111580926A (zh) | 模型发布方法、模型部署方法、装置、设备及存储介质 | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
US11113050B2 (en) | Application architecture generation | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
EP3447635A1 (en) | Application architecture generation | |
CN112256278A (zh) | 编译方法、装置、设备及存储介质 | |
CN115080060A (zh) | 应用程序发布方法、装置、设备、存储介质和程序产品 | |
CN112702195A (zh) | 网关配置方法、电子设备及计算机可读存储介质 | |
CN116257438A (zh) | 接口测试用例的更新方法及相关设备 | |
JP2008269277A (ja) | 共有データの分散編集システム、分散編集方法およびプログラム | |
US11200052B1 (en) | Documentation enforcement during compilation | |
CN111796855B (zh) | 一种增量版本更新方法、装置、存储介质及计算机设备 | |
KR101599471B1 (ko) | 소스 관리 장치, 시스템 및 방법, 컴퓨터 판독 가능한 기록 매체 | |
CN110908644A (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN116382694A (zh) | 一种提升容器环境下Maven工程编译速度的方法 | |
CN114385160A (zh) | 一种分布式动态组件推送方法、装置、电子设备及介质 | |
CN115129348A (zh) | 应用程序的资源更新方法、装置、设备及可读存储介质 | |
Pastrana-Pardo et al. | Approach to the Best Practices in Software Development Based on DevOps and SCRUM Used in Very Small Entities | |
CN113835827A (zh) | 基于容器Docker的应用部署方法、装置及电子设备 | |
US20140081679A1 (en) | Release Management System and Method | |
Jebbar et al. | Model driven upgrade campaign generation for highly available systems |
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 |