本公开是关于一种基于Jenkins平台的任务分配方法及装置,所述方法包括:在数据库中查询待执行状态的任务,待执行状态的任务为未被任务执行节点执行完成的任务,依次将待执行状态的任务平均分配给Jenkins平台上所有的任务执行节点,同时更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成,在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于任务积压状态的任务执行节点的数量时,关闭所有执行中的任务,将所有执行中的任务的状态更新为待执行,在第二预设时间后,重新在数据库中查询待执行状态的任务。本公开可以解决资源浪费问题,提高整体的任务执行效率。
【技术实现步骤摘要】
本公开涉及软件持续集成领域,尤其涉及一种基于Jenkins平台的任务分配方法及装置。
技术介绍
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件做到可以持续集成,用于监控持续重复的工作,如安卓/iOS软件自动打包、自动测试、软件发布、网站监控等工作。Jenkins平台上有多个节点同时执行大量同类任务时,相关的任务分配方法是,首先在Jenkins平台建立多个任务执行节点和一个任务分配节点,接收到任务后,由任务分配节点平均分配同类任务给每个任务执行节点执行,预设时间段之后,任务分配节点查看是否有未完成任务的节点,若有则等待,若没有则继续向所有任务执行节点平均分配后续接收的任务。但是,由于每个任务执行节点的执行能力不同,个别任务执行节点在执行过程中还会出现异常,因此在预设时间段之后,会出现有的任务执行节点呈空闲状态,有的任务执行节点任务积压的情况,任务积压的任务执行节点持续处于忙碌状态,而其它任务执行结点处于空闲状态,会阻塞后续任务的分配执行,造成资源浪费,任务执行效率低。
技术实现思路
为克服相关技术中存在的问题,本公开提供一种基于Jenkins平台的任务分配方法及装置。所述技术方案如下:根据本公开实施例的第一方面,提供一种基于Jenkins平台的任务分配方法,包括:在数据库中查询待执行状态的任务,所述待执行状态的任务为未被任务执行节点执行完成的任务;依次将待执行状态的任务平均分配给所述Jenkins平台上所有的任务执行节点,同时更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成;在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于任务积压状态的任务执行节点的数量时,关闭所有执行中的任务,将所有执行中的任务的状态更新为待执行;在第二预设时间后,重新在所述数据库中查询待执行状态的任务。本公开的实施例提供的技术方案可以包括以下有益效果:通过任务池存储接收到的任务,在数据库中存储一段时间段内的任务并记录任务的状态,将处于积压状态的任务执行节点执行中的任务重新分配,既可以使得处于空闲状态的任务执行节点继续工作,解决资源浪费问题,还可避免处于积压状态的任务执行节点阻塞后续任务的分配执行,从而提高了整体的任务执行效率。进一步地,还包括:扫描任务池;确定所述任务池中有任务时,将任务池中的所有任务移入所述数据库,同时记录所有任务的任务状态为待执行;确定所述任务池中没有任务时,等待第三预设时间后再次扫描所述任务池。进一步地,在所述第一预设时间后,还包括:确定每一任务执行节点的状态。进一步地,所述确定每一任务执行节点的状态,包括:在任务执行节点上的任务小于0时,确定所述任务执行节点的状态为空闲状态;在任务执行节点上的任务大于预设阈值时,确定所述任务执行节点的状态为任务积压状态。可选的,预设阈值为所述Jenkins平台上所有的任务执行节点个数的三倍数值。本公开的实施例提供的技术方案可以包括以下有益效果:通过确定出任务执行节点上的任务大于预设阈值时任务执行节点的状态为任务积压状态,将处于积压状态的任务执行节点执行中的任务重新分配,既可以使得处于空闲状态的任务执行节点继续工作,解决资源浪费问题,还可避免处于积压状态的任务执行节点阻塞后续任务的分配执行,从而提高了整体的任务执行效率。可选的,还包括:确定是否存在处于任务积压状态的任务执行节点。本公开的实施例提供的技术方案可以包括以下有益效果:通过首先确定是否存在处于任务积压状态的任务执行节点,若有则执行下一步的重新分配操作,若没有则返回扫描任务池,可以进一步减少处理时间,提高处理效率。进一步地,还包括:确定处于空闲状态的任务执行节点的数量小于处于任务积压状态的任务执行节点的数量时,扫描任务池。本公开的实施例提供的技术方案可以包括以下有益效果:在处于空闲状态的任务执行节点的数量小于处于任务积压状态的任务执行节点的数量时,扫描任务池,不影响正常的任务执行。根据本公开实施例的第二方面,提供一种基于Jenkins平台的任务分配装置,包括:查询模块,被配置为在数据库中查询待执行状态的任务,所述待执行状态的任务为未被任务执行节点执行完成的任务;分配模块,被配置为依次将待执行状态的任务平均分配给所述Jenkins平台上所有的任务执行节点;状态记录模块,被配置为更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成;处理模块,被配置为在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于任务积压状态的任务执行节点的数量时,关闭所有执行中的任务,所述状态记录模块还被配置为将所有执行中的任务的状态更新为待执行;所述查询模块还被配置为在第二预设时间后,重新在所述数据库中查询待执行状态的任务。本公开的实施例提供的技术方案可以包括以下有益效果:通过任务池存储接收到的任务,在数据库中存储一段时间段内的任务并记录任务的状态,将处于积压状态的任务执行节点执行中的任务重新分配,既可以使得处于空闲状态的任务执行节点继续工作,解决资源浪费问题,还可避免处于积压状态的任务执行节点阻塞后续任务的分配执行,从而提高了整体的任务执行效率。进一步地,还包括:第一扫描模块,被配置为扫描任务池;确定所述任务池中有任务时,将任务池中的所有任务移入所述数据库,所述状态记录模块还被配置为同时记录所有任务的任务状态为待执行;确定所述任务池中没有任务时,等待第三预设时间后再次扫描所述任务池。进一步地,还包括:第一确定模块,被配置为在所述第一预设时间后,确定每一任务执行节点的状态。进一步地,所述第一确定模块包括:第一确定子模块,被配置为在任务执行节点上的任务小于0时,确定所述任务执行节点的状态为空闲状态;第二确定子模块,被配置为在任务执行节点上的任务大于预设阈值时,确定所述任务执行节点的状态为任务积压状态。可选的,预设阈值为所述Jenkins平台上所有的任务执行节点个数的三倍数值。本公开的实施例提供的技术方案可以包括以下有益效果:通过确定出任务执行节点上的任务大于预设阈值时任务执行节点的状态为任务积压状态,将处于积压状态的任务执行节点执行中的任务重新分配,既可以使得处于空闲状态的任务执行节点继续工作,解决资源浪费问题,还可避免处于积压状态的任务执行节点阻塞后续任务的分配执行,从而提高了整体的任务执行效率。可选的,还包括:第二确定模块,被配置为确定是否存在处于任务积压状态的任务执行节点。本公开的实施例提供的技术方案可以包括以下有益效果:通过首先确定是否存在处于任务积压状态的任务执行节点,若有则执行下一步的重新分配操作,若没有则返回扫描任务池,可以进一步减少处理时间,提高处理效率。进一步地,还包括:第二扫描模块,被配置为在所述处理模块确定处于空闲状态的任务执行节点的数量小于处于任务积压状态的任务执行节点的数量时,扫描任务池。本公开的实施例提供的技术方案可以包括以下有益效果:在处于空闲状态的任务执行节点的数量小于处于任务积压状态的任务执行节点的数量时,扫描任务池,不影响正常的任务执行。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出本文档来自技高网...
【技术保护点】
一种基于Jenkins平台的任务分配方法,其特征在于,包括:在数据库中查询待执行状态的任务,所述待执行状态的任务为未被任务执行节点执行完成的任务;依次将待执行状态的任务平均分配给所述Jenkins平台上所有的任务执行节点,同时更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成;在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于任务积压状态的任务执行节点的数量时,关闭所有执行中的任务,将所有执行中的任务的状态更新为待执行;在第二预设时间后,重新在所述数据库中查询待执行状态的任务。
【技术特征摘要】
1.一种基于Jenkins平台的任务分配方法,其特征在于,包括:在数据库中查询待执行状态的任务,所述待执行状态的任务为未被任务执行节点执行完成的任务;依次将待执行状态的任务平均分配给所述Jenkins平台上所有的任务执行节点,同时更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成;在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于任务积压状态的任务执行节点的数量时,关闭所有执行中的任务,将所有执行中的任务的状态更新为待执行;在第二预设时间后,重新在所述数据库中查询待执行状态的任务。2.根据权利要求1所述的方法,其特征在于,还包括:扫描任务池;确定所述任务池中有任务时,将任务池中的所有任务移入所述数据库,同时记录所有任务的任务状态为待执行;确定所述任务池中没有任务时,等待第三预设时间后再次扫描所述任务池。3.根据权利要求1或2所述的方法,其特征在于,在所述第一预设时间后,还包括:确定每一任务执行节点的状态。4.根据权利要求3所述的方法,其特征在于,所述确定每一任务执行节点的状态,包括:在任务执行节点上的任务小于0时,确定所述任务执行节点的状态为空闲状态;在任务执行节点上的任务大于预设阈值时,确定所述任务执行节点的状态为任务积压状态。5.根据权利要求4所述的方法,其特征在于,预设阈值为所述Jenkins平台上所有的任务执行节点个数的三倍数值。6.根据权利要求3所述的方法,其特征在于,还包括:确定是否存在处于任务积压状态的任务执行节点。7.根据权利要求1所述的方法,其特征在于,还包括:确定处于空闲状态的任务执行节点的数量小于处于任务积压状态的任务执行节点的数量时,扫描任务池。8.一种基于Jenkins平台的任务分配装置,其特征在于,包括:查询模块,被配置为在数据库中查询待执行状态的任务,所述待执行状态的任务为未被任务执行节点执行完成的任务;分配模块,被配置为依次将待执行状态的任务平均分配给所述Jenkins平台上所有的任务执行节点;状态记录模块,被配置为更新已分配的任务的状态为执行中,在每个任务被执行完成时,更新被执行完成的任务的状态为完成;处理模块,被配置为在第一预设时间后,确定处于空闲状态的任务执行节点的数量大于处于...
【专利技术属性】
技术研发人员:于淼,梁博,秦利园,
申请(专利权)人:北京小米移动软件有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。