基于多类型仓库事件驱动的持续集成和持续部署方法技术

技术编号:27530408 阅读:12 留言:0更新日期:2021-03-03 11:06
本发明专利技术提供了一种基于多类型仓库事件驱动的持续集成和持续部署方法,包括以下步骤:用户提交代码到代码仓库;代码仓库接受用户的代码提交请求,并触发webhook机制,向指定URL地址发送通知信息;驱动程序获取通知信息,格式化信息,根据参数判断事件类型;如果事件类型被判断为通过,信息被传递给任务执行器,如果事件类型被判断为不通过,则不做任何操作;当事件类型被判断为通过,信息被传递给任务执行器后,任务执行器检索关键字参数,和现有任务模板进行信息匹配;以及如果匹配成功,则执行任务,如果匹配不成功,则不执行任何操作。则不执行任何操作。则不执行任何操作。

【技术实现步骤摘要】
基于多类型仓库事件驱动的持续集成和持续部署方法


[0001]本专利技术涉及计算机领域,尤其涉及一种基于多类型仓库事件驱动的持续集成和持续部署方法。

技术介绍

[0002]事件驱动是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。
[0003]持续集成(Continuous Integration)和持续部署(Continuous Deployment)的简称是CICD。持续集成和持续部署是指在开发过程中自动执行一系列脚本来减低开发引入计算机领域漏洞(bug)的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。
[0004]如图1所示,为现有技术中的相关系统以及方法。用户在本地通过GIT系列命令,向远程代码仓库提交代码(此为提交事件):代码仓库接受用户的代码提交请求,之后通过仓库原生的webhook机制向指定的服务地址发送通知(发送到开源软件项目Jenkins的任务JOB中);Jenkins服务配置的JOB任务设置了通过webhook消息通知触发执行,当webhook发消息时,此任务JOB就会自动执行;JOB任务中可以根据用户实际情况,配置不同的任务流程执行,例如代码编译,代码检查等等。
[0005]如图1中的现有技术中,存在一些缺点。例如:
[0006](1)强依赖
[0007]现有技术方案完全依赖gitlab等三方代码仓库自带的webhook机制。
[0008](2)需三方插件支持
[0009]Jenkins集成工具需要和三方代码仓库进行集成(一般都是安装特定的插件,使之能够获取,接受来自代码仓库的事件通知消息)。
[0010](3)配置过于繁琐
[0011]代码开发过程中,为了实现根据不同的事件触发不同的操作,往往需要针对单一事件配置不同的JOB任务,配置工作量大。例如:现有项目A,在代码仓库中有master,dev,test,prod四个分支,在开发过程中,向不同的分支提交代码(提价事件)时,应为分支的不同,往往触发的任务也不相同,这里就需要在Jenkins上面配置最少4个任务JOB。一个项目不可能只存在提交事件,还有合并,分支提交,等等事件,针对不同的事件配置各种任务JOB是一件非常令人头痛的事情。
[0012](4)迁移备份恢复难度高效率低下
[0013]如发生机房故障或因其它需要而迁移代码仓库(gitlab/svn),当前配置的webhook需要重新配置。
[0014]同理,Jenkins服务如果迁移,其上配置的任务JOB恢复难度过高,不利于迁移和备份。
[0015]因此,需要一种基于多类型仓库事件驱动的持续集成和持续部署方法,将代码仓库和持续集成工具强绑定。

技术实现思路

