一种数据监控和代码自动生成与部署的系统及方法

文档序号:10724549阅读:555来源:国知局
一种数据监控和代码自动生成与部署的系统及方法
【专利摘要】本发明公开了一种数据监控和代码自动生成与部署的系统及方法,能够将持续集成子系统分散的指标数据自动提取,集中显示,有效地把指标数据纳入监管,更好地实现一站式数据监控。能够自动生成新建模块的框架代码,有效地节约新建模块的框架搭建时间,增进效率,同时可以保证软件产品的框架代码的一致性,易于开发维护。进一步,自动化部署方法能够节约项目的人工部署时间,增进开发和测试效率,同时其中的Linux脚本模板能够帮助开发人员更容易地处理安装包的部署,以及配置文件或依赖文件的拷贝和执行。
【专利说明】
一种数据监控和代码自动生成与部署的系统及方法
技术领域
[0001]本发明涉及一种数据监控和代码自动生成与部署的系统及方法,尤其涉及持续集成平台的各子系统的数据监控与软件开发代码自动生成框架与自动部署的系统及方法。
【背景技术】
[0002]目前在软件开发领域,软件开发过程包括软件开发采用的方法和持续集成过程。其中敏捷方法被全球大型软件公司普遍采用,敏捷开发方法是指一系列的软件开发中的原则与方法,它以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,其特点是能够快速响应需求,细化软件功能。在敏捷开发方法中为了提高软件开发项目组的工作效率,减少软件开发中出现集成错误导致开发延误的风险,软件开发普遍会使用持续集成系统(Cl)来帮助开发项目组控制风险。
[0003]软件开发持续集成系统包含的子系统有代码版本控制与存储子系统GitLab,代码编译子系统jenkins,代码质量管理子系统Sonar,软件安装包存储子系统Nexus。这些子系统一般由开源软件搭建而成,这就使得各个子系统间通信和数据交换不够灵活,尤其是涉及软件重要衡量标准的数据独立存储于各个子系统,这种数据不集中的情况极大影响数据的直观性,因为软件开发项目组和监管层必须依靠人工到各个子系统查看和抄写数据,将数据汇总和手动存储。这种情况必然造成人力的浪费。
[0004]同时在软件开发过程中初始软件框架的搭建一般依赖技术熟练的软件架构师搭建,然后再把代码上传到代码版本控制与存储子系统GitLab中,然后再到Jenkins中手动建立Job,这样就耗费很多人力工作。由此可以表明目前缺少自动生成代码框架然后自动与持续集成各个子系统建立工作空间的方法。
[0005]进一步,在持续集成系统中,自动部署功能配置较为复杂,同时如果涉及到复杂工程,例如涉及软件安装包(War包)加上配置文件再加上脚本、图片等其他依赖的文件的话,自动部署就需要用户编写复杂脚本来达到目的,从而导致浪费人力。并且持续集成系统一般只能部署最近编译成功的项目安装包,而无法记录某个软件项目所有历史版本的安装包。
[0006]因此,在软件开发整体周期中需要解决的问题有:自动化地提取持续集成子系统数据纳入监管,自动化生成软件开发代码框架,便利地实现自动部署,存储历史版本安装包用于管理或部署。

【发明内容】

[0007]本发明的目的在于针对现有技术的不足,提供一种数据监控和代码自动生成与部署的系统及方法,目的是解决软件开发持续集成过程中数据无法集中显示,软件开发代码框架不能自动生成,自动部署功能难于配置且无法部署历史软件安装包的问题。
[0008]本发明的目的是通过以下技术方案来实现的:一种数据监控和代码自动生成与部署的系统,该系统包括:
[0009](I)模块信息管理模块:对项目的各个模块信息进行管理,包括新建模块、编辑模块、删除模块;并对项目模块的属性进行管理,包括模块属性的新建、编辑、删除、查询。
[0010](2)数据自动提取模块:自动提取持续集成系统中各个子系统数据;所述子系统包括:代码版本控制与存储子系统GitLab、代码编译子系统Jenkins、代码质量管理子系统Sonar。提取方式为从GitLab中得到代码提交数量和代码提交状态的访问地址,从Jenkins中得到代码编译健康状态,从Sonar得到代码质量评审RCI (规则符合度)分数。
[0011](3)代码自动生成模块:在模块信息管理模块中如果有新建模块A,则利用本模块自动生成新建模块A的代码并上传代码。代码的自动生成具体为:选用软件的开发框架,生成代码编译工具Maven可解析的Archetype框架,然后用Maven命令来执行代码生成动作。代码的上传具体为:将生成的代码用GitLab接口上传到GitLab服务器中,并在代码编译子系统Jenkins中创建编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系统Sonar中新建模块A的代码质量报告地址。
[0012](4)自动化部署模块:在Web前端建立自动化部署接口,用户通过接口编写部署步骤。部署步骤包含将安装包部署到目标机器的Tomcat容器中,拷贝配置文件和其他依赖文件到部署的目标机器中;其中,将安装包部署到目标机器的Tomcat容器中的实现方法为:把仓库中存储的软件安装包下载到本地,然后再利用Tomcat的远程部署Manage功能来把软件安装包部署到目标机器的Tomcat中;拷贝配置文件和其他依赖文件到部署的目标机器中的实现方法为:编写好Linux中的脚本模板,脚本模板中的内容包括以用户名和密码通过SSH登录目标机器B,拷贝文件A到目标机器B中,其中的文件A是配置文件或其他依赖文件。最后本模块将脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行组织。封装完成后,本模块将调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最后实现项目模块的自动部署。
[0013]进一步地,该系统还包括数据存储模块,该模块将数据自动提取模块提取的指标数据存储于数据库中。指标数据可采用(key ,value)对方式存储。
[0014]进一步地,该系统还包括数据显示和报表模块,该模块负责把数据自动提取模块获取的数据在web前端进行显示,同时提供报表生成和下载功能,方便管理人员获取报告和统计。
[0015]进一步地,该系统还包括项目信息管理模块,此模块负责项目信息的管理,包括项目属性的新建、编辑、删除、查询功能。
[0016]进一步地,所述代码自动生成模块中采用的开发框架为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用SpringData和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。
[0017]进一步地,所述自动化部署模块中,如果文件A的格式也是Linux脚本文件,那么脚本模板调用执行文件A。
[0018]进一步地,该系统包括项目权限管理模块,在用户登录本系统前,用户需要向系统管理员申请项目权限,以便使用本系统的各个模块。因此项目权限管理模块负责配置管理项目的编辑访问权限,权限控制方式为用角色标定访问权限,PM角色为项目经理,其权限可以访问和完全控制项目属性和模块属性。DEV角色为开发人员,QA角色为测试人员,DEV和QA的权限拥有访问但不能更改项目属性权限。
[0019]—种数据监控和代码自动生成与部署的方法,其特征在于,包括以下步骤:
[0020](I)构建项目Maven Arche type 框架。
[0021](2)通过模块信息管理模块新建模块A,然后用代码自动生成模块对新建模块A进行代码自动化生成工作,包括以下子步骤:
[0022](2.1)根据步骤I构建的Maven Archetype框架,通过代码编译工具Maven编译框架得到具体的代码。
[0023]( 2.2 )通过G it Lab接口把代码上传到G it Lab中存储,再通过Jenkins接口在Jenkins中建立编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系统Sonar中新建模块A的代码质量报告地址。
[0024](2.3)代码自动生成模块将新建模块A的GitLab存储地址和Jenkins Job地址以及Sonar中的代码质量报告地址存储于数据库中。
[0025](3)通过数据自动提取模块提取数据。在数据库中查询通过步骤2存入的模块属性信息,得到模块的GitLab代码存储地址,Jenkins中对应的Job地址,Sonar中的代码质量报告地址。然后根据地址和各个子系统数据提取接口分别提取得到GitLab中代码提交数量和代码提交状态的访问地址,Jenkins中的模块的Job的代码编译健康状态数据,Sonar中的代码质量评审RCI(规则符合度)分数。
[0026](4)用户对项目模块进行代码开发,把新开发的代码更新到该模块所在的GitLab存储地址。
[0027](5)项目模块所对应的Jenkins编译Job自动发现代码的更新,开始编译代码,编译完成后把安装包带上版本信息上传到Nexus中,形成历史软件安装包。
[0028](6)通过自动化部署模块提供的Web前端自动化部署接口编写部署步骤,包括以下子步骤:
[0029](6.1)将安装包部署到目标机器的Tomcat容器中:把步骤5中存储的历史软件安装包下载到本地,然后再利用Tomcat的远程部署Manage功能来把历史软件安装包部署到目标机器的Tomcat中。
[0030](6.2)拷贝配置文件和其他依赖文件到部署的目标机器中:编写好Linux中的脚本模板,脚本模板中的内容包括:用户名和密码通过SSH登录目标机器B、拷贝文件A到目标机器B中;其中的文件A为配置文件或其他依赖文件。
[0031 ] (6.3)将脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行组织。
[0032](6.4)调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最终实现项目模块的自动部署。
[0033]进一步地,所述步骤I中,代码框架组成为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用Spring Data和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。
[0034]进一步地,该方法还包括将步骤2所得数据存储于数据库中的步骤,存储方式采用(key,value)对方式存储,数据库采用MySQL,存储弹性可扩展。
[0035]本发明的有益效果是:能够将持续集成子系统分散的指标数据自动提取,集中显示,有效地把指标数据纳入监管,更好地实现一站式数据监控。能够自动生成新建模块的框架代码,有效地节约新建模块的框架搭建时间,增进效率,同时可以保证软件产品的框架代码的一致性,易于开发维护。进一步,自动化部署方法能够节约项目的人工部署时间,增进开发和测试效率,同时其中的Linux脚本模板能够帮助开发人员更容易地处理安装包的部署,以及配置文件或依赖文件的拷贝和执行。
【附图说明】
[0036]图1是本发明一种基于持续集成的数据监控和代码自动生成与部署的系统框架图。
[0037]图2是本发明数据监控方法示意图。
[0038]图3是本发明代码自动生成方法示意图。
[0039]图4是本发明自动化部署方法示意图。
【具体实施方式】
[0040]下面结合附图和具体实施例对本发明作进一步详细说明。
[0041]实施例1:一种数据监控和代码自动生成与部署的系统,此系统的组成包括:
[0042](I)数据自动提取模块,此模块为本发明主要模块之一,它的功能是自动提取持续集成系统中各个子系统数据。这些子系统包括:代码版本控制与存储子系统GitLab,代码编译子系统Jenkins,代码质量管理子系统Sonar。提取方式为用各子系统接口来访问各个子系统,分析获取的数据格式,从GitLab中得到代码提交数量和代码提交状态的访问地址,从Jenkins中得到代码编译健康状态,从Sonar得到代码质量评审RCI (规则符合度)分数。
[0043](2)数据存储模块,此模块负责将数据自动提取模块提取的指标数据存储于MySQL数据库中。其中指标数据采用(key,Value)对方式存储,存储特点是弹性可扩展。
[0044](3)数据显示和报表模块,此模块负责把数据自动提取模块获取的数据在web前端进行显示,同时提供报表生成和下载功能,方便管理人员获取报告和统计。
[0045](4)项目信息管理模块,此模块负责项目信息的管理,包括项目属性的新建、编辑、删除、查询功能。
[0046](5)模块信息管理模块,此模块可以对项目的各个模块信息进行管理,包括新建模块,编辑模块,删除模块。进一步地,此模块还负责模块属性的新建、编辑、删除、查询功能。
[0047](6)代码自动生成模块,此模块为本发明主要模块之一,负责自动生成新建模块的框架代码,在模块信息管理模块中如果有新建模块A,则可以利用本模块来做A的代码自动生成工作,所谓代码自动生成就是选用软件的开发框架,生成代码编译工具Maven可解析的Archetype框架,然后用Maven命令来执行代码生成动作。本发明采用的开发框架为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用Spring Data和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。代码自动生成模块还负责将生成的代码用GitLab接口上传到GitLab服务器中,并在代码编译子系统Jenkins中创建编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系统Sonar中新建模块A的代码质量报告地址,最后代码自动生成模块将把新建模块A的GitLab存储地址和Jenkins Job地址以及Sonar中的代码质量报告地址以邮件的方式发送给项目管理员。
[0048](7)自动化部署模块,此模块为本发明主要模块之一,此模块功能是自动化部署软件安装包。实现的方法是在Web前端建立自动化部署接口,用户可以通过接口方便地编写部署步骤。部署步骤包含将安装包部署到目标机器的Tomcat容器中,拷贝配置文件和其他依赖文件到部署的目标机器中;其中,将安装包部署到目标机器的Tomcat容器中的实现方法为:把Nexus仓库中存储的软件安装包(War包)下载到本地,然后再利用Tomcat的远程部署Manage功能来把War包部署到目标机器的Tomcat中;拷贝配置文件和其他依赖文件到部署的目标机器中的实现方法为:编写好Linux中的expect脚本模板,脚本模板中的内容包括以用户名和密码通过SSH登录目标机器B,拷贝文件A到目标机器B中,其中的文件A是配置文件或其他依赖文件,如果文件A的格式也是Linux脚本文件,那么脚本模板还具有调用执行文件A的功能。最后本模块将expect脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行组织。封装完成后,本模块将调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最后实现项目模块的自动部署。
[0049](8)项目权限管理模块,在用户登录本系统前,用户需要向系统管理员申请项目权限,以便使用本系统的各个模块。因此项目权限管理模块负责配置管理项目的编辑访问权限,权限控制方式为用角色标定访问权限,PM角色为项目经理,其权限可以访问和完全控制项目属性和模块属性。DEV角色为开发人员,QA角色为测试人员,DEV和QA的权限拥有访问但不能更改项目属性权限。
[0050]应用上述系统的数据监控和代码自动生成与部署的方法,包括以下步骤:
[0051 ] (I)构建项目Maven Archetype框架。此框架按照Maven Archetype框架标准格式编写,选用的代码具体框架组成为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用Spring Data和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。
[0052](2)通过模块信息管理模块新建模块A,然后用代码自动生成模块对新建模块A进行代码自动化生成工作,包括以下子步骤:
[0053](2.1)填写模块名称,ID号,选用步骤I所得到的Maven Archetype框架,通过代码编译工具Maven编译框架得到具体的代码。
[0054]( 2.2 )通过G it Lab接口把代码上传到G it Lab中存储,再通过Jenkins接口在Jenkins中建立编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系统Sonar中新建模块A的代码质量报告地址。
[0055](2.3)代码自动生成模块将把新建模块A的GitLab存储地址和Jenkins Job地址以及Sonar中的代码质量报告地址存储于数据库中,之后以发送邮件的方式通知项目管理员。
[0056](3)通过数据自动提取模块提取数据。在数据库中查询模块属性信息,此属性信息是通过步骤2存入数据库中的。查询之后,得到模块的GitLab代码存储地址,Jenkins中对应的Job地址,Sonar中的代码质量报告地址。然后根据地址和各个子系统数据提取接口分别提取得到GitLab中代码提交数量和代码提交状态的访问地址,Jenkins中的模块的Job的代码编译健康状态数据,Sonar中的代码质量评审RCI(规则符合度)分数。
[0057](4)通过数据存储模块将步骤2所得数据存储于数据库中,其中存储方式采用(key,value)对方式存储,数据库采用MySQL,存储特点是弹性可扩展。
[0058](5)通过数据显示和报表模块在Web前端显示步骤3中存储的数据,同时提供下载报表功能。
[0059](6)用户对项目模块进行代码开发。开发达到一定时间段,可以是一天也可以是一小时,之后用户把新开发的代码更新到该模块所在的GitLab存储地址。
[0060](7)步骤6中项目模块所对应的Jenkins编译Job自动发现代码的更新,开始编译代码,编译完成后把安装包(War包)带上版本信息上传到Nexus中,形成历史软件安装包,供步骤8的自动化部署使用。
[0061](8)通过自动化部署模块提供的Web前端自动化部署接口编写部署步骤。部署步骤包含将安装包部署到目标机器的Tomcat容器中,拷贝配置文件和其他依赖文件到部署的目标机器中,其中,将安装包部署到目标机器的Tomcat容器中的实现方法为:把步骤7中存储的历史软件安装包(War包)下载到本地,然后再利用Tomcat的远程部署Manage功能来把War包部署到目标机器的Tomcat中。拷贝配置文件和其他依赖文件到部署的目标机器中的实现方法为:编写好Linux中的expect脚本模板,脚本模板中的内容包括1、用户名和密码通过SSH登录目标机器12、拷贝文件A到目标机器B中,其中的文件A为配置文件或其他依赖文件。3、如果文件A也是一个Linux脚本文件,那么脚本模板还具有调用执行文件A的功能。最后本模块将expect脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行组织。封装完后,本模块将调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最后实现项目模块的自动部署。
[0062]实施例2:如图1所示,一种基于持续集成的数据监控和代码自动生成与部署的系统,包括:
[0063]数据自动提取模块,此模块与持续集成系统三个子系统相连,它的功能是自动提取持续集成系统中各个子系统数据。在图1中,数据自动提取模块从图右侧所示的持续集成系统的三个子系统:GitLab ,Jenkins,Sonar中自动提取数据。
[0064]数据存储模块,此模块把数据自动提取模块提取到的指标数据存储于MySQL数据库中。其中指标数据采用(key,Value)对方式存储,存储特点是弹性可扩展。
[0065]数据显示和报表模块,此模块负责把数据存储模块所存储数据在web前端进行显示,同时提供报表生成和下载功能,方便管理人员获取报告和统计。
[0066]项目信息管理模块,此模块负责项目信息的管理,包括项目属性的新建、编辑、删除、查询功能。
[0067]模块信息管理模块,此模块可以对项目的各个模块信息进行管理,包括新建模块,编辑模块,删除模块。进一步地,此模块还负责模块具体属性的新建、编辑、删除、查询功能。
[0068]代码自动生成模块,与图1中的GitLab和Jenkins相联系,负责自动生成新建模块的框架代码。然后把框架代码上传到GitLab中,再通过Jenkins接口,在Jenkins中创建编译任务Job,然后调用Jenkins编译构建功能,得到Sonar代码质量报告地址。
[0069]自动化部署模块,此模块功能是自动化部署软件安装包。此模块与软件安装包存储子系统Nexus和代码编译子系统Jenkins相连。此模块把图中Nexus存储的历史软件安装包(War包)下载到本地,然后再利用Tomcat的远程部署Manage功能来把War包部署到目标机器的Tomcat中。然后此模块还提供编写好的Linux中的expect脚本模板给用户填写,之后再把脚本模板封装到XML文件中,用于更新图1中的Jenkins中的Job配置,然后再执行Job的触发功能,最后实现自动化部署功能。
[0070]项目权限管理模块,在用户登录本系统前,用户需要向系统管理员申请项目权限,以便使用本系统的各个模块。
[0071]如图2中所示,本发明的数据监控方法如下:
[0072]持续集成系统的各个子系统和本发明的数据获取模块和解析模块共同使用一样的JSON数据格式,根据各个子系统的数据访问接口,以定时任务方式自动提取各个子系统的数据,之后进入数据解析得到指标数据:Gi tLab中的代码提交数量,代码提交状态的访问地址,Jenkins中的代码编译健康状态,Sonar中的代码质量评审RCI (规则符合度)分数。然后,将数据整理后按(key ,value)成对地存入MySQL数据库系统,最后Web前端从数据库中得到数据,将数据显示给用户。
[0073]如图3中所示,本发明的代码自动生成方法具体步骤如下:
[0074](I)在前面所述系统的模块信息管理模块中新建模块A,然后编按照图3左侧框中示意图搭建Maven Archetype框架,此框架采用的技术架构层次为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用SpringData和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。
[0075](2)当Maven Archetype框架搭建好后,通过本发明的代码自动生成模块来自动生成代码。过程是:首先用Maven编译图3左侧的Maven Archetype框架,在服务器本地得到框架代码。
[0076](3)通过Gi tLab接口把框架代码上传到Gi tLab中存储,再通过Jenkins接口在Jenkins中建立编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系统Sonar中新建模块A的代码质量报告地址。
[0077](4)代码自动生成模块将新建模块A的GitLab存储地址和Jenkins Job地址以及Sonar中的代码质量报告地址存储于数据库中,再发送邮件通知项目模块管理员。
[0078]如图4所示,本发明的自动化部署方法具体实施过程包含:
[0079](I)代码开发,用户对项目模块进行代码开发,把新开发的代码更新到该模块所在的Gi tLab存储地址。
[0080](2)项目模块所对应的Jenkins编译Job自动发现代码的更新,开始编译代码,编译完成后把安装包带上版本信息上传到Nexus中,形成历史软件安装包。
[0081](3)通过自动化部署模块提供的Web前端自动化部署接口编写部署步骤,包括以下子步骤:
[0082](3.1)图4中的Nexus仓库存储着诸多模块的历史版本软件安装包,自动化部署模块把这些历史安装包信息取出,显示给用户,用户选择好某个软件安装包后由自动化部署模块下载到本地,然后再利用Tomcat的远程部署Manage功能来把War包部署到目标机器的Tomcat容器中。
[0083](3.2)通过Web接口编写Linux中的expect脚本模板,脚本模板包括以下内容:SSH登录、拷贝文件、执行脚本。所述SSH登录是以用户名和密码通过SSH登录目标机器,所述拷贝文件是拷贝配置文件和其他依赖文件到部署的目标机器中,如果拷贝的文件中包含Linux脚本文件,所述执行脚本内容可调用执行该文件的功能。
[0084](3.3)将脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行组织。
[0085](3.4)调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最终实现项目模块的自动部署。
【主权项】
1.一种数据监控和代码自动生成与部署的系统,其特征在于,该系统包括:(1)模块信息管理模块:对项目的各个模块信息进行管理,包括新建模块、编辑模块、删 除模块;并对项目模块的属性进行管理,包括模块属性的新建、编辑、删除、查询。(2)数据自动提取模块:自动提取持续集成系统中各个子系统数据;所述子系统包括: 代码版本控制与存储子系统GitLab、代码编译子系统Jenkins、代码质量管理子系统Sonar。 提取方式为从GitLab中得到代码提交数量和代码提交状态的访问地址,从Jenkins中得到 代码编译健康状态,从Sonar得到代码质量评审RCI (规则符合度)分数。(3)代码自动生成模块:在模块信息管理模块中如果有新建模块A,则利用本模块自动 生成新建模块A的代码并上传代码。代码的自动生成具体为:选用软件的开发框架,生成代 码编译工具Maven可解析的Archetype框架,然后用Maven命令来执行代码生成动作。代码的 上传具体为:将生成的代码用GitLab接口上传到GitLab服务器中,并在代码编译子系统 Jenkins中创建编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量 管理子系统Sonar中新建模块A的代码质量报告地址。(4)自动化部署模块:在Web前端建立自动化部署接口,用户通过接口编写部署步骤。部 署步骤包含将安装包部署到目标机器的Tomcat容器中,拷贝配置文件和其他依赖文件到部 署的目标机器中;其中,将安装包部署到目标机器的Tomcat容器中的实现方法为:把仓库中 存储的软件安装包下载到本地,然后再利用Tomcat的远程部署Manage功能来把软件安装包 部署到目标机器的Tomcat中;拷贝配置文件和其他依赖文件到部署的目标机器中的实现方 法为:编写好Linux中的脚本模板,脚本模板中的内容包括以用户名和密码通过SSH登录目 标机器B,拷贝文件A到目标机器B中,其中的文件A是配置文件或其他依赖文件。最后本模块 将脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配置文件进行 组织。封装完成后,本模块将调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置 文件进行更改,然后再执行Job的部署功能,最后实现项目模块的自动部署。2.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,该 系统还包括数据存储模块,该模块将数据自动提取模块提取的指标数据存储于数据库中。 指标数据可采用(key,value)对方式存储。3.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,该 系统还包括数据显示和报表模块,该模块负责把数据自动提取模块获取的数据在web前端 进行显示,同时提供报表生成和下载功能,方便管理人员获取报告和统计。4.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,该 系统还包括项目信息管理模块,此模块负责项目信息的管理,包括项目属性的新建、编辑、 删除、查询功能。5.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,所 述代码自动生成模块中采用的开发框架为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity 作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使 用Spring Data和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。6.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,所 述自动化部署模块中,如果文件A的格式也是Linux脚本文件,那么脚本模板调用执行文件A〇7.根据权利要求1所述的一种数据监控和代码自动生成与部署的系统,其特征在于,该 系统包括项目权限管理模块,在用户登录本系统前,用户需要向系统管理员申请项目权限, 以便使用本系统的各个模块。因此项目权限管理模块负责配置管理项目的编辑访问权限, 权限控制方式为用角色标定访问权限,PM角色为项目经理,其权限可以访问和完全控制项 目属性和模块属性。DEV角色为开发人员,QA角色为测试人员,DEV和QA的权限拥有访问但不 能更改项目属性权限。8.—种应用权利要求1所述系统的数据监控和代码自动生成与部署的方法,其特征在 于,包括以下步骤:(1)构建项目Maven Archetype框架。(2)通过模块信息管理模块新建模块A,然后用代码自动生成模块对新建模块A进行代 码自动化生成工作,包括以下子步骤:(2.1)根据步骤1构建的Maven Archetype框架,通过代码编译工具Maven编译框架得到 具体的代码。(2.2)通过Gi tLab接口把代码上传到Gi tLab中存储,再通过Jenkins接口在Jenkins中 建立编译任务Job,然后调用Jenkins编译构建功能,在构建完成后获取代码质量管理子系 统Sonar中新建模块A的代码质量报告地址。(2.3)代码自动生成模块将新建模块A的Gi tLab存储地址和Jenkins Job地址以及 Sonar中的代码质量报告地址存储于数据库中。(3)通过数据自动提取模块提取数据。在数据库中查询通过步骤2存入的模块属性信 息,得到模块的Gi tLab代码存储地址,Jenkins中对应的Job地址,Sonar中的代码质量报告 地址。然后根据地址和各个子系统数据提取接口分别提取得到GitLab中代码提交数量和代 码提交状态的访问地址,Jenkins中的模块的Job的代码编译健康状态数据,Sonar中的代码 质量评审RCI (规则符合度)分数。(4)用户对项目模块进行代码开发,把新开发的代码更新到该模块所在的GitLab存储 地址。(5)项目模块所对应的Jenkins编译Job自动发现代码的更新,开始编译代码,编译完成 后把安装包带上版本信息上传到Nexus中,形成历史软件安装包。(6)通过自动化部署模块提供的Web前端自动化部署接口编写部署步骤,包括以下子步 骤:(6.1)将安装包部署到目标机器的Tomcat容器中:把步骤5中存储的历史软件安装包下 载到本地,然后再利用Tomcat的远程部署Manage功能来把历史软件安装包部署到目标机器 的 Tomcat 中。(6.2)拷贝配置文件和其他依赖文件到部署的目标机器中:编写好Linux中的脚本模 板,脚本模板中的内容包括:用户名和密码通过SSH登录目标机器B、拷贝文件A到目标机器B 中;其中的文件A为配置文件或其他依赖文件。(6.3)将脚本模板封装到一个XML配置文件中,此XML文件的内容按照Jenkins中Job配 置文件进行组织。(6.4)调用Jenkins的更改配置文件的接口,将Jenkins中的Job配置文件进行更改,然后再执行Job的部署功能,最终实现项目模块的自动部署。9.根据权利要求8所述的方法,其特征在于,所述步骤I中,代码框架组成为:展示层使用基于HTML/CSS/JS的前端框架。接口层使用Apache Shiro+SpringMVC架构,并使用Velocity作为视图解析器。服务层选用EhCache来进行缓存管理,用Quatz来进行定时调度。持久层使用Spring Data和Mybatis来进行持久存储。数据存储支持关系型数据库和NoSQL型数据库。10.根据权利要求8所述的方法,其特征在于,该方法还包括将步骤2所得数据存储于数据库中的步骤,存储方式采用(key ,value)对方式存储,数据库采用MySQL,存储弹性可扩展。
【文档编号】G06F9/445GK106095408SQ201610378096
【公开日】2016年11月9日
【申请日】2016年5月31日
【发明人】周波, 林茜茜, 阮兵兵, 钱远之, 李善平, 汤景凡, 祝晓春, 施韦, 王健, 吴兵华, 刘博 , 简小云, 彭志宇, 杨朝晖
【申请人】浙江网新恒天软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1