CN112015465B - 项目工程配置发布方法、装置、计算机设备及存储介质 - Google Patents
项目工程配置发布方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112015465B CN112015465B CN202010916485.4A CN202010916485A CN112015465B CN 112015465 B CN112015465 B CN 112015465B CN 202010916485 A CN202010916485 A CN 202010916485A CN 112015465 B CN112015465 B CN 112015465B
- Authority
- CN
- China
- Prior art keywords
- library
- sub
- environment
- project
- main
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 238000011161 development Methods 0.000 claims abstract description 39
- 230000007613 environmental effect Effects 0.000 claims abstract description 33
- 230000000750 progressive effect Effects 0.000 claims abstract description 17
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 238000009826 distribution Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012856 packing Methods 0.000 claims description 14
- 238000012827 research and development Methods 0.000 abstract description 2
- 238000012360 testing method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project 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)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及研发管理领域,尤其涉及一种项目工程配置发布方法、装置、计算机设备及存储介质。所述方法包括:将存储项目工程对应的前端主框架的git代码仓库作为主库;添加子库,并将每一个子库与其子库代码进行拆分;在主库中引入了子库,并为主库和子库添加环境分支;将主库自动切换到与当前更新环境对应的环境分支,并将子库自动切换到与主库相同的环境分支,从已被切换的环境分支对应的子库中拉取已被拆分的子库代码;通过主库和子库顺次进入到每一个环境分支,顺次获取并递进合并每一个环境分支对应的子库代码;将项目工程初始化到最后一个环境分支,并将递进合并之后的子库代码打包发布。通过本发明可提升项目工程的开发效率和发布效率。
Description
技术领域
本发明涉及研发管理领域,尤其涉及一种项目工程配置发布方法、装置、计算机设备及存储介质。
背景技术
完善的框架是项目工程的重要支撑和保证。在前端项目工程化发展的过程中,由于各种工具的快速变更迭代,前端框架一直处于持续变化的状态。且由于互联网的日益发展,大量复杂的线下场景出现了线上化的需求,从而使前端***也不断变得庞大而臃肿。因此需要一种技术方案实现对项目工程的前端框架中的代码进行更精细化的管理,使前端框架中的代码更好得服务于前端项目工程化的需求;但现有技术方案并不能对前端框架涉及到的代码进行精细化的管理,同时,现有技术方案中拉取适应于前端框架和前端项目工程化的代码的效率较低,并且,无法进行精细化管理该代码,也无法提升项目工程的开发效率和发布效率。因此本领域人员亟需寻找一种新的技术方案来解决上述所提到的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种项目工程配置发布方法、装置、计算机设备及存储介质,用于提升项目工程的开发效率和发布效率。
一种项目工程配置发布方法,包括:
根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
接收包含所述项目工程的环境启动队列的启动指令后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
一种项目工程配置发布装置,包括:
存储模块,用于根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
拆分模块,用于根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
第一添加模块,用于在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
拉取模块,用于将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
递进合并模块,用于接收包含所述项目工程的环境启动队列的启动指令后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
打包发布模块,用于通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述项目工程配置发布方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述项目工程配置发布方法。
上述项目工程配置发布方法、装置、计算机设备及存储介质,一方面在与前端主框架关联的主库中引入了子库,接着从主库关联的子库拆分出子库代码,并通过自动化更新脚本将主库以及子库的分支切换到相应的环境分支后,拉取环境分支中的子库代码,因此通过上述做法可快速拉取到适应该项目工程且位于各环境分支下的子库代码,并可对主库和子库环境分支的管理,也即可对环境分支中的子库代码进行精细化的管理;另一方面通过自动更新脚本将项目工程的代码初始化到最后一个环境分支对应的子库代码,并将递进合并之后的子库代码进行打包发布,上述优化了项目工程的开发流程,实现了敏捷开发的目的,从而提高了开发效率,可按照项目工程需求发布子库代码,从而进一步地提高了发布效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中项目工程配置发布方法的一应用环境示意图;
图2是本发明一实施例中项目工程配置发布方法的一流程图;
图3是本发明一实施例中项目工程配置发布装置的结构示意图;
图4是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的项目工程配置发布方法,可应用在如图1的应用环境中,其中,客户端通过网络与服务器进行通信。其中,客户端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种项目工程配置发布方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S10,根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
可理解地,项目工程需求是与项目工程(该项目工程关联于前端微服务的拆分,也即该项目工程中包括需对前端微服务进行拆分的要求,并在前端微服务后需发布出适应该项目工程需求的内容,该内容可指新上线的功能、***或者代码等)关联对应的,项目工程需求是根据人工实际需求确定的,项目工程可为公司部门开发业务管理***或企业用户管理***等项目,其中,一个项目工程需求对应一个项目工程;前端主框架包括但不限于Vue、react和angular,前端主框架搭建的触发动作可根据搭建前端主框架的服务器是否搭建过相同前端主框架的情况来进行决定,若搭建前端主框架的服务器搭建过相同前端主框架,则不触发搭建前端主框架的动作,并直接进入S20步骤,若搭建前端主框架的服务器未搭建过相同前端主框架,则触发搭建前端主框架的动作;需要说明的是,主框架需包含基于Webpack的打包工具,或者直接使用Webpack创建打包环境,打包工具和打包环境用于后续打包分布的使用。具体地,将搭建好的主框架提交到git(分布式版本控制***)服务器去进行管理,并将前端主框架存储至git服务器中的git代码仓库中,最后将该git代码仓库作为主库(其中,开发过程中通过拉取此git代码仓库从而获取整个项目的代码并基于此git代码仓库进行开发,因此该git代码仓库可被作为开发入口,也即该主库可被作为开发入口,主库中存在主库代码,主库代码为前端主框架对应的代码)。
S20,根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
可理解地,子库可分为组件子库或业务子库,其中,组件子库主要为业务子库提供公用组件和公用插件(公用组件和公用插件可位于业务相关的页面中,且公用组件和公用插件都可在该页面中提供相应的属性和方法),可用于代码复用,业务子库主要提供具体业务功能的页面路由(服务器可将该业务功能展示至用户),也是具体的业务模块。具体地,首先添加一个代码仓库(一个业务模块对应一个代码仓库);接着将一个业务模块具体业务相关的页面和组件添加到此代码仓库,同时从该代码仓库导出一个页面路由配置(其中,此页面路由配置将作为此业务子库的入口,每个与业务子库对应的业务模块都将拆分出一个代码仓库);或者将所有业务公用的代码逻辑和组件添加到此代码仓库,将公用组件组合导出作为此组件子库的入口(需要说明的是,一般一个项目工程只需要一个公共的组件子库)。在本实施例中将子库与其子库代码进行拆分出来,拆分效率高,代码拆分清晰便捷,也便于对子库中的子库代码进行多次复用,从而可提高代码的复用率,加快人工处理项目工程的处理效率,且可对拆分出的子库代码进行更精细化的管理,避免由于子库代码混杂而造成了生产问题。
S30,在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
可理解地,主库或一个子库仅对应一个环境分支;环境分支可包括但不限于为开发环境、测试环境、预发布环境和生产环境中的一种,若主库或子库中关联的分支会位于其中一个环境分支时,则确定出主库或子库位于该环境分支对应的环境中;配置记录是为子库在各个不同环境下所配置的记录,其中,配置记录可包括子库的路径、子库的名称或说明和子库在各个环境下对应的分支名称。在本实施例中,将子库引入到主库中,是为了建立起主库与子库的关联关系,而在主库中存储子库的配置记录,是为了在确定出主库所在的环境后,能更快让子库进入与主库相同的环境中。
S40,将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
可理解地,自动更新脚本是一种可将主库和子库的分支自动切换到相应的环境分支中,并将该项目工程所对应的代码初始到该环境分支下所对应的子库代码中;当前更新环境是可根据需求进行确定,也可按照设定的环境顺序进行确定(比如开发环境-测试环境-预发布环境-生产环境的顺序),其中,当前更新环境可为开发环境、测试环境、预发布环境和生产环境中的一种。具体地,根据配置记录,进入与主库关联的子库的路径,并将路径中的子库自动切换到与主库相同的环境分支中,拉取子库中最新的子库代码。在本实施例中,可在项目工程启动前(未进入到开发和发布的流程中),通过自动更新脚本将项目工程的代码自动更新到最新的子库代码,因此对于用户来说,可实现无感切换,一方面可提高切换效率,另一方面也可提高用户的体验效果,同时可完成主库和子库对应的环境分支的自动化管理,并从与环境分支对应的子库中快速拉取到项目工程所需的子库代码,从而本实施例可提高与项目工程关联的微服务中的拆分子库代码的效率。
S50,接收包含所述项目工程的环境启动队列的启动指令后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
可理解地,启动指令的启动将标志着项目工程进入了开发和发布的流程中;环境启动队列是指各个环境分支之间的合并顺序,该环境启动队列可按照需求进行设置,比如该环境启动队列可被设置成开发环境-测试环境-预发布环境-生产环境,也可被设置成开发环境-测试环境,也可被设置成开发环境-测试环境-预发布环境。具体地,在需发布某个业务模块时,此时以该业务模块对应的主库和子库中作为开发入口,通过该开发入口可顺次进入到环境启动队列中的各个环境分支中(启动项目工程第一个进入的环境分支为开发环境的环境分支),并将各个环境分支对应的子库代码进行依次合并,同时顺次获取在合并完成后每一个环境分支此时对应的子库代码,其中,在环境启动队列中的环境分支的序列为开发环境-测试环境-预发布环境-生产环境,此时通过某个业务模块确定出主库以及主库关联的子库(该子库所在的当前更新环境为开发环境,启动项目工程第一个进入的环境为开发环境),拉取该某个业务模块对应的子库中的子库代码,并将某个业务模块对应的子库中的子库代码通过git服务器中的git merge命令从开发环境的环境分支合并到测试环境的环境分支的子库代码(进行测试发布时),通过自动更新脚本将整个项目工程初始到测试环境的环境分支对应的子库代码中,在主库引入整个项目工程的路由(通过整个项目工程的路由可找到整个项目的子库代码以及主库代码,主库代码为前端主框架对应的代码)进行测试环境的打包分布后(进行预发布时),接着将测试环境的环境分支对应的子库代码合并到预发布环境的环境分支中,通过自动更新脚本将整个项目工程初始到预发布环境的环境分支对应的子库代码中,在主库引入整个项目工程的路由进行预发布环境的打包分布后(进行生产发布时),最后将预发布环境的环境分支对应的子库代码合并到生产环境的环境分支中,通过自动更新脚本将整个项目工程初始到生产环境的环境分支对应的子库代码中进行打包发布。
S60,通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
具体地,将环境启动队列中对应的最后一个环境分支合并到master分支,最后将master分支中的子库代码进行最后的打包发布(上述最后一个环境分支可为生产环境的环境分支,也可为测试环境的环境分支,也可为预发布环境的环境分支)。需要说明的是,开发者只需要通过git服务器中的git clone--recurse-submodules命令拉取主库代码,就可递归拉取与主库关联的子库的子库代码。上述步骤S10至S40所在的实施例为微服务的拆分,而步骤S50至S60所在的实施例为微服务的拆分完成后,在本实施例中将最后的环境分支中的子库代码进行打包发布后,确定该项目工程完成完整的开发发布流程,通过本实施例中可将开发难度大大降低,并可提高关于该项目工程在微服务拆分完后的开发效率,也进一步地体现出本实施例能提高发布效率,从而可按照项目工程需求来达到快速发布的目的,提高与项目工程关联的内容的快速上线。
进一步地,所述根据项目工程需求搭建项目工程的前端主框架,包括:
根据所述项目工程需求确定出所述前端主框架的类型后,调用出与所述前端主框架的类型对应的开发工具搭建所述前端主框架。
可理解地,若前端主框架的类型为Vue,则可使用开发工具@vue/cli进行搭建,若前端主框架的类型为react,则可使用create-react-app进行搭建,若前端主框架的类型为angular,则可使用@angular/cli进行搭建。本实施例可根据项目工程需求搭建出与该项目工程关联且适合的前端主框架。
进一步地,所述在所述主库中引入所述子库,包括:
在所述主库中执行文件生成命令后生成预设文件;所述预设文件包含与所述主库关联的所述子库的关键数据;
在所述预设文件对应的项目工程的根目录下,创建用于管理所述项目工程的所有所述子库的预设目录,根据所述关键数据和所述预设目录执行子库添加命令后将所有所述子库一一引入至所述主库;
在所述主库中执行子库代码更新命令后,更新所述主库关联的所述子库的子库代码。
具体地,在主库中执行文件生成命令(git服务器中的git submodule init)而生成git modules文件,其中,该git modules文件保存的关键数据可为所有子库的路径和链接等相关信息;接着在git服务器所在的项目工程根目录创建预设目录(modules目录),通过执行子库添加命令(git服务器中的git submodule add)将路径和链接中的子库依次引入到预设目录中(需要说明的是,启动项目工程时,需验证路径和链接中的子库是否正确引入至主库),并提交预设目录至主库进行保存;再接着根据关键数据中的路径和链接等相关信息从与主库关联的子库中执行子库代码更新命令(git服务器中的git submoduleupdate)后更新子库的子库代码;然后为主库关联的子库添加在项目工程中的预设目录的唯一ID(alias),其中,此唯一ID将代表子库的绝对路径,可方便子库引入到其他主库中进行使用;最后通过唯一ID在主库中引入与其关联的子库的路由,需要说明的是,添加路由的过程中引入了路由重复验证的流程,引入的路由是用于后续项目工程的打包发布。
进一步地,所述更新所述主库关联的所述子库的子库代码之后,还包括:
在所述主库中执行子库代码提交命令后,将所述主库关联的所述子库切换到与所述子库对应的路径中,并将更新后的子库代码自所述路径提交到所述子库中。
可理解地,子库代码提交命令可以是在git服务器中执行的git config--localdiff.ignoreSubmodules all命令,通过该子库代码提交命令,可在子库代码更新后,将子库切换到对应的路径,并将变更后的子库的子库代码只提交至子库中的代码仓库中。本实施例无需在主库进行二次提交变更后的子库代码,从而可提高更新后的子库代码的存储效率。
进一步地,所述在所述项目工程启动之后,还包括:
在所接收到所述项目工程的启动指令后,获取与所述项目工程关联的模块配置参数,根据所述模块配置参数确定与业务模块对应的路由,打包引入与各所述路由对应的所述业务模块的子库代码。
可理解地,业务模块是由项目工程需求决定的,业务模块可代表一个业务***即将要上线的新功能,项目工程需求就是该业务模块进行开发发布的要求;通过路由可找到与业务模块关联的子库代码;在启动项目工程时,可单独引入所需启动的业务模块配置参数,也即在主库引入具体路由时可只引入与业务模块配置参数对应的业务模块的路由,启动项目工程后,利用webpack根据业务模块的路由打包引入与该业务模块对应的子库代码。通过本实施例可加快项目工程的启动速度,并且可隔离其他业务模块的影响,从而优化开发流程。需要说明的是,在另外一实施例中,可修改模块配置参数后对该业务模块配置参数对应的业务模块进行拓展。
进一步地,所述将递进合并之后的所述子库代码打包发布,还包括:
获取打包发布后的打包文件,通过模块打包器为所述打包文件添加一个根据所述打包文件的文件内容生成的预设后缀名;
通过所述预设后缀名在预设文件库中查询出与所述预设后缀名相同的历史后缀名;
从所述预设文件库提取出与所述历史后缀名对应的历史打包文件;
将所述打包文件与提取出的所述历史打包文件进行比较后,获取所述打包文件中的变更文件内容,并将所述变更文件内容进行增量打包发布。
可理解地,模块打包器可为webpack;预设后缀名和历史后缀名包括文件内容加上chunkhash后缀。
在本实施例中,由于是根据文件内容而生成打包文件的预设后缀名,因此在打包文件中的文件内容与历史打包文的文件内容存在部分一致或全部一致的时候,打包文件中的预设后缀名将与历史打包文件的历史后缀名重复,此时可查询出与预设后缀名相同的历史后缀名的历史打包文件后,将打包发布后的打包文件与历史打包文件进行比较,通过比较之后可实现只对变更文件内容进行增量发布,从而可减少不必要文件内容的发布,总体上可减小代码发布后产生的风险。
综上所述,上述提供了一种项目工程配置发布方法,一方面在与前端主框架关联的主库中引入了子库,接着从主库关联的子库拆分出子库代码,并通过自动化更新脚本将主库以及子库的分支切换到相应的环境分支后,拉取环境分支中的子库代码,因此通过上述做法可快速拉取到适应该项目工程且位于各环境分支下的子库代码,并可对主库和子库环境分支的管理,也即可对环境分支中的子库代码进行精细化的管理;另一方面通过自动更新脚本将项目工程的代码初始化到最后一个环境分支对应的子库代码,并将递进合并之后的子库代码进行打包发布,上述优化了项目工程的开发流程,实现了敏捷开发的目的,从而提高了开发效率,可按照项目工程需求发布子库代码,从而进一步地提高了发布效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种项目工程配置发布装置,该项目工程配置发布装置与上述实施例中项目工程配置发布方法一一对应。如图3所示,该项目工程配置发布装置包括存储模块11、拆分模块12、第一添加模块13、拉取模块14、递进合并模块15和打包发布模块16。各功能模块详细说明如下:
存储模块11,用于根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
拆分模块12,用于根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
第一添加模块13,用于在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
拉取模块14,用于将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
递进合并模块15,用于接收包含所述项目工程的环境启动队列的启动指令后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
打包发布模块16,用于通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
进一步地,所述存储模块包括:
搭建子模块,用于根据所述项目工程需求确定出所述前端主框架的类型后,调用出与所述前端主框架的类型对应的开发工具搭建所述前端主框架。
进一步地,所述第一添加模块包括:
生成子模块,用于在所述主库中执行文件生成命令后生成预设文件;所述预设文件包含与所述主库关联的所述子库的关键数据;
引入子模块,用于生成模块,用于在所述预设文件对应的项目工程的根目录下,创建用于管理所述项目工程的所有所述子库的预设目录,根据所述关键数据和所述预设目录执行子库添加命令后将所有所述子库一一引入至所述主库;
更新子模块,用于在所述主库中执行子库代码更新命令后,更新所述主库关联的所述子库的子库代码。
进一步地,所述更新模块还包括:
提交模块,用于在所述主库中执行子库代码提交命令后,将所述主库关联的所述子库切换到与所述子库对应的路径中,并将更新后的子库代码自所述路径提交到所述子库中。
进一步地,所述项目工程配置发布装置还包括:
打包引入模块,用于在所接收到所述项目工程的启动指令后,获取与所述项目工程关联的模块配置参数,根据所述模块配置参数确定与业务模块对应的路由,打包引入与各所述路由对应的所述业务模块的子库代码。
进一步地,所述打包发布模块还包括:
第二添加模块,用于获取打包发布后的打包文件,通过模块打包器为所述打包文件添加一个根据所述打包文件的文件内容生成的预设后缀名;
查询模块,用于通过所述预设后缀名在预设文件库中查询出与所述预设后缀名相同的历史后缀名;
提取模块,用于从所述预设文件库提取出与所述历史后缀名对应的历史打包文件;
增量打包发布模块,用于将所述打包文件与提取出的所述历史打包文件进行比较后,获取所述打包文件中的变更文件内容,并将所述变更文件内容进行增量打包发布。
关于项目工程配置发布装置的具体限定可以参见上文中对于项目工程配置发布方法的限定,在此不再赘述。上述项目工程配置发布装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储项目工程配置发布方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种项目工程配置发布方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中项目工程配置发布方法的步骤,例如图2所示的步骤S10至步骤S60。或者,处理器执行计算机程序时实现上述实施例中项目工程配置发布装置的各模块/单元的功能,例如图3所示模块S10至模块S60的功能。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中项目工程配置发布方法的步骤,例如图2所示的步骤S10至步骤S60。或者,计算机程序被处理器执行时实现上述实施例中项目工程配置发布装置的各模块/单元的功能,例如图3所示模块11至模块16的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种项目工程配置发布方法,其特征在于,包括:
根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
在接收包含所述项目工程的环境启动队列的启动指令之后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
2.根据权利要求1所述的项目工程配置发布方法,其特征在于,所述根据项目工程需求搭建项目工程的前端主框架,包括:
根据所述项目工程需求确定出所述前端主框架的类型后,调用与所述前端主框架的类型对应的开发工具搭建所述前端主框架。
3.根据权利要求1所述的项目工程配置发布方法,其特征在于,所述在所述主库中引入所述子库,包括:
在所述主库中执行文件生成命令后生成预设文件;所述预设文件包含与所述主库关联的所述子库的关键数据;
在所述预设文件对应的项目工程的根目录下,创建用于管理所述项目工程的所有所述子库的预设目录,根据所述关键数据和所述预设目录执行子库添加命令后将所有所述子库一一引入至所述主库;
在所述主库中执行子库代码更新命令后,更新所述主库关联的所述子库的子库代码。
4.根据权利要求3所述的项目工程配置发布方法,其特征在于,所述更新所述主库关联的所述子库的子库代码之后,还包括:
在所述主库中执行子库代码提交命令后,将所述主库关联的所述子库切换到与所述子库对应的路径中,并将更新后的子库代码自所述路径提交到所述子库中。
5.根据权利要求1所述的项目工程配置发布方法,其特征在于,所述在所述接收包含所述项目工程的环境启动队列的启动指令之后,还包括:
在所接收到所述项目工程的启动指令后,获取与所述项目工程关联的模块配置参数,根据所述模块配置参数确定与业务模块对应的路由,打包引入与各所述路由对应的所述业务模块的子库代码。
6.根据权利要求1所述的项目工程配置发布方法,其特征在于,所述将递进合并之后的所述子库代码打包发布,还包括:
获取打包发布后的打包文件,通过模块打包器为所述打包文件添加一个根据所述打包文件的文件内容生成的预设后缀名;
通过所述预设后缀名在预设文件库中查询出与所述预设后缀名相同的历史后缀名;
从所述预设文件库提取出与所述历史后缀名对应的历史打包文件;
将所述打包文件与提取出的所述历史打包文件进行比较后,获取所述打包文件中的变更文件内容,并将所述变更文件内容进行增量打包发布。
7.一种项目工程配置发布装置,其特征在于,包括:
存储模块,用于根据项目工程需求搭建项目工程的前端主框架后,将所述前端主框架存储至git代码仓库后,将所述git代码仓库作为主库;
拆分模块,用于根据所述项目工程需求和历史项目工程信息添加子库,并将所述项目工程的每一个所述子库与其子库代码进行拆分;
第一添加模块,用于在所述主库中引入所述子库,并为所述主库和所述子库添加环境分支,同时将所述子库的配置记录存储在所述主库中;所述配置记录是指为所述子库添加的环境分支的记录;
拉取模块,用于将自动更新脚本添加至所述主库中,通过所述自动更新脚本将所述主库切换到与当前更新环境对应的所述环境分支,并根据所述配置记录将所述子库切换到与所述主库相同的所述环境分支,从已被切换的所述环境分支对应的所述子库中拉取已被拆分的所述子库代码;
递进合并模块,用于在接收包含所述项目工程的环境启动队列的启动指令之后,通过所述主库和所述子库顺次进入所述环境启动队列中的每一个环境分支,顺次获取并递进合并与所述环境启动队列中的每一个所述环境分支对应的子库代码;
打包发布模块,用于通过所述自动更新脚本将所述项目工程初始化到与所述环境启动队列中对应的最后一个所述环境分支,并将递进合并之后的所述子库代码打包发布。
8.根据权利要求7所述的项目工程配置发布装置,其特征在于,所述存储模块包括:
搭建子模块,用于根据所述项目工程需求确定出所述前端主框架的类型后,调用出与所述前端主框架的类型对应的开发工具搭建所述前端主框架。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述项目工程配置发布方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述项目工程配置发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010916485.4A CN112015465B (zh) | 2020-09-03 | 2020-09-03 | 项目工程配置发布方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010916485.4A CN112015465B (zh) | 2020-09-03 | 2020-09-03 | 项目工程配置发布方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015465A CN112015465A (zh) | 2020-12-01 |
CN112015465B true CN112015465B (zh) | 2024-05-24 |
Family
ID=73515775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010916485.4A Active CN112015465B (zh) | 2020-09-03 | 2020-09-03 | 项目工程配置发布方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015465B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631563A (zh) * | 2020-12-09 | 2021-04-09 | 北京飞讯数码科技有限公司 | 基于框架的***开发方法、装置、计算机设备及存储介质 |
CN114416117B (zh) * | 2022-01-27 | 2023-05-09 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 一种代码模板管理方法及*** |
CN117519782A (zh) * | 2024-01-05 | 2024-02-06 | 浙江大华技术股份有限公司 | 基于分布式的工程管理方法、装置、设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包*** |
CN109522025A (zh) * | 2018-10-30 | 2019-03-26 | 深圳市小赢信息技术有限责任公司 | 一种基于git的代码发布*** |
CN110442371A (zh) * | 2019-08-05 | 2019-11-12 | 武汉斗鱼网络科技有限公司 | 一种发布代码的方法、装置、介质及计算机设备 |
WO2019232828A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 脚本部署方法、装置、计算机设备及存储介质 |
CN111190584A (zh) * | 2019-12-10 | 2020-05-22 | 平安健康保险股份有限公司 | Ehis-db***版本发布方法、装置、计算机设备和存储介质 |
-
2020
- 2020-09-03 CN CN202010916485.4A patent/CN112015465B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019232828A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 脚本部署方法、装置、计算机设备及存储介质 |
CN109522025A (zh) * | 2018-10-30 | 2019-03-26 | 深圳市小赢信息技术有限责任公司 | 一种基于git的代码发布*** |
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包*** |
CN110442371A (zh) * | 2019-08-05 | 2019-11-12 | 武汉斗鱼网络科技有限公司 | 一种发布代码的方法、装置、介质及计算机设备 |
CN111190584A (zh) * | 2019-12-10 | 2020-05-22 | 平安健康保险股份有限公司 | Ehis-db***版本发布方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112015465A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015465B (zh) | 项目工程配置发布方法、装置、计算机设备及存储介质 | |
CN108279932B (zh) | 一种移动终端动态配置用户界面方法和装置 | |
CN111125064B (zh) | 一种生成数据库模式定义语句的方法和装置 | |
US11210466B2 (en) | Multiple document editing using rules for a restricted language | |
EP3279816A1 (en) | Data analysis processing method, apparatus, computer device, and storage medium | |
US11720532B2 (en) | System and method for customized graphQL data-handling scripts | |
CN111857810A (zh) | 一种前端开发文件创建方法、装置及电子设备 | |
CN109460252A (zh) | 基于git的配置文件处理方法、装置和计算机设备 | |
CN112528619A (zh) | 页面模板文件生成方法、装置、电子设备和存储介质 | |
CN112988741A (zh) | 实时业务数据合并方法、装置及电子设备 | |
CN111258985A (zh) | 数据集群迁移方法及装置 | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
EP3425510A1 (en) | Automated testing method for application program user interface, electronic device, system, and storage medium | |
CN103729451A (zh) | 一种数据库的信息录入方法、装置及*** | |
CN113868249A (zh) | 一种数据存储方法、装置、计算机设备以及存储介质 | |
CN113535221A (zh) | 应用版本管理的方法和装置 | |
CN110580333A (zh) | 一种数据表处理方法、搜索方法、装置、设备和存储介质 | |
US11709770B2 (en) | System and method for implementing a one to many configuration management tool | |
CN115408047B (zh) | 一种版本发布方法、装置及电子设备 | |
CN111352637B (zh) | 部署机器学习***的方法、装置及设备 | |
KR102258241B1 (ko) | 개발과 유지보수를 지원하기 위한 서버 사이드 데이터 컴포넌트 및 데이터 컴포넌트의 실행 방법 | |
WO2022057698A1 (en) | Efficient bulk loading multiple rows or partitions for single target table | |
CN111279350B (zh) | 用于在服务管理应用接口中提供全球化特征的***和方法 | |
CN114168532A (zh) | 迁移脚本构建方法、装置、计算机设备及可读存储介质 | |
CN115757458A (zh) | 数据库文档生成方法、装置、计算机设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |