一种基于Git的版本风险管理把控方法、系统及存储介质
阅读说明:本技术 一种基于Git的版本风险管理把控方法、系统及存储介质 (Method, system and storage medium for managing and controlling version risk based on Git ) 是由 王锐旭 于 2021-08-11 设计创作,主要内容包括:本发明公开了一种基于Git的版本风险管理把控系统,包括:Git命令封装模块,用于封装、组装Git原生命令供业务模块使用;业务模块,用于组装合并代码全流程信息以及收集执行过程返回的信息;配置模块,用于保存参数配置以及给其他模块提供查询接口,避免将敏感的账号信息编码到逻辑层代码上;部署模块,用于从Git仓库拉取代码并部署至docker上;日志模块,用于统一系统运行过程中的日志打印格式;邮件模块,用于发送邮件通知使用者运行结果;扩展模块,用于扩展出检查代码是否存在漏过合并的提交。(The invention discloses a edition risk management control system based on Git, comprising: the Git command packaging module is used for packaging and assembling Git native commands for the service module to use; the business module is used for assembling and merging the full-flow information of the codes and collecting the information returned by the execution process; the configuration module is used for storing parameter configuration and providing query interfaces for other modules so as to avoid encoding sensitive account information onto a logic layer code; the deployment module is used for pulling the codes from the Git warehouse and deploying the codes to the docker; the log module is used for unifying the log printing formats in the system operation process; the mail module is used for sending a mail to inform a user of an operation result; and the expansion module is used for expanding whether the check code has submission which is missed in combination.)
技术领域
本发明属于互联网技术领域,涉及一种基于Git的版本风险管理把控方法、系统及存储介质。
背景技术
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,主要功能有集中管理代码档案,提供加锁避免不同用户提交冲突,提供不同版本源代码的比较等。
但是Git作为通用版本控制工具,虽然提供了多种版本问题的解决方案,但基于通用性的原因,很难做到与开发者的持续构建系统完全契合和融入。
发明内容
本发明的目的是提供一种基于Git的版本风险管理把控方法、系统及存储介质,具有对开发人员进行代码合并时可能出现的代码冲突、强行合并等高风险操作进行规避,提升代码管理质量的特点。
本发明所采用的技术方案是,一种基于Git的版本风险管理把控系统,包括:
Git命令封装模块,用于封装、组装Git原生命令供业务模块使用;
业务模块,用于组装合并代码全流程信息以及收集执行过程返回的信息;
配置模块,用于保存参数配置以及给其他模块提供查询接口,避免将敏感的账号信息编码到逻辑层代码上;
部署模块,用于从Git仓库拉取代码并部署至docker上;
日志模块,用于统一系统运行过程中的日志打印格式;
邮件模块,用于发送邮件通知使用者运行结果;
扩展模块,用于引用成熟接口扩展其他功能。
本发明的特点还在于:
一种基于Git的版本风险管理把控方法,具体按照以下步骤实施:
步骤1、开发者调起代码合并进程,由业务模块和Git命令封装模块执行:本风险管理把控系统自动从Git上克隆出工作缓存路径,供后续执行检查逻辑使用;
步骤2、检测过程,由业务模块和配置模块执行:分别进入开发分支和主干,获取各自最新的提交记录列表,通过对Git中的git log命令的--no-merge参数控制,筛选掉因合并代码产生且无实际提交的提交记录;
步骤3、对比开发分支与主干的最新提交记录,检测开发分支是否包含主干的所有提交记录,否则中断操作;
步骤4、检测通过则进行合并过程:将开发分支上的代码合并至主干,并收集项目名、开发分支名称、成功与否、目标部署环境等相关信息,供后续流程使用;
步骤5、若合并成功则由部署模块进行部署:远程调起Jenkins中的构建进程,自动对项目进行打包部署至docker镜像中,并启动为容器,否则返回错误信息;
步骤6、将版本风险管理把控系统嵌套到持续集成工具Jenkins当中,提供批量操作的特性和图形化启动的便利。
步骤1-6中的输入与输出都经由版本风险管理把控系统处理,对外屏蔽所有敏感信息打印。
权限账号通过配置文件进行配置,配置文件存放在Linux服务器中,只给予特定账号读权限,保证不被篡改,最大限度降低泄露风险。
一种计算机可读存储介质,包括当由计算机系统执行时,执行基于Git的版本风险管理把控方法的计算机可执行指令。
本发明的有益效果是:
通过封装Git原生命令进行代码管理,提供集成批量处理、冲突检测、自动合并、通知用户的工具,提高开发人员代码管理的准确性和便捷性,并且通过提供图形化界面入口,降低了学习成本。通过python把合并代码的一系列操作封装起来,将零散的操作合成为统一的入口和流程,屏蔽了敏感信息的输入和输出,提高了便利性和隐蔽性。
附图说明
图1为本发明系统流程图;
图2为本发明的模块关系原理图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
一种基于Git的版本风险管理把控系统,包括:
Git命令封装模块,用于封装、组装Git原生命令供业务模块使用;
业务模块,用于组装合并代码全流程信息以及收集执行过程返回的信息;
配置模块,用于保存参数配置以及给其他模块提供查询接口,避免将敏感的账号信息编码到逻辑层代码上;
部署模块,用于从Git仓库拉取代码并部署至docker上;
日志模块,用于统一系统运行过程中的日志打印格式;
邮件模块,用于发送邮件通知使用者运行结果;
扩展模块,用于引用成熟接口扩展其他功能。
一种基于Git的版本风险管理把控方法,具体按照以下步骤实施:
步骤1、开发者调起代码合并进程,由业务模块和Git命令封装模块执行:本风险管理把控系统自动从Git上克隆出工作缓存路径,供后续执行检查逻辑使用;
步骤2、检测过程,由业务模块和配置模块执行:分别进入开发分支和主干,获取各自最新的提交记录列表,通过对Git中的git log命令的--no-merge参数控制,筛选掉因合并代码产生且无实际提交的提交记录;
步骤3、对比开发分支与主干的最新提交记录,检测开发分支是否包含主干的所有提交记录,否则中断操作;
步骤4、检测通过则进行合并过程:将开发分支上的代码合并至主干,并收集项目名、开发分支名称、成功与否、目标部署环境等相关信息,供后续流程使用;
步骤5、若合并成功则由部署模块进行部署:远程调起Jenkins中的构建进程,自动对项目进行打包部署至docker镜像中,并启动为容器,否则返回错误信息;
步骤6、将版本风险管理把控系统嵌套到持续集成工具Jenkins当中,提供批量操作的特性和图形化启动的便利。
步骤1-6中的输入与输出都经由版本风险管理把控系统处理,对外屏蔽所有敏感信息打印。
权限账号通过配置文件进行配置,配置文件存放在Linux服务器中,只给予特定账号读权限,保证不被篡改,最大限度降低泄露风险。
一种计算机可读存储介质,包括当由计算机系统执行时,执行基于Git的版本风险管理把控方法的计算机可执行指令。
实施例
配置服务器:Linux服务器一台或多台;
在Linux服务器上部署相关环境:Git,Jenkins,Python,邮箱等,如果中配置了多台服务器,则还需保证各服务器之间有互相访问权限;
安装版本风险管理把控系统中使用到的Python依赖库;
将版本风险管理把控系统整体代码复制至Jenkins的脚本目录当中,并且配置访问权限;
修改版本风险管理把控系统当中的配置文件,主要涉及Git账号密码,服务器账号密码,邮箱账号密码,Jenkins账号密码等所需权限的配置;
Jenkins当中配置图形化、参数化界面入口,将执行过程定向到版本风险管理把控系统的外部调用接口上;
上述步骤完成后,则由开发或测试人员从Jenkins上发起合并代码进程,自动检测并执行合并代码—构建项目—部署项目的过程。
本发明对Git合并原理以及Python对原生命令再封装进行整合,使得原本割裂、需要每个步骤单独人工操作的版本管理工作统一到持续集成devops体系当中,具有一定的信息安全保护,提升了开发人员和测试人员的工作效率。