[0016]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,能够将代码仓库和持续集成工具强绑定。
[0017]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,无需人员重复配置,简单,便捷,方便,灵活高效。
[0018]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,完全封装了CICD任务JOB,可以重复利用。
[0019]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,流程更加灵活,用户可以根据实际情况自行编写符合实际需求的任务JOB模板。
[0020]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,不依赖任何第三方的集成工具,解耦合。
[0021]本专利技术的目的之一在于提供一种基于多类型仓库事件驱动的持续集成和持续部署方法,可以和任务工具结合使用,任务执行模式是命令行模式,任何有CLI(客户端命令)命令的三方服务都可以结合使用。
[0022]为了实现上述至少一个专利技术目的,本专利技术提供了一种基于多类型仓库事件驱动的持续集成和持续部署方法,包括以下步骤:
[0023]用户提交代码到代码仓库;
[0024]代码仓库接受用户的代码提交请求,并触发webhook机制,向指定URL地址发送通知信息;
[0025]驱动程序获取通知信息,格式化信息,根据参数判断事件类型;
[0026]如果事件类型被判断为通过,信息被传递给任务执行器,如果事件类型被判断为不通过,则不做任何操作;
[0027]当事件类型被判断为通过,信息被传递给任务执行器后,任务执行器检索关键字参数,和现有任务模板进行信息匹配;以及
[0028]如果匹配成功,则执行任务,如果匹配不成功,则不执行任何操作。
[0029]在一些实施例中,其中,用户提交代码到代码仓库为提交事件步骤,用户在本地通过仓库原生客户端系列命令,向远程代码仓库提交代码。
[0030]在一些实施例中,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括提交事件以及合并事件的驱动程序触发。
[0031]在一些实施例中,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括以下部署步骤:
[0032]代码仓库使用webhook机制向指定地址发送事件消息;
[0033]接口服务接收到事件通知消息,根据信息,判断当前事件类型,例如判断是提交事件还是合并事件;
[0034]初始化事件信息,为后续事件判断做准备;以及
[0035]根据信息中关键信息选择不同的任务执行。
[0036]在一些实施例中,其中,所述部署步骤还包括:提交事件任务,不同的提交事件触发不同的任务。
[0037]在一些实施例中,其中,所述部署步骤还包括:合并事件任务,不同的合并事件触
发不同的任务。
[0038]在一些实施例中,其中,所述部署步骤还包括:其它事件任务,所有未匹配的事件默认执行,任务为空。
[0039]在一些实施例中,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括:驱动程序设置有持续运行的进程,接收来自代码仓库的webhook信息;在代码仓库配置webhook,选择所有事件触发;测试提交代码,触发事件通知,获取事件信息后,格式化信息。
[0040]在一些实施例中,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括:根据参数的值判断当前事件的类型以及当前代码提交的分支信息;根据信息判断项目语言类型;根据获取的分支信息以及用户信息,匹配任务模板执行任务;其中,任务模板被定义为用户预先设定好的格式文件,任务模板中的名称被定义为master分支提交事件任务;任务模板中的描述被定义为当触发提交事件,并且分支为master,用户符合特性用户时,执行此任务;任务模板中的任务流被定义为代码编译,代码构建,代码检测以及发布。
[0041]在一些实施例中,其中,所述基于多类型仓库事件驱动的持续集成和持续部本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多类型仓库事件驱动的持续集成和持续部署方法,其特征在于,包括以下步骤:用户提交代码到代码仓库;代码仓库接受用户的代码提交请求,并触发webhook机制,向指定URL地址发送通知信息;驱动程序获取通知信息,格式化信息,根据参数判断事件类型;如果事件类型被判断为通过,信息被传递给任务执行器,如果事件类型被判断为不通过,则不做任何操作;当事件类型被判断为通过,信息被传递给任务执行器后,任务执行器检索关键字参数,和现有任务模板进行信息匹配;以及如果匹配成功,则执行任务,如果匹配不成功,则不执行任何操作。2.如权利要求1所述的基于多类型仓库事件驱动的持续集成和持续部署方法,其中,用户提交代码到代码仓库为提交事件步骤,用户在本地通过仓库原生客户端系列命令,向远程代码仓库提交代码。3.如权利要求2所述的基于多类型仓库事件驱动的持续集成和持续部署方法,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括提交事件以及合并事件的驱动程序触发。4.如权利要求3所述的基于多类型仓库事件驱动的持续集成和持续部署方法,其中,所述基于多类型仓库事件驱动的持续集成和持续部署方法还包括以下部署步骤:代码仓库使用webhook机制向指定地址发送事件消息;接口服务接收到事件通知消息,根据信息,判断当前事件类型,例如判断是提交事件还是合并事件;初始化事件信息,为后续事件判断做准备;以及根据信息中关键信息选择不同的任务执行。5.如权利要求4所述的基于多类型仓库事件驱动的持续集成和持续部署方法,其中,所述部署步骤还包括:提交事件任务,不同的提交事件触发不同的任务。6.如权利要...

【专利技术属性】
技术研发人员:李杰
申请(专利权)人:贵州新致普惠信息技术有限公司
类型:发明
国别省市:

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

1