CN110908708B - 一种代码发布方法、装置和系统 - Google Patents
一种代码发布方法、装置和系统 Download PDFInfo
- Publication number
- CN110908708B CN110908708B CN201911229959.1A CN201911229959A CN110908708B CN 110908708 B CN110908708 B CN 110908708B CN 201911229959 A CN201911229959 A CN 201911229959A CN 110908708 B CN110908708 B CN 110908708B
- Authority
- CN
- China
- Prior art keywords
- code
- issued
- issuing instruction
- online
- version number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Abstract
本申请实施例公开了一种代码发布方法,获取通过QQ机器人客户端发送的代码发布指令,代码发布指令用于指示是否发布待发布代码,其中包括待发布代码的项目名称和版本号。解析代码发布指令进行处理,若所述代码发布指令指示发布待发布代码,则根据待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。该方案无需运维人员登录jenkins界面,查找对应的项目执行上线操作,即运维人员不需要关心jenkins界面怎么调用的,根据项目名称和版本号可以自动调用Jenkins接口执行上线操作,减少学习成本,提高了上线效率。另外,本申请通过QQ机器人客户端可以完成操作,使得运维人员可以在任意工作环境下执行上线操作。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种代码发布方法、装置和系统。
背景技术
当前公司应用程序(Application,APP)软件开发,都是将开发、测试及运维设为各自分离的部门,开发人员开发代码,测试人员测试功能,最后由运维人员发布上线。
随着公司项目的扩展,代码迭代速度越来越快,无疑给运维人员带来越来越大的工作量,为此,自动部署应用服务应运而生。自动部署应用服务,是通过Jenkins界面化配置和操作即可完成部署任务工作,现有技术中运维人员需要登录jenkins界面,然后找到需要上线的项目,执行上线操作。
然而,jenkins界面中存在多种业务下的多个项目,查找项目不方便,人工操作工作繁琐,效率低下,工作量大;另外,jenkins不支持移动端,运维人员只能在特定工作环境和工作方式下执行上线操作。
发明内容
为了解决上述技术问题,本申请提供了一种代码发布方法、装置和系统,运维人员不需要关心jenkins界面怎么调用的,根据待发布代码的项目名称和版本号可以自动调用Jenkins接口执行上线操作,减少学习成本,提高了上线效率。另外,本申请通过QQ机器人客户端可以完成操作,使得运维人员可以在任意工作环境下执行上线操作。
第一方面,本申请实施例提供一种代码发布方法,所述方法包括:
获取通过QQ机器人客户端发送的代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令中包括待发布代码的项目名称和版本号;
解析所述代码发布指令;
若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。
在一种实现方式中,所述方法还包括:
若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。
在一种实现方式中,所述获取通过QQ机器人客户端发送的代码发布指令之前,所述方法包括:
获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;
若是,则执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述方法还包括:
若根据所述待发布代码的项目名称和版本号判断所述待发布代码不具有直接上线的权限,确定所述待发布代码的项目规则。
在一种实现方式中,所述方法还包括:
当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令。
在一种实现方式中,所述响应所述预设触发操作生成所述代码发布指令之后,所述方法还包括:
判断触发所述预设触发操作的用户是否具有上线权限;
若是,执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述方法还包括:
若判断触发所述预设触发操作的用户不具有上线权限,发送无权限提醒消息。
第二方面,本申请实施例还提供一种代码发布装置,所述装置包括:
第一获取单元,用于获取通过QQ机器人客户端发送的代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令是通过预设触发操作生成的,所述代码发布指令中包括待发布代码的项目名称和版本号;
解析单元,用于解析所述代码发布指令;
调用单元,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。
在一种实现方式中,所述调用单元还用于:
若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。
在一种实现方式中,所述装置还包括:
第二获取单元,用于获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
判断单元,用于根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;若是,则触发所述第一获取单元执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述装置还包括确定单元:
所述确定单元,用于若所述判断单元根据所述待发布代码的项目名称和版本号判断所述待发布代码不具有直接上线的权限,确定所述待发布代码的项目规则。
在一种实现方式中,所述装置还包括生成单元:
所述生成单元,用于当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令。
在一种实现方式中,所述判断单元还用于:
在所述生成单元响应所述预设触发操作生成所述代码发布指令之后,判断触发所述预设触发操作的用户是否具有上线权限;若是,触发所述第一获取单元执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述装置还包括发送单元:
所述发送单元,用于若所述判断单元判断触发所述预设触发操作的用户不具有上线权限,发送无权限提醒消息。
第三方面,本申请实施例还提供一种代码发布系统,所述系统包括QQ机器人客户端和后端服务,所述后端服务包括QQ通信模块、QQ消息接收模块、指令解析模块和指令传递模块:
所述QQ机器人客户端,用于发送代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令中包括待发布代码的项目名称和版本号;
所述QQ机器人客户端通过所述QQ通信模块与所述后端服务建立通信;
所述QQ消息接收模块,用于获取所述QQ机器人客户端发送的代码发布指令;
所述指令解析模块,用于解析所述代码发布指令;
所述指令传递模块,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口,将所述代码发布指令传递给所述Jenkins接口执行上线操作。
在一种实现方式中,所述系统还包括邮件客户端,所述后端服务还包括邮件接收模块:
所述邮件客户端,用于发送获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
所述邮件接收模块,用于获取所述上线申请邮件;根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;若是,则触发所述QQ消息接收模块获取通过QQ机器人客户端发送的代码发布指令的步骤。
由上述技术方案可以看出,该代码发布方法可以获取通过QQ机器人客户端发送的代码发布指令,代码发布指令用于指示是否发布待发布代码,其中包括待发布代码的项目名称和版本号。之后,解析代码发布指令进行处理,若所述代码发布指令指示发布待发布代码,则根据待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。若代码发布指令指示不发布所述待发布代码,根据待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。可见,该方案无需运维人员登录jenkins界面,查找对应的项目执行上线操作,即运维人员不需要关心jenkins界面怎么调用的,根据待发布代码的项目名称和版本号可以自动调用Jenkins接口执行上线操作,减少学习成本,提高了上线效率。另外,本申请通过QQ机器人客户端可以完成操作,使得运维人员可以在任意工作环境下执行上线操作。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种代码发布系统的结构图;
图2为本申请实施例提供的一种代码发布方法的流程图;
图3为本申请实施例提供的一种代码发布方法的流程图;
图4为本申请实施例提供的一种代码发布方法的结构流程图;
图5为本申请实施例提供的一种代码发布装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在利用自动部署应用服务时,运维人员需要登录jenkins界面,然后找到需要上线的项目,执行上线操作。然而,jenkins界面中存在多种业务下的多个项目,查找项目不方便,人工操作工作繁琐,效率低下,工作量大;另外,jenkins不支持移动端,运维人员只能在特定工作环境和工作方式下执行上线操作。如何既能快速响应版本交付,又不能束缚运维人员的工作环境和工作方式,成为本领域技术人员亟待解决的技术问题。
为了解决上述技术问题,本申请提供一种一种代码发布方法、装置和系统,该方案无需运维人员登录jenkins界面,查找对应的项目执行上线操作,即运维人员不需要关心jenkins界面怎么调用的,根据待发布代码的项目名称和版本号可以自动调用Jenkins接口执行上线操作,减少学习成本,提高了上线效率。另外,本申请通过QQ机器人客户端可以完成操作,使得运维人员可以在任意工作环境下执行上线操作。
该方法具体可以是基于QQ机器人的代码发布方法,该方法可以应用于服务器,服务器例如可以是独立的服务器,也可以是位于集群中的服务器。
该方法可以应用到图1所示的系统架构中。该系统架构包括QQ机器人客户端101和后端服务102,其中,后端服务102包括QQ通信模块1021、QQ消息接收模块1022、指令解析模块1023和指令传递模块1024:
所述QQ机器人客户端101,用于发送代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令是通过预设触发操作生成的,所述代码发布指令中包括待发布代码的项目名称和版本号;
所述QQ机器人客户端101通过所述QQ通信模块1021与所述后端服务102建立通信;
所述QQ消息接收模块1022,用于获取所述QQ机器人客户端101发送的代码发布指令;
所述指令解析模块1023,用于解析所述代码发布指令;
所述指令传递模块1024,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口,将所述代码发布指令传递给所述Jenkins接口执行上线操作,从而完成部署。
其中,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。其提供统一的界面配置,将代码服务器、构建、代码检测、测试、打包、部署等一系列软件开发过程自动化、配置化。
在一种可能的实现方式中,所述系统还包括邮件客户端103,后端服务102中还包括邮件接收模块1025:
所述邮件客户端103,用于发送获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
所述邮件接收模块1025,用于获取所述上线申请邮件;根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;若是,则触发所述QQ消息接收模块1022获取通过QQ机器人客户端101发送的代码发布指令。
接下来,将结合上述系统架构对本申请提供的代码发布方法进行介绍。参见图2所示,所示方法包括:
S201、获取通过QQ机器人客户端发送的代码发布指令。
其中,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令中包括待发布代码的项目名称和版本号。
需要说明的是,在获取通过QQ机器人客户端发送的代码发布指令之前,生成代码发布指令。在不同的场景下,代码发布指令的生成方式有所不同。
在一种场景下,如果遇到版本紧急上线或者回退,可以直接通过QQ机器人客户端生成并发送代码发布指令。此时,获取通过QQ机器人客户端发送的代码发布指令的可以是图1中的QQ消息接收模块1022。
在一种场景下,并非要求紧急上线待发布代码,在这种情况下,在获取通过QQ机器人客户端发送的代码发布指令之前,可以通过邮件客户端103发送上线申请邮件,从而获取上线申请邮件,上线申请邮件中包括待发布代码的项目名称和版本号。此时,获取上线申请邮件的可以是邮件接收模块1025。具体的,通过python脚本登陆到上线申请邮件的邮箱,获取上线申请邮件的内容,邮件接收模块1025可以包括poplib模块和email模块,poplib模块用来登陆邮箱从pop3获取上线申请邮件,email模块用来从上线申请邮件中提取信息(例如待发布代码的项目名称和版本号)。
可以理解的是,对待发布代码的发布任务可以记录到工单系统,主要记录上线申请邮件的发件人、主题、内容、状态、执行时长等信息,是上线任务的整个周期。
邮件接收模块1025在获取到上线申请邮件后,可以根据待发布代码的项目名称和版本号判断待发布代码是否具有直接上线的权限,若是,则执行S201中获取通过QQ机器人客户端发送的代码发布指令的步骤,进行无人值守上线。
若邮件接收模块1025根据待发布代码的项目名称和版本号判断待发布代码不具有直接上线的权限,确定待发布代码的项目规则,例如检查该待发布代码是否需要上级审批或该待发布代码是否有依赖条件。当需要发布待发布代码时,响应预设触发操作生成代码发布指令。该预设触发操作例如可以是用户在QQ群里手动艾特QQ机器人并添加代码发布指令,从而生成代码发布指令。
在响应预设触发操作生成代码发布指令之后,邮件接收模块1025判断触发预设触发操作的用户是否具有上线权限,若是,执行S201中获取通过QQ机器人客户端发送的代码发布指令的步骤,进行无人值守上线。若判断触发预设触发操作的用户不具有上线权限,则发送无权限提醒消息。该无权限提醒消息可以通过QQ消息发送。
在本申请实施例中,可以以社交软件QQ为信息载体,QQ机器人实现代码发布传递及整个代码发布周期信息的反馈。QQ机器人客户端101与QQ通信模块1021尽力传输通道,从而使得后端服务102中的QQ消息接收模块1022可以获取到代码发布指令。QQ消息接收模块1022可以启动信息接收线程接收代码发布指令。
S202、解析所述代码发布指令。
S203、若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。
指令解析模块1023可以解析代码发布指令,并根据该代码发布指令做相关处理。若代码发布指令指示发布待发布代码,则指令传递模块1024根据待发布代码的项目名称和版本号调用Jenkins接口执行上线操作;若代码发布指令指示不发布待发布代码,则指令传递模块1024根据待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。
其中,调用jenkins接口执行上线终止操作,功能如同登录jenkins页面执行上线操作,从而完成部署。在部署完毕后,可以将结果信息通过QQ返回给用户例如执行人,同时更新工单系统状态,结束此次发布任务。另外,Jenkins可以实时反馈待发布代码的发布过程状态。其中,发布过程状态以及结果信息等都可以反馈至QQ通信模块1021,从而通过QQ通信模块1021实现发布过程状态以及结果信息的反馈。
由上述技术方案可以看出,该代码发布方法可以获取通过QQ机器人客户端发送的代码发布指令,代码发布指令用于指示是否发布待发布代码,其中包括待发布代码的项目名称和版本号。之后,解析代码发布指令进行处理,若所述代码发布指令指示发布待发布代码,则根据待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。若代码发布指令指示不发布所述待发布代码,根据待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。可见,该方案无需运维人员登录jenkins界面,查找对应的项目执行上线操作,即运维人员不需要关心jenkins界面怎么调用的,根据待发布代码的项目名称和版本号可以自动调用Jenkins接口执行上线操作,减少学习成本,提高了上线效率。另外,本申请通过QQ机器人客户端可以完成操作,使得运维人员可以在任意工作环境下执行上线操作。
接下来,将结合实际应用场景对本申请实施例提供的代码发布方法进行介绍。参见图3,所述方法包括:
S301、上线申请人发送上线申请邮件。
S302、通过邮件接收模块提取待发布代码的项目名称和版本号。
S303、将待发布代码的发布任务记录到工单系统。
S304、邮件接收模块判断待发布代码是否具有直接上线的权限,若否,执行S305;若是,执行S308。
S305、确定所述待发布代码的项目规则。
S306、当需要发布所述待发布代码时,QQ群里手动艾特(@)QQ机器人并加上代码发布指令。
S307、判断触发所述预设触发操作的用户是否具有上线权限,若是,执行S308;若否,执行S314。
S308、基于QQ机器人进行无人值守上线。
S309、QQ机器人与QQ通信模块建立信息传输通道。
S310、QQ消息接收模块启动信息接收线程接收代码发布指令。
S311、指令解析模块解析所述代码发布指令。
S312、指令传递模块根据代码发布指令的不同指示调用不同的jenkins接口。
若代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作;若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。
S313、部署完毕,将结果信息通过QQ返回给执行人,同时更新工单系统状态,结束此次发布任务。
S314、发送无权限提醒消息。
上述代码发布方法的结构流程可以参见图4所示,通过QQ机器人客户端发送的代码发布指令和/或邮件客户端发送的上线申请邮件,基于QQ机器人进行无人值守上线,QQ机器人客户端通过QQ通信模块与后端服务建立通信,从而使得后端处理模块(包括QQ消息接收模块、指令解析模块和指令传递模块)根据指示调用Jenkins接口,进而完成部署。
基于前述实施例提供的代码发布方法,本申请实施例还提供一种代码发布装置,参见图5,所述装置包括:
第一获取单元501,用于获取通过QQ机器人客户端发送的代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令是通过预设触发操作生成的,所述代码发布指令中包括待发布代码的项目名称和版本号;
解析单元502,用于解析所述代码发布指令;
调用单元503,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作。
在一种实现方式中,所述调用单元还用于:
若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作。
在一种实现方式中,所述装置还包括:
第二获取单元,用于获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
判断单元,用于根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;若是,则触发所述第一获取单元执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述装置还包括确定单元:
所述确定单元,用于若所述判断单元根据所述待发布代码的项目名称和版本号判断所述待发布代码不具有直接上线的权限,确定所述待发布代码的项目规则。
在一种实现方式中,所述装置还包括生成单元:
所述生成单元,用于当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令。
在一种实现方式中,所述判断单元还用于:
在所述生成单元响应所述预设触发操作生成所述代码发布指令之后,判断触发所述预设触发操作的用户是否具有上线权限;若是,触发所述第一获取单元执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
在一种实现方式中,所述装置还包括发送单元:
所述发送单元,用于若所述判断单元判断触发所述预设触发操作的用户不具有上线权限,发送无权限提醒消息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-only memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (5)
1.一种代码发布方法,其特征在于,所述方法包括:
从pop3获取上线申请邮件,所述上线申请邮件中包括待发布代码的项目名称和版本号;
通过python脚本登陆到所述上线申请邮件的邮箱,获取所述上线申请邮件的内容;
将所述待发布代码对应的发布任务的信息记录到工单系统中,所述发布任务的信息包括:所述上线申请邮件的发件人、主题、邮件内容、状态以及执行时长;
根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;
若否,则确定所述待发布代码的项目规则,所述项目规则包括:检查所述待发布代码是否需要升级审批或所述待发布代码是否有依赖条件;
若是,则执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤;
当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令,所述预设触发操作包括:用户向QQ群中的QQ机器人添加生成所述代码发布指令所需的生成指令;获取通过QQ机器人客户端发送的代码发布指令,所述代码发布指令用于指示是否发布所述待发布代码,所述代码发布指令中包括所述待发布代码的项目名称和版本号;
解析所述代码发布指令;
若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作;
若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作,并生成上线终止操作结果,所述上线终止操作结果用于更新所述工单系统,以结束所述待发布代码对应的发布任务。
2.根据权利要求1所述的方法,其特征在于,所述响应所述预设触发操作生成所述代码发布指令之后,所述方法还包括:
判断触发所述预设触发操作的用户是否具有上线权限;
若是,执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若判断触发所述预设触发操作的用户不具有上线权限,发送无权限提醒消息。
4.一种代码发布装置,其特征在于,所述装置包括:
第一获取单元,用于从pop3获取上线申请邮件,所述上线申请邮件中包括待发布代码的项目名称和版本号;
第一获取单元,还用于通过python脚本登陆到所述上线申请邮件的邮箱,获取所述上线申请邮件的内容;还用于将所述待发布代码对应的发布任务的信息记录到工单系统中,所述发布任务的信息包括:所述上线申请邮件的发件人、主题、邮件内容、状态以及执行时长;
第一获取单元,还用于获取通过QQ机器人客户端发送的代码发布指令,所述代码发布指令用于指示是否发布所述待发布代码,所述代码发布指令中包括所述待发布代码的项目名称和版本号;
判断单元,用于根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;
若否,则确定所述待发布代码的项目规则,所述项目规则包括:检查所述待发布代码是否需要升级审批或所述待发布代码是否有依赖条件;
若是,则执行所述获取通过QQ机器人客户端发送的代码发布指令的步骤;
生成单元,用于当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令,所述预设触发操作包括:用户向QQ群中的QQ机器人添加生成所述代码发布指令所需的生成指令;解析单元,用于解析所述代码发布指令;
调用单元,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线操作;
调用单元,还用于若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作,并生成上线终止操作结果,所述上线终止操作结果用于更新所述工单系统,以结束所述待发布代码对应的发布任务。
5.一种代码发布系统,其特征在于,所述系统包括QQ机器人客户端、邮件客户端和后端服务,所述后端服务包括QQ通信模块、QQ消息接收模块、指令解析模块、指令传递模块和邮件接收模块:
所述QQ机器人客户端,用于发送代码发布指令,所述代码发布指令用于指示是否发布待发布代码,所述代码发布指令中包括待发布代码的项目名称和版本号;还用于当需要发布所述待发布代码时,响应预设触发操作生成所述代码发布指令,所述预设触发操作包括:用户向QQ群中的QQ机器人添加生成所述代码发布指令所需的生成指令;
所述QQ机器人客户端通过所述QQ通信模块与所述后端服务建立通信;所述QQ消息接收模块,用于获取所述QQ机器人客户端发送的代码发布指令;
所述指令解析模块,用于解析所述代码发布指令;
所述指令传递模块,用于若所述代码发布指令指示发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口,将所述代码发布指令传递给所述Jenkins接口执行上线操作;还用于若所述代码发布指令指示不发布所述待发布代码,根据所述待发布代码的项目名称和版本号调用Jenkins接口执行上线终止操作,并生成上线终止操作结果,所述上线终止操作结果用于更新工单系统,以结束所述待发布代码对应的发布任务;
所述邮件客户端,用于从pop3获取上线申请邮件,所述上线申请邮件中包括待发布代码的项目名称和版本号;
所述邮件客户端,还用于通过python脚本登陆到所述上线申请邮件的邮箱,获取所述上线申请邮件的内容;
所述邮件客户端,用于发送获取上线申请邮件,所述上线申请邮件中包括所述待发布代码的项目名称和版本号;
所述邮件接收模块,用于获取所述上线申请邮件;根据所述待发布代码的项目名称和版本号判断所述待发布代码是否具有直接上线的权限;若是,则触发所述QQ消息接收模块获取通过QQ机器人客户端发送的代码发布指令的步骤;还用于将所述待发布代码对应的发布任务的信息记录到工单系统中,所述发布任务的信息包括:所述上线申请邮件的发件人、主题、邮件内容、状态以及执行时长;还用于确定所述待发布代码的项目规则,所述项目规则包括:检查所述待发布代码是否需要升级审批或所述待发布代码是否有依赖条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911229959.1A CN110908708B (zh) | 2019-12-04 | 2019-12-04 | 一种代码发布方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911229959.1A CN110908708B (zh) | 2019-12-04 | 2019-12-04 | 一种代码发布方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908708A CN110908708A (zh) | 2020-03-24 |
CN110908708B true CN110908708B (zh) | 2023-07-21 |
Family
ID=69822311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911229959.1A Active CN110908708B (zh) | 2019-12-04 | 2019-12-04 | 一种代码发布方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908708B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553065A (zh) * | 2020-04-26 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 一种代码文件发布方法及装置 |
CN111984231A (zh) * | 2020-07-06 | 2020-11-24 | 新浪网技术(中国)有限公司 | 一种代码自动化上线的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725931A (zh) * | 2018-12-17 | 2019-05-07 | 中国联合网络通信集团有限公司 | 一种jenkins构建方法及装置 |
-
2019
- 2019-12-04 CN CN201911229959.1A patent/CN110908708B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725931A (zh) * | 2018-12-17 | 2019-05-07 | 中国联合网络通信集团有限公司 | 一种jenkins构建方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110908708A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10534701B1 (en) | API driven continuous testing systems for testing disparate software | |
CN106294102B (zh) | 应用程序的测试方法、客户端、服务器及系统 | |
CN108134708B (zh) | 监控第三方接口的方法和装置 | |
CN109977012B (zh) | 系统的联调测试方法、装置、设备及计算机可读存储介质 | |
CN110908708B (zh) | 一种代码发布方法、装置和系统 | |
CN110659206A (zh) | 基于微服务的模拟架构建立方法、装置、介质及电子设备 | |
CN111367531B (zh) | 代码处理方法及装置 | |
CN112015654A (zh) | 用于测试的方法和装置 | |
CN110851324A (zh) | 基于日志的巡检处理方法、装置以及电子设备、存储介质 | |
CN111221727B (zh) | 测试方法、装置、电子设备和计算机可读介质 | |
CN114168471A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN112596784B (zh) | 一种迭代版本部署方法及装置 | |
CN113672502A (zh) | 程序多系统测试方法及其相应的装置、设备、介质 | |
CN109634734A (zh) | 自动编译发布方法、装置及计算机可读存储介质 | |
KR20120102967A (ko) | 애플리케이션 검증 시스템 및 방법 | |
CN112015715A (zh) | 工业互联网数据管理服务测试方法及系统 | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
CN113011858A (zh) | 审计项目配置、执行方法和装置 | |
CN112416791A (zh) | 一种测试对象的缺陷信息处理系统和方法 | |
CN113032263A (zh) | 用例测试处理方法、装置、服务器及可读存储介质 | |
JP2017220107A (ja) | 機器設定装置、機器設定方法、及びプログラム | |
CN106547679B (zh) | 脚本管理的方法和脚本管理平台 | |
CN110048940A (zh) | 即时通信消息的发送方法、装置、服务器及可读存储介质 | |
CN111708684B (zh) | 一种页面访问的记录方法、装置及计算机系统 | |
CN115526580B (zh) | 节点状态确定方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 300450 Jinzuo Plaza -207, No. 5, Meiyuan Road, Huayuan Industrial Zone, Binhai, Tianjin Applicant after: Tianjin Aolai Xingyun Technology Co.,Ltd. Address before: Room 304-31, No. 1, Gaowang Road West, Gaocun Town, Wuqing District, Tianjin 301700 (centralized office area) Applicant before: Tianjin yimate Intelligent Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |