一种基于Jenkins的代码集成管理方法和系统技术方案

技术编号:30765625 阅读:14 留言:0更新日期:2021-11-10 12:24
本发明专利技术公开了一种基于Jenkins的代码集成管理方法和系统,涉及计算机技术领域。该方法的一具体实施方式包括:在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务;轮询Jenkins中的监控插件,以获取每个任务的最新构建状态;若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息。该实施方式一方面可以保证代码提交到代码仓库前即可进行持续集成构建检查,避免代码仓库内的代码被污染;另一方面整个构建环境搭建在Jenkins,无需每个用户在本地重复搭建环境,同时也确保了持续集成环境的统一性。续集成环境的统一性。续集成环境的统一性。

【技术实现步骤摘要】
一种基于Jenkins的代码集成管理方法和系统


[0001]本专利技术涉及计算机
,尤其涉及一种基于Jenkins的代码集成管理方法和系统。

技术介绍

[0002]在软件开发中,将不同开发人员编写的代码集成在一起是开发团队最常见的操作,在代码的集成过程中不可避免的会遇到大量集成问题。为保证软件集成的效率以及质量,在敏捷开发中提出了自动化持续集成方法。在实现本专利技术的过程中,专利技术人发现现有技术至少存在如下问题:
[0003]1)有些方式在用户将代码提交到代码仓库后,才触发执行持续集成构建,即采取“先污染、后治理”策略,其代价较高;
[0004]2)另外有些方式,虽然实现了代码推送前检测,但这些插件的检测是基于用户本地环境进行的,由于每个开发人员的开发环境存在差异,导致检测结果存有差异;无法实现复杂构建,并且要求每一位用户都在本地搭建持续集成环境,操作过于繁琐。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种基于Jenkins的代码集成管理方法和系统,至少能够解决现有技术中代码易被污染、无法实现统一构建集成环境的问题。
[0006]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种基于Jenkins的代码集成管理方法,包括:
[0007]在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务;其中,任务用于对代码提交事件中的代码进行缺陷检测;
[0008]轮询Jenkins中的监控插件,以获取每个任务的最新构建状态;
[0009]若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息。
[0010]可选的,客户端包括持续集成客户端和TortoiseSVN客户端;
[0011]所述在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务,包括:
[0012]将持续集成客户端作为钩子程序配置在TortoiseSVN客户端中;
[0013]TortoiseSVN客户端在监控到代码提交事件并拦截后,启动持续集成客户端,以由持续集成客户端触发Jenkins远程构建任务;
[0014]所述若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息,包括:
[0015]在任务均构建结束后,持续集成客户端根据每个任务的构建结果是否为成功,判断所述代码是否符合存在缺陷,得到判断结果;
[0016]将判断结果发送给TortoiseSVN客户端,若成功,通过TortoiseSVN客户端将所述
代码推送到代码仓库,否则返回推送失败信息。
[0017]可选的,所述轮询Jenkins中的监控插件,以获取每个任务的最新构建状态,还包括:
[0018]持续集成客户端按照预设时间间隔轮询所述监控插件,以利用所述监控插件中的状态获取方法,获取Jenkins所创建的每个任务的最新构建状态。
[0019]可选的,还包括:
[0020]在TortoiseSVN客户端中设置一个钩子脚本,将所述钩子脚本的钩子类型设置为在将代码推送到代码仓库前,触发所述钩子脚本的执行;
[0021]接收配置的工作副本路径,使得所述钩子脚本监控到用户在所述工作副本路径下提交的代码后进行拦截,以触发待执行的命令行;
[0022]接收配置的待执行的命令行;其中,命令行包括程序命令、持续集成客户端的绝对路径、待触发的Jenkins任务名,所述钩子脚本在执行时将任务名以启动参数的形式,传递给所述绝对路径下的持续集成客户端,以建立任务和代码的绑定关系;
[0023]所述TortoiseSVN客户端在监控到代码提交事件并拦截后,启动持续集成客户端,以由持续集成客户端触发Jenkins远程构建任务,包括:
[0024]TortoiseSVN客户端中的钩子脚本,在监控到用户通过所述工作副本路径提交的代码并拦截后,通过所述待执行的命令行,触发所述绝对路径下持续集成客户端的启动,使得持续集成客户端从启动参数中获取任务名,以触发Jenkins进行任务构建操作。
[0025]可选的,包括:在所述钩子脚本执行完毕后,再通过TortoiseSVN客户端将所述代码推送到代码仓库。
[0026]可选的,所述持续集成客户端从启动参数中获取任务名,以触发Jenkins进行任务构建操作,还包括:
[0027]利用TortoiseSVN客户端,检测所拦截的代码相对于本地工作空间中的代码的变更内容,以基于所述变更内容生成差异描述文件;其中,本地工作空间中的代码与Jenkins工作空间中的代码相同;
[0028]持续集成客户端从启动参数中获取任务名,结合Jenkins服务地址,生成任务构建请求并发送给Jenkins,以触发Jenkins进行参数化任务构建操作;其中,任务构建请求中携带有所述差异描述文件。
[0029]可选的,还包括:
[0030]Jenkins在收到持续集成客户端发送的任务构建请求后,将任务构建请求中的差异描述文件存储到Jenkins的工作空间;
[0031]从代码仓库下载最新代码并存放到Jenkins的工作空间;
[0032]将所述差异描述文件中的变更内容,应用到Jenkins工作空间的最新代码中进行代码更新,之后再进行参数化任务构建操作。
[0033]可选的,还包括:
[0034]对于Jenkins构建的任一任务,接收配置的文件参数;其中,所述文件参数用于将所述差异描述文件存放到Jenkins的工作空间;以及
[0035]接收选择的代码仓库路径和目标策略;其中,目标策略用于从代码仓库下载最新代码并存放到Jenkins的工作空间,之后将所述差异描述文件中的变更内容应用到Jenkins
工作空间的最新代码中进行代码更新;以及
[0036]接收配置的持续集成过程,以利用所述持续集成过程对代码进行缺陷检测。
[0037]可选的,所述目标策略还用于在每次构建任务前清理Jenkins的工作空间。
[0038]为实现上述目的,根据本专利技术实施例的另一方面,提供了一种基于Jenkins的代码集成管理系统,包括:
[0039]触发模块,用于在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务;其中,任务用于对代码提交事件中的代码进行缺陷检测;
[0040]轮询模块,用于轮询Jenkins中的监控插件,以获取每个任务的最新构建状态;
[0041]推送模块,用于若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息。
[0042]可选的,客户端包括持续集成客户端和TortoiseSVN客户端;
[0043]所述触发模块,用于:将持续集成客户端作为钩子程序配置在TortoiseSVN客户端中;TortoiseSVN客户端在监控到代码提交事件并拦截本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Jenkins的代码集成管理方法,其特征在于,包括:在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务;其中,任务用于对代码提交事件中的代码进行缺陷检测;轮询Jenkins中的监控插件,以获取每个任务的最新构建状态;若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息。2.根据权利要求1所述的方法,其特征在于,客户端包括持续集成客户端和TortoiseSVN客户端;所述在监控到代码提交事件并拦截后,触发客户端运行,以通过客户端触发Jenkins远程构建任务,包括:将持续集成客户端作为钩子程序配置在TortoiseSVN客户端中;TortoiseSVN客户端在监控到代码提交事件并拦截后,启动持续集成客户端,以由持续集成客户端触发Jenkins远程构建任务;所述若任务均构建成功,则通过客户端将所述代码推送到代码仓库,否则返回推送失败信息,包括:在任务均构建结束后,持续集成客户端根据每个任务的构建结果是否为成功,判断所述代码是否符合存在缺陷,得到判断结果;将判断结果发送给TortoiseSVN客户端,若成功,通过TortoiseSVN客户端将所述代码推送到代码仓库,否则返回推送失败信息。3.根据权利要求2所述的方法,其特征在于,所述轮询Jenkins中的监控插件,以获取每个任务的最新构建状态,还包括:持续集成客户端按照预设时间间隔轮询所述监控插件,以利用所述监控插件中的状态获取方法,获取Jenkins所创建的每个任务的最新构建状态。4.根据权利要求2所述的方法,其特征在于,还包括:在TortoiseSVN客户端中设置一个钩子脚本,将所述钩子脚本的钩子类型设置为在将代码推送到代码仓库前,触发所述钩子脚本的执行;接收配置的工作副本路径,使得所述钩子脚本监控到用户在所述工作副本路径下提交的代码后进行拦截,以触发待执行的命令行;接收配置的待执行的命令行;其中,命令行包括程序命令、持续集成客户端的绝对路径、待触发的Jenkins任务名,所述钩子脚本在执行时将任务名以启动参数的形式,传递给所述绝对路径下的持续集成客户端,以建立任务和代码的绑定关系;所述TortoiseSVN客户端在监控到代码提交事件并拦截后,启动持续集成客户端,以由持续集成客户端触发Jenkins远程构建任务,包括:TortoiseSVN客户端中的钩子脚本,在监控到用户通过所述工作副本路径提交的代码并拦截后,通过所述待执行的命令行,触发所述绝对路径下持续集成客户端的启动,使得持续集成客户端从启动参数中获取任务名,以触发Jenkins进行任务构建操作。5.根据权利要求4所述的方法,其特征在于,包括:在所述钩子脚本...

【专利技术属性】
技术研发人员:韩士雄
申请(专利权)人:北京沃东天骏信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1