软件发布的方法、装置、电子设备及介质与流程

未命名 07-28 阅读:74 评论:0


1.本发明涉及软件开发技术领域,尤其是涉及一种软件发布的方法、装置、电子设备及介质。


背景技术:

2.目前,前端软件部署上线,主要是基于docker构建的整体镜像,而迭代变更往往是对软件中的某个具体模块的具体功能进行变更,部署粒度远大于变更粒度。因此,部署粒度远大于变更粒度,放大了测试边界,降低了产研效能(即修改1个模块,但要测试并上线50个以上的模块),同时超出变更边界的部署范围增加了软件运行的不确定性。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种软件发布的方法、装置、电子设备及介质,以提升了产研效能和软件运行稳定性。
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.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.目前前端软件部署上线,部署粒度远大于变更粒度,放大测试边界,降低了产研效能,同时超出变更边界的部署范围增加了软件运行的不确定性。
28.基于此,本发明实施例提供的一种软件发布的方法、装置、电子设备及介质,可以提升产研效能和软件运行稳定性。
29.为便于对本实施例进行理解,首先对本发明实施例所公开的一种软件发布的方法进行详细介绍,该方法可以由电子设备执行,诸如:电脑、智能手机、平板电脑等。参见图1所示的一种软件发布的方法的流程图,示意出该方法主要包括以下步骤s101至步骤s102:
30.步骤s101:将应用软件拆分为多个模块,并生成每个模块的对应的模块版本。
31.其中,模块包括:功能模块、组件模块和工具模块。在一种实施方式中,一个应用软件由若干个功能模块直接组成,一个功能模块依赖若干组件模块,一个组件模块依赖若干工具模块。本实施例中,可以根据应用软件的不同功能将统一镜像拆分为多个模块的静态软件资源,并为每个模块提供单一资源入口,例如:h5项目以umd格式的js脚本为入口。
32.可选的,本发明实施例中可以根据每个模块的静态软件资源生成对应的模块版本,并且可以在应用软件的功能进行更新时,对相对应的模块进行迭代更新,并得到更新后的模块版本。
33.步骤s102:在发布平台上线和发布应用软件的各模块的指定的模块版本。
34.在一种实施方式中,可以在发布平台上线发布各独立模块的指定的模块版本,从而可以在修改一个模块时,仅上线和发布该模块修改后的模块版本,无需测试并上线多个模块。
35.本发明实施例提供的上述软件发布的方法,通过将应用软件的整体镜像拆为多个模块,并分模块进行上线和发布,同时,可以针对每个模块进行迭代更新得到对应的模块版本,从而使功能模块、产研边界、变更粒度和部署粒度能够更好的匹配,提升了产研效能和软件运行稳定性。
36.在一种实施方式中,不同前端项目的构建结果可以统一用模块实体模型抽象为如图2所示的四种关系实体:
37.1,模块实体,边界划分清晰的业务功能和技术组件的软件载体,可以细分为功能模块实体、组件模块实体、工具模块实体3类。
38.2,模块版本实体,模块实体的软件某个版本实现,一个模块实体可以包含若干个模块版本实体,即一个模块实体可以迭代和发布多个版本,每个模块版本实体均有单一的明确资源入口,比如h5项目以umd格式的js脚本为入口。
39.3,模块物料实体,模块版本实体的对应资源,一个模块物料实体由一个入口资源和一组关联资源组成。
40.4,模块版本审计实体,用于记录不同模块版本实体的上线、部署、下线等操作,即记录模块版本实体的发布日志。
41.其中,模块版本实体的属性可参见表1所示,根据模块版本实体的参数可以确定模块版本的唯一性。
42.表1模块版本实体的属性表
[0043][0044]
基于上述关系实体,本发明实施例中,在生成每个模块的对应的模块版本时,可以采用包括但不限于以下方式:基于模块对应的独立代码仓库对模块进行迭代和修复,得到更新后的模块的模块板本,并确定模块板本对应的模块物料。具体的,每个模块对应一个独立代码仓库,在对模块进行迭代和bug修复时,可以基于模块对应的独立代码仓库进行,在更新完成后,得到该模块更新后的模块版本;同时,每个模块版本对应一个模块物料,即模块版本的对应资源,在模块更新完成后,根据模块版本即可确定模块版本对应的模块物料。
[0045]
进一步地,在发布平台上线和发布应用软件的各模块的指定的模块版本之后,上述方法还包括:记录模块版本的发布日志,得到模块版本对应的模块版本审计实体。具体的,记录每个模块版本的上线、部署、下线等操作日志,得到对应的模块版本审计实体。
[0046]
在一种实施方式中,在将应用软件拆分为多个模块之后,上述方法还包括:确定各功能模块依赖的组件模块和工具模块,并构建应用软件的各功能模块、各组件模块和各工具模块之间的模块依赖树;采用后序遍历算法对模块依赖树进行遍历,得到应用软件的功能模块数组。
[0047]
在具体实施时,一个应用由若干个功能模块直接组成,一个功能模块依赖若干组
件模块,一个组件模块依赖若干工具模块,需要将功能模块、组件模块和工具模块整体下发到应用程序中。本发明实施例中,可以将应用软件划分为多个功能模块,并确定每个功能模块所述依赖的组件模块,以及每个组件模块所述依赖的工具模块,然后构建该应用软件的模块依赖树,参见图3所示。
[0048]
对于图3所示的模块依赖树,可以采用后序遍历,基于依赖去重、依赖在前、消费在后的原则,得到功能模块的顺序确定的功能模块数组:["组件模块1","工具模块1","组件模块2","功能模块1","组件模块3","功能模块2","组件模块4","功能模块3"]。
[0049]
在一种实施方式中,通过不同的发布平台发布不同类型的应用软件时,需要先确保应用软件使用各模块的合法性以及各模块的合法性。基于此,本实施例中在发布平台上线和发布应用软件的各模块的指定的模块版本之前,还包括:向发布平台发送应用入驻请求和模块入驻请求,并基于应用入驻请求和模块入驻请求将应用软件和各模块上传至发布平台;向发布平台发送注册请求,并基于注册请求将各模块注册到对应的应用软件中。
[0050]
在具体实施时,参见图4所示的一种发布平台的结构示意图,该发布平台包括:应用入驻模块、模块入驻模块和注册中心模块,应用入驻模块用于确保应用软件使用上述各模块的合法性;模块入驻模块用于确保发布平台中上述三种类型的模块的合法性;注册中心模块用于确保各模块注册到应用软件中的合法性和有效性,作为应用软件使用功能模块的依据。基于此,本实施例中需要预先向发布平台发送应用入驻请求和模块入驻请求,以确保应用软件和对应的各模块入驻发布平台,确保其合法性;同时向发布平台发送注册请求,以确保各模块注册到应用软件中的合法性和有效性。
[0051]
参见图4所示,该发布平台还包括:入驻申请模块、版本管理模块、依赖管理模块、发布服务模块和内容分发网络(content delivery network,cdn)模块。入驻申请模块用于接收应用入驻请求和模块入驻请求;版本管理模块用于管理各模块的模块版本;依赖管理模块用于管理功能模块对组件模块、工具模块的有效引用,即基于上述模块依赖树管理功能模块与组件模块、工具模块之间的依赖关系;发布服务模块用于管理三种模块的上线和发布,以及cdn模块的管理。
[0052]
进一步地,本发明实施例中,在发布平台上线和发布应用软件的各模块的指定的模块版本时,可以采用包括但不限于以下方式:基于应用软件的功能模块数组,确定应用软件中待发布的模块的合法性以及依赖关系;如果待发布模块合法,则基于依赖关系上线和发布待发布的模块的指定的模块版本。
[0053]
在具体实施时,可以根据预先确定的应用软件的功能模块数组,确定应用软件中待发布的模块的合法性,即应用软件是否可以使用该待发布的模块,并确定功能模块、组件模块和工具模块的依赖关系,最后上线和发布该模块的指定的模块版本。
[0054]
本发明实施例提供的上述软件方法,能够使功能模块、产研边界、变更粒度、部署粒度更好的匹配,实现多类型多层次的独立发布,提升了产研效能和软件运行稳定性。
[0055]
对于前述实施例提供的软件发布的方法,本发明实施例还提供了一种软件发布的装置,参见图5所示的一种软件发布的装置的结构示意图,该装置可以包括以下部分:
[0056]
拆分与生成模块501,用于将应用软件拆分为多个模块,并生成每个模块的对应的模块版本;其中,模块包括:功能模块、组件模块和工具模块;
[0057]
发布模块502,用于在发布平台上线和发布应用软件的各模块的指定的模块版本。
[0058]
本发明实施例提供的上述软件发布的装置,通过将应用软件的整体镜像拆为多个模块,并分模块进行上线和发布,同时,可以针对每个模块进行迭代更新得到对应的模块版本,从而使功能模块、产研边界、变更粒度和部署粒度能够更好的匹配,提升了产研效能和软件运行稳定性。
[0059]
在一种实施方式中,上述拆分与生成模块501还用于:基于模块对应的独立代码仓库对模块进行迭代和修复,得到更新后的模块的模块板本,并确定模块板本对应的模块物料。
[0060]
在一种实施方式中,上述装置还包括依赖关系确定模块,用于:确定各功能模块依赖的组件模块和工具模块,并构建应用软件的各功能模块、各组件模块和各工具模块之间的模块依赖树;采用后序遍历算法对模块依赖树进行遍历,得到应用软件的功能模块数组。
[0061]
在一种实施方式中,上述发布模块502还用于:基于应用软件的功能模块数组,确定应用软件中待发布的模块的合法性以及依赖关系;如果待发布模块合法,则基于依赖关系上线和发布待发布的模块的指定的模块版本。
[0062]
在一种实施方式中,上述发布模块502还用于:记录模块版本的发布日志,得到模块版本对应的模块版本审计实体。
[0063]
在一种实施方式中,上述装置还包括管理模块,用于:向发布平台发送应用入驻请求和模块入驻请求,并基于应用入驻请求和模块入驻请求将应用软件和各模块上传至发布平台;向发布平台发送注册请求,并基于注册请求将各模块注册到对应的应用软件中。
[0064]
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0065]
本发明实施例还提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被处理器运行时执行如上实施方式的任一项所述的方法。
[0066]
图6为本发明实施例提供的一种电子设备的结构示意图,该电子设备100包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
[0067]
其中,存储器61可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
[0068]
总线62可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0069]
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
[0070]
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络
处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
[0071]
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
[0072]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0073]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

技术特征:
1.一种软件发布的方法,其特征在于,包括:将应用软件拆分为多个模块,并生成每个所述模块的对应的模块版本;其中,所述模块包括:功能模块、组件模块和工具模块;在发布平台上线和发布所述应用软件的各所述模块的指定的模块版本。2.根据权利要求1所述的方法,其特征在于,生成每个所述模块的对应的模块版本,包括:基于所述模块对应的独立代码仓库对所述模块进行迭代和修复,得到更新后的所述模块的模块板本,并确定所述模块板本对应的模块物料。3.根据权利要求1所述的方法,其特征在于,将应用软件拆分为多个模块之后,所述方法还包括:确定各所述功能模块依赖的所述组件模块和所述工具模块,并构建所述应用软件的各所述功能模块、各所述组件模块和各所述工具模块之间的模块依赖树;采用后序遍历算法对所述模块依赖树进行遍历,得到所述应用软件的功能模块数组。4.根据权利要求3所述的方法,其特征在于,在发布平台上线和发布所述应用软件的各所述模块的指定的模块版本,包括:基于所述应用软件的功能模块数组,确定所述应用软件中待发布的模块的合法性以及依赖关系;如果所述待发布的模块合法,则基于所述依赖关系上线和发布所述待发布的模块的指定的模块版本。5.根据权利要求1所述的方法,其特征在于,在发布平台上线和发布所述应用软件的各所述模块的指定的模块版本之后,所述方法还包括:记录所述模块版本的发布日志,得到所述模块版本对应的模块版本审计实体。6.根据权利要求1所述的方法,其特征在于,在发布平台上线和发布所述应用软件的各所述模块的指定的模块版本之前,所述方法还包括:向所述发布平台发送应用入驻请求和模块入驻请求,并基于所述应用入驻请求和所述模块入驻请求将所述应用软件和各所述模块上传至所述发布平台;向所述发布平台发送注册请求,并基于所述注册请求将各所述模块注册到对应的所述应用软件中。7.一种软件发布的装置,其特征在于,包括:拆分与生成模块,用于将应用软件拆分为多个模块,并生成每个所述模块的对应的模块版本;其中,所述模块包括:功能模块、组件模块和工具模块;发布模块,用于在发布平台上线和发布所述应用软件的各所述模块的指定的模块版本。8.根据权利要求7所述的装置,其特征在于,所述拆分与生成模块还用于:基于所述模块对应的独立代码仓库对所述模块进行迭代和修复,得到更新后的所述模块的模块板本,并确定所述模块板本对应的模块物料。9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至6任一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至6任一项所述的方法的步骤。

技术总结
本发明提供了一种软件发布的方法、装置、电子设备及介质,包括:将应用软件拆分为多个模块,并生成每个模块的对应的模块版本;其中,模块包括:功能模块、组件模块和工具模块;在发布平台上线和发布应用软件的各模块的指定的模块版本。本发明提升了产研效能和软件运行稳定性。定性。定性。


技术研发人员:胡继伟 王冠甲
受保护的技术使用者:北京合思信息技术有限公司
技术研发日:2023.05.06
技术公布日:2023/7/27
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