公开/公告号CN113127052A
专利类型发明专利
公开/公告日2021-07-16
原文格式PDF
申请/专利权人 欧冶云商股份有限公司;
申请/专利号CN202110471164.2
申请日2021-04-29
分类号G06F8/71(20180101);G06F8/41(20180101);G06F21/31(20130101);G06F21/62(20130101);G06F21/60(20130101);H04L29/06(20060101);G06Q10/10(20120101);
代理机构31225 上海科盛知识产权代理有限公司;
代理人林君如
地址 201999 上海市宝山区漠河路600弄1号5层A501-A507室
入库时间 2023-06-19 11:52:33
技术领域
本发明涉及计算机技术领域,尤其是涉及一种基于多目标文件托管的项目信息交付方法。
背景技术
随着目前企业内信息化程度的不断增加,软件项目产品的不断累积,也为软件项目产品的持续交付提出了更多的要求。不同的软件项目产品交付涉及到环境差异、代码仓库差异、安全因素等影响,现有交付模式和交付工具往往只能关注特定的几个影响点,存在缺陷如下:
1、多环境同时管理,存在网络安全问题,不符合环境隔离原则;
2、可支持配置动态修改,但托管配置文件类型支持范围有局限性;
3、多环境托管文件配置key-val对繁琐,效率低下;
4、托管系统存在一定的权限相关安全漏洞;
5、发布进度及关键进度情况不详,缺乏履历信息支持。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于多目标文件托管的项目信息交付方法。
本发明的目的可以通过以下技术方案来实现:
一种基于多目标文件托管的项目信息交付方法,该方法包括如下步骤:
S1:创建发布任务,获取项目配置属性,根据项目代码库信息获取项目代码文件。具体步骤包括:
S101:判断代码库类型,配置项目代码库信息;若为svn方式的代码库,则配置对该代码库的url访问地址和访问所需的认证信息,若为git方式的代码库,则配置对该代码库的url访问地址、访问所需的认证信息以及分支信息。
S102:根据配置后的项目代码库信息,初始化代码库对应的拉取客户端,拉取客户端拉取代码文件到指定目录,同时生成对应履历信息。
若代码库为svn方式的代码库,则初始化svn对应的拉取客户端,拉取项目工程文件,若代码库为git方式的代码库,则初始化git客户端,拉取指定分支项目工程文件,拉取文件后生成项目文件目录,同时生成对应的拉取履历信息和文件履历信息。
S2:获取托管配置属性,根据项目代码库信息获取项目托管代码文件。具体步骤包括:
S201:判断代码库类型,配置托管文件代码库信息;若为svn方式的代码库,则配置对该代码库的url访问地址和访问所需的认证信息,若为git方式的代码库,则配置对该代码库的url访问地址、访问所需的认证信息以及分支信息。
S202:根据托管文件的代码库信息,初始化对应的拉取客户端,拉取客户端拉取托管文件到指定的临时目录。
若代码库为svn方式的代码库,则初始化svn对应的拉取客户端,拉取托管文件,若代码库为git方式的代码库,则初始化git客户端,拉取指定分支托管文件,拉取文件后生成项目托管文件临时目录,同时生成对应的拉取履历信息和文件履历信息。
S3:获取项目动态路径配置,对托管文件进行替换。具体地,针对不同的项目文件自定义配置项目动态路径信息,将临时目录中的文件,对项目文件进行同路径同文件名覆盖,完成后,将对应的配置文件临时目录进行清理。
S4:获取项目打包编译命令,获得项目产物。
S5:获取项目发布脚本,将产物推送目标机器后,运行脚本进行发布。进一步地,将生成的产物文件,推送至指定的目标机器中,获取发布脚本,目标机器运行相关该脚本,同时监控相关状态信息,判断发布任务完成状态后,生成并展示发布履历信息以及任务整体信息。
进一步地,通过scp命令及上下文中的路径信息将生成的产物文件,推送至指定的目标机器中。
本发明提供的基于多目标文件托管的项目信息交付方法,相较于现有技术至少包括如下有益效果:
一、各环境独立部署,利用所属网段间的不可访问性避免网络安全问题,方便权限管理,提升系统整体的安全性;
二、本发明在获取项目配置属性和托管文件属性后分别对代码库进行判断,以针对不同代码库获取不同的拉取文件及目录,实现了项目工程代码和托管文件代码库可同时支持git和svn的功能,配置更加灵活;
三、配置托管在项目产物生成前,采用同路径同名文件覆盖方式,可支持多种文件类型的配置托管,同时避免了现有繁琐的键值对配置,简化操作,更加灵活;
四、本发明通过采用多部署方式支持,可同时支持项目单独发布,实现批量灵活发布、优雅发布等;
五、在获取项目工程文件和托管文件时,通过配置url访问地址和访问所需的认证信息,对配置的用户名密码进行认证,并对通过后访问的url进行授权校验,即依托git和svn的安全认证及权限控制,能够提升文件的安全性和隐私性;
六、本发明方法会在发布过程中对关键步骤进行履历信息的存储,通过对履历信息的判断,实现发布进度进行跟踪展示,并能够实时查询多履历信息,友好支撑发布人员掌握发布任务状态,便于任务异常状态的排查。
附图说明
图1为实施例中基于多目标文件托管的项目信息交付方法的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
实施例
如图1所示,本发明涉及一种基于多目标文件托管的项目信息交付方法,该方法以多环境部署的方式,依托网络隔离提升系统安全性。多代码库支持方式灵活配置,配置文件整体覆盖的方式,简化操作。该方法具体包括如下步骤:
步骤一、创建发布任务,获取项目信息配置属性,根据项目代码库信息获取项目代码文件。具体地:
1.1)获取项目信息:项目信息在节点管理项目中进行维护,配置的代码库信息有svn和git两种类型,具体为配置代码库的url访问地址、访问所需的认证信息,若为git仓库,则需额外配置分支信息。发布任务执行时,通过Rest请求获取配置url访问地址和访问所需的认证信息,用于对配置的用户名密码进行认证,通过后对访问的url进行授权校验,以确保工程文件的安全性和隐私性。
1.2)项目代码获取:根据配置后的项目的代码库信息,利用maven仓库里映入的公用组件,初始化对应的拉取客户端,拉取客户端拉取代码文件到指定目录。同时生成对应履历信息。拉取的代码文件位于配置的文件目录下,同一项目下可保存多份项目产物,可通过日期等方式命名文件名来进行区分,一次进行项目产物历史记录的备份。同时,项目的全量路径名会利用ThreadLocal技术保存在当前线程的上下文环境中,方便后续处理。最后生成对应的拉取履历信息和文件履历信息。
基于上述内容,配置的代码库信息支持svn和git两种方式的代码库信息的具体内容为:
首先对代码库类型进行判断,若是svn方式的代码库,则初始化svn客户端,然后拉取项目工程文件,若为git方式的代码库,则初始化git客户端,拉取指定分支项目工程文件。拉取文件后生成项目文件目录,然后获取项目托管文件配置属性。
步骤二、获取托管配置信息,根据项目代码库信息获取项目托管代码文件。具体地:
2.1)获取托管文件信息:系统配置托管文件代码库信息,该托管文件代码库信息需同样支持svn和git两种方式,配置的托管文件代码库信息需配置代码库的url地址、访问所需的认证信息,对于git仓库需额外配置分支信息。同样地,对配置的用户名密码进行认证,并在通过后对访问的url进行授权校验,可确保工程文件的安全性和隐私性。
2.2)托管文件获取:根据托管文件的代码库信息,初始化对应的拉取客户端,拉取客户端拉取托管文件到指定的临时目录。拉取的文件会位于临时目录下,同一项目只会有一份。同时配置文件的全量名路径也会保存到当前线程的上下文环境中即步骤二同样需要先判断代码库的类型,若为svn方式的代码库,则初始化svn客户端,然后拉取托管文件,若为git方式的代码库,则初始化git客户端,拉取指定分支托管文件。拉取文件后生成项目托管文件临时目录,然后获取动态路径配置。
步骤三、获取项目动态路径配置,将托管文件进行替换。
3.1)获取动态路径配置信息:系统配置项目动态路径信息,此动态路径信息可针对不同的项目文件进行自定义配置,满足不同项目的特定需求。
3.2)将托管文件进行替换:将临时目录中的文件,对项目文件进行同路径同文件名覆盖。具体地,根据上下文中的全量名路径信息,进行同名文件覆盖。完成后,将对应的配置文件临时目录进行清理。
步骤四、获取项目打包编译命令,获得项目产物。
系统配置打包编译命令,通过在服务器环境中部署的maven组件运行对应脚本对项目代码文件进行打包编译,同时生成对应的编译履历信息。
步骤五、发布产物。
通过scp命令及ThreadLocal中的路径信息,将生成的产物文件,推送到指定的目标机器中。获取配置的发布脚本,目标机器运行相关该脚本,同时通过项目的检活接口监控相关状态信息,判断发布任务完成状态。最后生成发布履历信息以及任务整体信息展示。产物推送目标机器对于多节点项目可根据项目节点配置的机器信息,如beta节点和非beta节点的区分,来实现支持优雅发布和灰度发布方式,优雅发布指在发布过程中优先发送beta节点,无异常情况下发布非beta节点。而灰度发布则只发布beta节点。
本发明方法中各环境独立部署,利用所属网段间的不可访问性避免网络安全问题,方便权限管理,提升系统整体的安全性;在获取项目配置属性和托管文件属性后分别对代码库进行判断,以针对不同代码库获取不同的拉取文件及目录,实现了项目工程代码和托管文件代码库可同时支持git和svn的功能,配置更加灵活。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
机译: 基于触摸操作提供文件夹项目信息的方法和装置
机译: 基于触摸操作提供文件夹项目信息的方法和装置
机译: 基于触摸操作提供文件夹项目信息的方法和装置