CN111552579A - 一种远程调度Jenkins的方法及装置 - Google Patents
一种远程调度Jenkins的方法及装置 Download PDFInfo
- Publication number
- CN111552579A CN111552579A CN202010367920.2A CN202010367920A CN111552579A CN 111552579 A CN111552579 A CN 111552579A CN 202010367920 A CN202010367920 A CN 202010367920A CN 111552579 A CN111552579 A CN 111552579A
- Authority
- CN
- China
- Prior art keywords
- task job
- task
- request message
- execution result
- jenkins
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 115
- 238000010276 construction Methods 0.000 claims abstract description 77
- 230000008569 process Effects 0.000 claims abstract description 64
- 230000000903 blocking effect Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 16
- 230000003993 interaction Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 7
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 43
- 230000010354 integration Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及软件开发技术领域,公开了一种远程调度Jenkins的方法及装置,即先向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。由此可使用户终端在远程调度Jenkins的进程中,通过超时判断机制来对调度进程进行时间控制,即在发现超时未收到对应构建请求的反馈执行结果时,能够及时地结束等待,进而使得当服务器侧出现卡死等意外情况时,能够及时终止远程调度,保障了软件开发的正常开展。
Description
技术领域
本发明属于计算机技术领域,具体地涉及一种远程调度Jenkins的方法及装置。
背景技术
软件的敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换而言之,就是把一个大项目分为多个相互联系且也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。因为开发部门同时维护多个版本,而多个版本的发布及测试需要大量人力,所以要有一个专业的持续集成工具来管理持续重复的工作。
作为持续集成工具Hudson的一个重要分支,Jenkins是一款基于Java开发的且被广泛用于软件持续化集成的开源工具,由于其旨在提供一个开放易用的软件平台,能够使软件的持续集成变成可能,因而主要用于持续、自动的构建/测试软件项目,以及监控外部任务的运行。为了方便用户远程调用,Jenkins本身提供了应用程序接口(ApplicationProgramming Interface,API)接口,可以实现构建任务Job和自动化触发任务Job执行的目的。
当前,通过调度Jenkins来完成构建/测试软件项目的方式,主要有如下两种:
(1)基于Jenkins提供的且用于构建任务Job的API,利用其中的各种工具(如命令行下载工具curl,其为一种利用URL语法在命令行下工作的文件传输工具)进行远程调用,但是这种方式在成功触发任务Job构建后即会结束流程,而不会等到被构建的任务Job完全执行完后才结束,如此将无法拿到任务Job执行的最终结果,导致不能达成软件测试等目的,适用范围受限;
(2)通过Python(一种开源的脚本语言)三方库jenkinsapi(Python的三方扩展包,用于远程管理Jenkins)提供的构建函数(如jenkinsapi.job.Job.invoke)可实现远程构建任务Job和自动化触发任务Job执行的目的,前述远程构建是指在将任务Job的统一资源定位符(Uniform Resource Locator,URL)复制到其它电子设备上后,只要在该电子设备上打开这个URL就相当于给Jenkins服务器发送了一个构建请求,进而触发任务Job的构建及执行,这种方式虽然可以等到被构建的任务Job完全执行完才结束流程,但是如果Jenkins服务器侧的任务Job因为某种特殊原因(如卡死等情况)一直没有执行完,目前的流程会继续等待执行结果而不会自动超时退出,导致请求终端白白耗费资源及时间,无法及时感知调度进程已出现阻塞的问题。
上述两种现有调度Jenkins的流程图均可简化地如图1所示,它们所面临的共同问题可总结为:对于远程构建任务Job且需要拿到任务Job执行结果的调度进程,终端设备缺乏在时间上的控制,导致当服务器侧出现卡死等意外情况时,不能及时终止调度进程,影响了软件开发的正常开展。
发明内容
为了解决现有技术在调度Jenkins时所存在的因无时间控制而容易导致无法及时终止调度进程的问题,本发明目的在于提供一种远程调度Jenkins的方法、装置、计算机设备及计算机可读存储介质。
第一方面,本发明提供了一种远程调度Jenkins的方法,包括:
向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;
若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
基于上述发明内容,可使用户终端在远程调度Jenkins的进程中,通过超时判断机制来对调度进程进行时间控制,即在发现超时未收到对应构建请求的反馈执行结果时,能够及时地结束等待,进而使得当服务器侧出现卡死等意外情况时,能够及时终止远程调度,保障了软件开发的正常开展。
在一个可能的设计中,向Jenkins服务器发送任务Job构建请求消息,包括:通过子进程发送所述任务Job构建请求消息,然后等待所述任务Job执行结果;
若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果,包括:通过在发送所述任务Job构建请求消息时启动的守护进程,开启针对所述预设时长的计时,若在计时到达时,仍未接收到所述任务Job执行结果,则结束用于创建所述子进程和所述守护进程的父进程。
通过上述设计,能够在计时到达且仍未接收到所述任务Job执行结果时,通过所述守护进程来结束所述父进程,进而结束等待所述任务Job执行结果,实现及时终止远程调度的目的。
在一个可能的设计中,若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果,包括如下步骤:
S101.若仍在所述预设时长内,则在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,然后执行步骤S102,否则执行步骤S103,其中,所述任务Job查询请求消息用于请求所述jenkins服务器反馈对应的任务Job查询响应消息;
S102.在接收到所述任务Job查询响应消息后,若根据所述任务Job查询响应消息判定所述任务Job执行未完成,则返回执行所述步骤S101;
S103.若仍未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
通过上述设计,可以在定时范围内不间断地向jenkins服务器主动询问任务Job的当前执行状态,以便用户终端及时掌控任务Job执行情况,并在超时后及时结束等待。
在一个可能的设计中,在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,包括:在预设间隔查询时间的周期性到达时向所述jenkins服务器发送任务Job查询请求消息,其中,所述预设间隔查询时间的时长tdelay短于所述预设时长tduration,并满足:N*tdelay≤tduration,N为所述任务Job查询请求消息的最大允许发送次数。通过前述设计,可以确保所有的查询判断都是在定时范围内间隔进行的,利于用户终端实时掌控任务Job执行情况。
在一个可能的设计中,在向Jenkins服务器发送任务Job构建请求消息之前,所述方法还包括:向所述Jenkins服务器发送包含有用户认证信息、用户标识和用于指定所述Jenkins服务器的统一资源定位符URL的初始化请求消息,以便所述Jenkins服务器,在根据所述用户认证信息验证通过后,将对应所述用户标识的当前构建执行状态初始化为空闲状态,及时响应所述任务Job构建请求消息。通过前述设计,可以使发起构建请求的用户能够获取Jenkin服务器侧的使用授权,并提前清空当前正等待构建的请求队列,确保新的任务Job构建请求能够被及时响应,保障超时结束等待的有效性。
在一个可能的设计中,在向Jenkins服务器发送任务Job构建请求消息之前,所述方法还包括:接收用户在人机交互界面上输入的所述预设时长。通过前述设计,可以允许用户自由输入所述预设时长,进而方便对时间控制进行人为干预,达到人为想要的精度,提升用户体验。
在一个可能的设计中,在结束等待所述任务Job执行结果之后,所述方法还包括:生成进程阻塞警报信息,并在人机交互界面上展示所述进程阻塞报警信息。通过前述设计,可以及时地向用户发出阻塞警报,以便用户第一时间感知出现进程阻塞现象,进而快速开展人工排查等工作,解决引起阻塞现象的问题。
第二方面,本发明提供了一种远程调度Jenkins的装置,包括通信相连的构建请求单元和超时结束单元;
所述构建请求单元,用于向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;
所述超时结束单元,用于在预设时长内,若未接收到所述任务Job执行结果,则结束等待。
在一个可能的设计中,所述构建请求单元,用于通过子进程发送所述任务Job构建请求消息,然后等待所述任务Job执行结果;
所述超时结束单元,用于通过在发送所述任务Job构建请求消息时启动的守护进程,开启针对所述预设时长的计时,若在计时到达时,仍未接收到所述任务Job执行结果,则结束用于创建所述子进程和所述守护进程的父进程。
在一个可能的设计中,所述超时结束单元用于按照如下步骤结束等待所述任务Job执行结果:
S101.若仍在所述预设时长内,则在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,然后执行步骤S102,否则执行步骤S103,其中,所述任务Job查询请求消息用于请求所述jenkins服务器反馈对应的任务Job查询响应消息;
S102.在接收到所述任务Job查询响应消息后,若根据所述任务Job查询响应消息判定所述任务Job执行未完成,则返回执行所述步骤S101;
S103.若仍未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
在一个可能的设计中,所述超时结束单元包括任务查询子单元,其中,所述任务查询子单元用于在预设间隔查询时间的周期性到达时向所述jenkins服务器发送任务Job查询请求消息,其中,所述预设间隔查询时间的时长tdelay短于所述预设时长tduration,并满足:N*tdelay≤tduration,N为所述任务Job查询请求消息的最大允许发送次数。
在一个可能的设计中,所述装置还包括通信连接所述构建请求单元的初始化单元:
所述初始化单元,用于发送包含有用户认证信息、用户标识和用于指定所述Jenkins服务器的统一资源定位符URL的初始化请求消息,以便与所述统一资源定位符URL匹配的Jenkins服务器,在根据所述用户认证信息验证通过后,将对应所述用户标识的当前构建执行状态初始化为空闲状态。
在一个可能的设计中,所述装置还包括通信连接所述超时结束单元的接收单元;
所述接收单元,用于在向Jenkins服务器发送任务Job构建请求消息之前,接收用户在人机交互界面上输入的所述预设时长。
在一个可能的设计中,所述装置还包括通信连接所述超时结束单元的警报单元;
所述警报单元,用于在结束等待所述任务Job执行结果之后,生成进程阻塞警报信息,并在人机交互界面上展示所述进程阻塞报警信息。
第三方面,本发明提供了一种计算机设备,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如上第一方面或第一方面中任意一种可能设计的所述方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使所述计算机执行如上第一方面或第一方面中任意一种可能设计的所述方法。
第五方面,本发明提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如上第一方面或第一方面中任意一种可能设计的所述方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有调度Jenkins的流程示意图。
图2是本发明提供的远程调度Jenkins的方法流程示意图。
图3是本发明提供的基于任务查询结果来结束等待的方法流程示意图。
图4是本发明提供的远程调度Jenkins的装置结构示意图。
图5是本发明提供的计算机设备的结构示意图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
应当理解,在本文中若将单元称作与另一个单元“连接”、“相连”或“耦合”时,它可以与另一个单元直相连接或耦合,或中间单元可以存在。相対地,在本文中若将单元称作与另一个单元“直接相连”或“直接耦合”时,表示不存在中间单元。另外,应当以类似方式来解释用于描述单元之间的关系的其他单词(例如,“在……之间”对“直接在……之间”,“相邻”对“直接相邻”等等)。
应当理解,本文使用的术语仅用于描述特定实施例,并不意在限制本发明的示例实施例。若本文所使用的,单数形式“一”、“一个”以及“该”意在包括复数形式,除非上下文明确指示相反意思。还应当理解,若术语“包括”、“包括了”、“包含”和/或“包含了”在本文中被使用时,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
应当理解,还应当注意到在一些备选可能设计中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以非必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清楚。
如图2所示,本实施例第一方面提供的所述远程调度Jenkins的方法,用于在用户终端侧执行,可以但不限于包括有如下步骤S1~S2。
S1.向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果。
在所述步骤S1中,所述用户终端为远程用户所持有的电子设备,可以但不限于包括智能手机、平板电脑和/或台式电脑等设备。所述Jenkins服务器为提供Jenkins集成工具服务的现有服务器,其作为远程调度对象与发起任务Job构建请求的用户终端通信相连。所述任务Job构建请求消息包括但不限于有用于对应所述Jenkins服务器的统一资源定位符URL、用于对应所述任务Job的任务job标识(可以是任务Job名或任务Job唯一标识等形式)、用于构建所述任务Job的构建参数和等待指示位等。前述三者(即所述统一资源定位符URL、所述任务job标识和所述构建参数等)均为现有任务Job构建请求消息中的常规内容,以便指示所述Jenkins服务器完成指定任务Job的构建,并触发执行;而所述等待指示位用于在有效时指示所述Jenkins服务器在所述任务Job执行完成后,反馈对应的所述任务Job执行结果。
在所述步骤S1中,所述任务Job构建请求消息的生成方式(包括对所述统一资源定位符URL、所述任务Job标识和所述构建参数等的具体设置)及发送方式可是现有基于Python三方库jenkinsapi调度Jenkins的常用方式。所述Jenkins服务器在收到所述任务Job构建请求消息后,会根据所述任务Job构建请求消息中的具体内容,按照现有常规方式触发所述任务Job的构建(在成功触发后,还会主动向用户终端反馈一个构建触发成功消息),以及触发所述任务Job执行,得到所述任务Job执行结果。此外,所述Jenkins服务器在得到所述任务Job执行结果后,其具体反馈方式可以但不限于为邮件发送方式。
S2.若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
在所述步骤S2中,所述预设时长可根据所述任务Job的构建及执行所需时长而进行提前预估,一般设置为不小于60秒。例如设置为90秒时,若在90秒内未接收到所述任务Job执行结果(即在第90秒到达时仍还未收到),即可判定服务器侧出现卡死等意外情况,此时可通过结束等待来终止远程调度。
通过上述步骤S1~S2所详细描述的远程调度Jenkins的方法,可使用户终端在远程调度Jenkins的进程中,通过超时判断机制来对调度进程进行时间控制,即在发现超时未收到对应构建请求的反馈执行结果时,能够及时地结束等待,进而使得当服务器侧出现卡死等意外情况时,能够及时终止远程调度,保障了软件开发的正常开展。
本实施例在前述第一方面的基础上,还具体提出了一种基于守护进程来结束等待的可能设计一,即在所述步骤S101中,通过子进程发送所述任务Job构建请求消息,然后等待所述任务Job执行结果;以及在所述步骤S102中,通过在发送所述任务Job构建请求消息时启动的守护进程,开启针对所述预设时长的计时,若在计时到达时,仍未接收到所述任务Job执行结果,则结束用于创建所述子进程和所述守护进程的父进程。具体的,所述守护进程是一类在后台运行的特殊进程,用于执行特定的任务系统(目前很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭;另一些只在需要的时候才启动,完成任务后就自动结束),并可在预设条件满足时终止父进程(其是指已创建一个或多个子进程的进程),由此在本可能设计一中,能够在计时到达且仍未接收到所述任务Job执行结果时,通过所述守护进程来结束所述父进程,进而结束等待所述任务Job执行结果,实现及时终止远程调度的目的。
如图3所示,本实施例在前述第一方面的基础上,还具体提出了另一种基于任务查询结果来结束等待的可能设计二,即在所述步骤S102中,包括但不限于有如下步骤S101~S103。
S101.若仍在所述预设时长内,则在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,然后执行步骤S102,否则执行步骤S103,其中,所述任务Job查询请求消息用于请求所述jenkins服务器反馈对应的任务Job查询响应消息。
在所述步骤S101中,所述任务Job查询请求消息可以但不限于包括用于查询Job构建相关信息的请求消息、用于查询Job构建最后次构建号的请求消息、用于查询Job构建执行结果状态的请求消息和/或用于查询Job构建是否还在构建中的请求消息等。前述具体请求消息均可为现有基于Python三方库jenkinsapi调度Jenkins的常用查询请求消息,具体代码可分别示例如下。
在所述步骤S101中,所述预设时间触发条件可以是预设间隔查询时间的周期性到达时,即在预设间隔查询时间的周期性到达时向所述jenkins服务器发送任务Job查询请求消息,其中,所述预设间隔查询时间的时长tdelay短于所述预设时长tduration,并满足:N*tdelay≤tduration,N为所述任务Job查询请求消息的最大允许发送次数。举例的,所述预设间隔查询时间可为20秒,如此当所述预设时长为70秒时,可在第20秒、第40秒和第60秒时分别发送所述任务Job查询请求消息(此时N为3),并得到对应的任务Job查询响应消息。所述预设时间触发条件也可以是预设间隔查询时间的非周期性到达时,例如当所述预设时长为70秒时,可预设在第40秒、第60秒和第70秒时分别发送所述任务Job查询请求消息(即越到后期越频繁查询),并得到对应的任务Job查询响应消息。通过前述周期性查询,可以确保所有的查询判断都是在定时范围内间隔进行的,利于用户终端实时掌控任务Job执行情况。此外,所述jenkins服务器对所述任务Job查询请求消息的响应方式及对所述任务Job查询响应消息的发送方式均为现有常用方式,
S102.在接收到所述任务Job查询响应消息后,若根据所述任务Job查询响应消息判定所述任务Job执行未完成,则返回执行所述步骤S101。
在所述步骤S102中,根据所述任务Job查询响应消息判定所述任务Job执行未完成的具体方法为现有常规方式,例如针对用于查询Job构建执行结果状态的请求消息,可直接根据反馈的执行结果状态来判断是否执行完成。
S103.若仍未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
通过上述步骤S101~S103所描述的结束等待方式,可以在定时范围内不间断地向jenkins服务器主动询问任务Job的当前执行状态,以便用户终端及时掌控任务Job执行情况,并在超时后及时结束等待。
本实施例在前述第一方面的基础上,还具体提出了另一种用于初始化服务器侧的当前构建执行状态的可能设计三,即在向Jenkins服务器发送任务Job构建请求消息之前,所述方法还包括:向所述Jenkins服务器发送包含有用户认证信息、用户标识和用于指定所述Jenkins服务器的统一资源定位符URL的初始化请求消息,以便所述Jenkins服务器,在根据所述用户认证信息验证通过后,将对应所述用户标识的当前构建执行状态初始化为空闲状态,及时响应所述任务Job构建请求消息。具体的,所述Jenkins服务器根据所述用户认证信息进行验证,以及进行状态初始化的方式,均为现有常规方式。通过前述的初始化请求,可以使发起构建请求的用户能够获取Jenkin服务器侧的使用授权,并提前清空当前正等待构建的请求队列,确保新的任务Job构建请求能够被及时响应,保障超时结束等待的有效性。
本实施例在前述第一方面的基础上,还具体提出了另一种如何获取所述预设时长的可能设计四,即在向Jenkins服务器发送任务Job构建请求消息之前,接收用户在人机交互界面上输入的所述预设时长。具体的,所述人机交互界面的硬件实体可以但不限于为智能手机显示屏或计算机显示屏等,软件实体可以但不限于为网页页面或程序页面等。通过本可能设计四,可以允许用户自由输入所述预设时长,进而方便对时间控制进行人为干预,达到人为想要的精度,提升用户体验。
本实施例在前述第一方面的基础上,还具体提出了另一种在结束等待后如何发出警报的可能设计五,即在结束等待所述任务Job执行结果之后,所述方法还包括:生成进程阻塞警报信息,并在人机交互界面上展示所述进程阻塞报警信息。由于在预设时长内,未接收到所述任务Job执行结果,会影响远程调度Jenkins进程的进一步执行,导致用户终端侧出现进程阻塞情况,因此可通过触发生成所述进程阻塞警报信息来提示用户出现进程阻塞情况,其中,所述进程阻塞警报信息可以但不限于包含有对应的阻塞原因——在预设时长内,未接收到所述任务Job执行结果。由此通过本可能设计五,可以及时地向用户发出阻塞警报,以便用户第一时间感知出现进程阻塞现象,进而快速开展人工排查等工作,解决引起阻塞现象的问题。
如图4所示,本实施例第二方面提供了一种实现第一方面或第一方面中任意一种可能设计所述方法的虚拟装置,包括通信相连的构建请求单元和超时结束单元;
所述构建请求单元,用于向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;
所述超时结束单元,用于在预设时长内,若未接收到所述任务Job执行结果,则结束等待。
在一个可能的设计中,所述构建请求单元,用于通过子进程发送所述任务Job构建请求消息,然后等待所述任务Job执行结果;
所述超时结束单元,用于通过在发送所述任务Job构建请求消息时启动的守护进程,开启针对所述预设时长的计时,若在计时到达时,仍未接收到所述任务Job执行结果,则结束用于创建所述子进程和所述守护进程的父进程。
在一个可能的设计中,所述超时结束单元用于按照如下步骤结束等待所述任务Job执行结果:
S101.若仍在所述预设时长内,则在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,然后执行步骤S102,否则执行步骤S103,其中,所述任务Job查询请求消息用于请求所述jenkins服务器反馈对应的任务Job查询响应消息;
S102.在接收到所述任务Job查询响应消息后,若根据所述任务Job查询响应消息判定所述任务Job执行未完成,则返回执行所述步骤S101;
S103.若仍未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
在一个可能的设计中,所述超时结束单元包括任务查询子单元,其中,所述任务查询子单元用于在预设间隔查询时间的周期性到达时向所述jenkins服务器发送任务Job查询请求消息,其中,所述预设间隔查询时间的时长tdelay短于所述预设时长tduration,并满足:N*tdelay≤tduration,N为所述任务Job查询请求消息的最大允许发送次数。
在一个可能的设计中,所述装置还包括通信连接所述构建请求单元的初始化单元:
所述初始化单元,用于发送包含有用户认证信息、用户标识和用于指定所述Jenkins服务器的统一资源定位符URL的初始化请求消息,以便与所述统一资源定位符URL匹配的Jenkins服务器,在根据所述用户认证信息验证通过后,将对应所述用户标识的当前构建执行状态初始化为空闲状态。
在一个可能的设计中,所述装置还包括通信连接所述超时结束单元的接收单元;
所述接收单元,用于在向Jenkins服务器发送任务Job构建请求消息之前,接收用户在人机交互界面上输入的所述预设时长。
在一个可能的设计中,所述装置还包括通信连接所述超时结束单元的警报单元;
所述警报单元,用于在结束等待所述任务Job执行结果之后,生成进程阻塞警报信息,并在人机交互界面上展示所述进程阻塞报警信息。
本实施例第三方面提供的前述装置的工作过程、工作细节和技术效果,参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
如图4所示,本实施例提供了一种实现第一方面或第一方面中任意一种可能设计所述方法的计算机设备,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如上第一方面或第一方面中任意一种可能设计的所述方法。具体举例的,所述存储器可以但不限于包括随机存取存储器(RAM,Random-Access Memory)、只读存储器(ROM,Read-Only Memory)、闪存(Flash Memory)、先进先出存储器(FIFO,First Input First Output)和/或先进后出存储器(FILO,First Input Last Output)等等;所述处理器可以不限于采用型号为STM32F105系列的微处理器;所述收发器可以但不限于为WiFi(无线保真)无线收发器、蓝牙无线收发器、GPRS(General Packet Radio Service,通用分组无线服务技术)无线收发器和/或ZigBee(紫蜂协议,基于IEEE802.15.4标准的低功耗局域网协议)无线收发器等。此外,所述计算机设备还可以但不限于包括电源模块、显示屏和其它必要的部件。
本实施例提供的前述计算机设备的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
本实施例第四方面提供了一种存储包含第一方面或第一方面中任意一种可能设计所述方法的指令的计算机可读存储介质,即所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面或第一方面中任意一种可能设计所述的方法。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
本实施例第四方面提供的前述计算机可读存储介质的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面或第一方面中任意一种可能设计所述的方法。其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
以上所描述的实施例仅仅是示意性的,若涉及到作为分离部件说明的单元,其可以是或者也可以不是物理上分开的;若涉及到作为单元显示的部件,其可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
最后应说明的是,本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
Claims (10)
1.一种远程调度Jenkins的方法,其特征在于,包括:
向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;
若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
2.如权利要求1所述的方法,其特征在于,向Jenkins服务器发送任务Job构建请求消息,包括:
通过子进程发送所述任务Job构建请求消息,然后等待所述任务Job执行结果;
若在预设时长内,未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果,包括:
通过在发送所述任务Job构建请求消息时启动的守护进程,开启针对所述预设时长的计时,若在计时到达时仍未接收到所述任务Job执行结果,则结束用于创建所述子进程和所述守护进程的父进程。
3.如权利要求1所述的方法,其特征在于,若在预设时长内未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果,包括:
S101.若仍在所述预设时长内,则在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,然后执行步骤S102,否则执行步骤S103,其中,所述任务Job查询请求消息用于请求所述jenkins服务器反馈对应的任务Job查询响应消息;
S102.在接收到所述任务Job查询响应消息后,若根据所述任务Job查询响应消息判定所述任务Job执行未完成,则返回执行所述步骤S101;
S103.若仍未接收到所述任务Job执行结果,则结束等待所述任务Job执行结果。
4.如权利要求3所述的方法,其特征在于,在预设时间触发条件满足时向所述jenkins服务器发送任务Job查询请求消息,包括:
在预设间隔查询时间的周期性到达时向所述jenkins服务器发送任务Job查询请求消息,其中,所述预设间隔查询时间的时长tdelay短于所述预设时长tduration,并满足:N*tdelay≤tduration,N为所述任务Job查询请求消息的最大允许发送次数。
5.如权利要求1所述的方法,其特征在于,在向Jenkins服务器发送任务Job构建请求消息之前,所述方法还包括:
向所述Jenkins服务器发送包含有用户认证信息、用户标识和用于指定所述Jenkins服务器的统一资源定位符URL的初始化请求消息,以便所述Jenkins服务器,在根据所述用户认证信息验证通过后,将对应所述用户标识的当前构建执行状态初始化为空闲状态,及时响应所述任务Job构建请求消息。
6.如权利要求1所述的方法,其特征在于,在向Jenkins服务器发送任务Job构建请求消息之前,所述方法还包括:
接收用户在人机交互界面上输入的所述预设时长。
7.如权利要求1所述的方法,其特征在于,在结束等待所述任务Job执行结果之后,所述方法还包括:
生成进程阻塞警报信息,并在人机交互界面上展示所述进程阻塞报警信息。
8.一种远程调度Jenkins的装置,其特征在于:包括通信相连的构建请求单元和超时结束单元;
所述构建请求单元,用于向Jenkins服务器发送任务Job构建请求消息,其中,所述任务Job构建请求消息用于请求所述Jenkins服务器构建任务Job,并在所述任务Job执行完成后反馈对应的任务Job执行结果;
所述超时结束单元,用于在预设时长内,若未接收到所述任务Job执行结果,则结束等待。
9.一种计算机设备,其特征在于:包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如权利要求1~7中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使所述计算机执行如权利要求1~7中任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367920.2A CN111552579A (zh) | 2020-03-02 | 2020-04-30 | 一种远程调度Jenkins的方法及装置 |
GBGB2006872.2A GB202006872D0 (en) | 2020-03-02 | 2020-05-11 | A quenching device for metallurgical workpiece |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367920.2A CN111552579A (zh) | 2020-03-02 | 2020-04-30 | 一种远程调度Jenkins的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111552579A true CN111552579A (zh) | 2020-08-18 |
Family
ID=71135038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010367920.2A Pending CN111552579A (zh) | 2020-03-02 | 2020-04-30 | 一种远程调度Jenkins的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111552579A (zh) |
GB (1) | GB202006872D0 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035240A (zh) * | 2020-10-09 | 2020-12-04 | 北京达佳互联信息技术有限公司 | 任务管理方法、装置及系统 |
CN112181478A (zh) * | 2020-09-15 | 2021-01-05 | 中信银行股份有限公司 | 一种构建结果获取方法、装置及存储介质 |
CN112035240B (zh) * | 2020-10-09 | 2024-06-21 | 北京达佳互联信息技术有限公司 | 任务管理方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184753A (zh) * | 2013-05-20 | 2014-12-03 | 腾讯科技(深圳)有限公司 | 一种文件传输方法及装置 |
CN106888135A (zh) * | 2015-12-15 | 2017-06-23 | 阿里巴巴集团控股有限公司 | 一种任务状态的查询方法和装置 |
CN107545053A (zh) * | 2017-08-24 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种集群系统缓存查询方法及设备 |
CN107943575A (zh) * | 2017-12-07 | 2018-04-20 | 北京兆易创新科技股份有限公司 | Spi‑nand中的多任务监管方法和装置 |
CN109725931A (zh) * | 2018-12-17 | 2019-05-07 | 中国联合网络通信集团有限公司 | 一种jenkins构建方法及装置 |
-
2020
- 2020-04-30 CN CN202010367920.2A patent/CN111552579A/zh active Pending
- 2020-05-11 GB GBGB2006872.2A patent/GB202006872D0/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184753A (zh) * | 2013-05-20 | 2014-12-03 | 腾讯科技(深圳)有限公司 | 一种文件传输方法及装置 |
CN106888135A (zh) * | 2015-12-15 | 2017-06-23 | 阿里巴巴集团控股有限公司 | 一种任务状态的查询方法和装置 |
CN107545053A (zh) * | 2017-08-24 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种集群系统缓存查询方法及设备 |
CN107943575A (zh) * | 2017-12-07 | 2018-04-20 | 北京兆易创新科技股份有限公司 | Spi‑nand中的多任务监管方法和装置 |
CN109725931A (zh) * | 2018-12-17 | 2019-05-07 | 中国联合网络通信集团有限公司 | 一种jenkins构建方法及装置 |
Non-Patent Citations (2)
Title |
---|
CHUNYUSI1569: "接口调用实现请求超时中断,你有几种方法?", 《HTTPS://BLOG.CSDN.NET/CHUNYUSI1569/ARTICLE/DETAILS/100821671》 * |
WANGJU003: "[Python]通过 python-jenkins 启动需要参数的job|jenkins接口", 《HTTPS://WWW.CNBLOGS.COM/KAERXIFA/P/12004631.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181478A (zh) * | 2020-09-15 | 2021-01-05 | 中信银行股份有限公司 | 一种构建结果获取方法、装置及存储介质 |
CN112035240A (zh) * | 2020-10-09 | 2020-12-04 | 北京达佳互联信息技术有限公司 | 任务管理方法、装置及系统 |
CN112035240B (zh) * | 2020-10-09 | 2024-06-21 | 北京达佳互联信息技术有限公司 | 任务管理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
GB202006872D0 (en) | 2020-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754902B1 (en) | Broadcast message management method and apparatus | |
US20070044099A1 (en) | Prompting for execution or delay of scheduled job | |
TW200400440A (en) | Identity-based distributed computing for device resources | |
CN102035893A (zh) | 一种服务器主动推送数据的方法和系统 | |
CN109858655B (zh) | 预约测试的方法及系统 | |
CN110297722B (zh) | 线程任务通信方法及相关产品 | |
TW201814609A (zh) | 一種資訊推送的方法和系統及用戶端和伺服器 | |
CN110888844B (zh) | 一种数据删除方法、系统、设备及计算机可读存储介质 | |
CN114595186B (zh) | 一种多核处理器的核间通信方法、通信装置 | |
CN115328664B (zh) | 一种消息消费方法、装置、设备及介质 | |
CN108900627B (zh) | 一种网络请求方法、终端装置及存储介质 | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN111552579A (zh) | 一种远程调度Jenkins的方法及装置 | |
CN101699436A (zh) | 资源管理的方法、装置和系统 | |
CN109697112B (zh) | 分布式集约化一站式作业系统和实现方法 | |
CN112379989B (zh) | 一种定时任务进程与队列服务进程管理系统及方法 | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
CN111736961B (zh) | 虚拟机的释放方法及装置、存储介质及电子设备 | |
CN110096378B (zh) | 一种线程间通信方法及相关装置 | |
CN111488207A (zh) | 应用进程保活方法、装置、网络设备及存储介质 | |
CN110149405A (zh) | 一种云端控制移动端应用的方法 | |
CN110809046B (zh) | 一种设备配网方法、装置、电子设备及存储介质 | |
CN112286580A (zh) | 一种用于处理流水线作业的方法、装置及计算机设备 | |
CN114968529A (zh) | 定时器实现方法及相关产品 | |
CN107329819A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200818 |
|
RJ01 | Rejection of invention patent application after publication |