CN110472413B - 基于jenkins的设备管理方法、装置、存储介质及电子设备 - Google Patents
基于jenkins的设备管理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN110472413B CN110472413B CN201910684091.8A CN201910684091A CN110472413B CN 110472413 B CN110472413 B CN 110472413B CN 201910684091 A CN201910684091 A CN 201910684091A CN 110472413 B CN110472413 B CN 110472413B
- Authority
- CN
- China
- Prior art keywords
- container
- jenkins
- task
- host machine
- identification information
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Abstract
本申请实施例公开了一种基于jenkins的设备管理方法、装置、存储介质及电子设备,其中,本申请实施例确定jenkins中待执行的构建任务,获取构建任务的镜像文件;将镜像文件实例化为第一容器,并将构建任务移交至第一容器;从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取目标设备的标识信息;基于标识信息,获取目标设备在宿主机上的路径信息;根据路径信息将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务,实现了真正的设备隔离,以保障持续集成环境的稳定和安全。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种基于jenkins的设备管理方法、装置、存储介质及电子设备。
背景技术
持续集成(Continuous integration,CI)就是在软件项目开发阶段,频繁地将更新代码集成到主干程序。当开发人员提交更新点的代码后,立刻进行构建(如编译、打包)、测试,根据测试结果确定更新点代码和主干代码能否正确地集成在一起,从而帮助开发人员快速发现错误,使产品能够快速迭代,同时保证产品的高质量。Jenkins是常用的构建工具之一。
目前业界成熟的DevOps环境大多围绕Jenkins进行搭建。在资源管理方面,当构建任务使用设备资源时,传统的Jenkins系统没有实现构建任务在完全隔离的环境中进行,导致频繁出现不同的构建任务操作同一台设备的现象,造成多任务的执行出现冲突,难以保障持续集成环境的稳定和安全。
发明内容
本申请实施例提供一种基于jenkins的设备管理方法、装置、存储介质及电子设备,能够实现真正的设备隔离,以保障持续集成环境的稳定和安全。
第一方面,本申请实施例提供一种基于jenkins的设备管理方法,包括:
确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
第二方面,本申请实施例提供一种基于jenkins的设备管理装置,包括:
文件获取模块,用于确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
容器构建模块,用于将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
设备确定模块,用于从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
路径获取模块,用于基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
设备挂载模块,用于根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的基于jenkins的设备管理方法。
第四方面,本申请实施例提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的基于jenkins的设备管理方法。
本申请实施例提供的技术方案,确定jenkins中待执行的构建任务,获取该构建任务的镜像文件,将镜像文件实例化为第一容器,将构建任务移交至第一容器,从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取该目标设备的标识信息,基于标识信息请求目标设备在宿主机上的路径,然后基于该路径将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务,以使构建任务能够在独立的容器内被执行,并且该方案能够将设备的特定路径挂载到该容器,即该容器只能操作到该目标设备,达到完全的沙箱隔离效果,避免出现不同的任务操作同一台设备的现象,能够实现真正的设备隔离,以保障持续集成环境的稳定和安全。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的基于jenkins的设备管理方法的第一种流程示意图。
图2为本申请实施例提供的基于jenkins的设备管理方法的第一种应用场景示意图。
图3为本申请实施例提供的基于jenkins的设备管理方法的第二种流程示意图。
图4为本申请实施例提供的基于jenkins的设备管理方法的二种应用场景示意图。
图5为本申请实施例中构建任务与设备之间的对应关系示意图。
图6为本申请实施例提供的基于jenkins的设备管理装置的结构示意图。
图7为本申请实施例提供的电子设备的第一种结构示意图。
图8为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种基于jenkins的设备管理方法,该基于jenkins的设备管理方法的执行主体可以是本申请实施例提供的基于jenkins的设备管理装置,或者集成了该基于jenkins的设备管理装置的电子设备,其中该基于jenkins的设备管理装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的基于jenkins的设备管理方法的第一种流程示意图。本申请实施例提供的基于jenkins的设备管理方法的具体流程可以如下:
101、确定jenkins中待执行的构建任务,获取构建任务的镜像文件。
持续集成是指频繁地将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。持续集成一般通过自动化构建来验证,自动化构建包括编译、发布、以及自动化测试等。
Jenkins是一款常用的构建工具之一,是一个开源的、可扩展的持续集成、交付、部署的基于web界面的平台,能够进行软件或代码的编译、打包、部署。允许持续集成、持续交付、持续部署等项目,可以处理任何类型的构建或持续集成。
在使用Jenkins系统进行持续集成的过程中,每台宿主机需要执行多个构建任务(job),例如使用Jenkins系统的pipeline(流水线)插件。pipeline插件提供了一组可扩展的工具,通过流水线DSL(domain-specific language,领域特定语言)能够将简单到复杂的交付流水线建模为"代码"。
此外,本申请的方案中,将Docker结合到Jenkins系统中。Docker是一种操作系统层面的虚拟化技术,运行在操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制,通过创建docker容器提供独立的沙盒环境,这个独立的沙盒环境可以作为开发环境。也就是说,docker容器能够使用沙箱机制,相互之间不会有任何接口,因此可以使得jenkins系统中的构建任务可以运行在独立的docker容器中,互不干扰。
请参阅图2,图2为本申请实施例提供的基于jenkins的设备管理方法的应用场景示意图。以基于jenkins的设备管理装置集成在电子设备中为例,电子设备可以作为宿主机,用于进行软件项目的持续集成。宿主机上需要连接多台设备,例如安卓设备,这些设备作为构建任务执行时的设备资源,即可以基于这些设备执行构建任务。
例如,在进行安卓系统的软件项目的持续集成时,将多台安卓设备通过usb(Universal Serial Bus,通用串行总线)数据线连接至宿主机。
电子设备在有需要执行的构建任务时,获取该构建任务的镜像文件。例如,开发人员在宿主机上预先创建好镜像文件,或者从宿主机连接的持续集成服务器获取预先创建的镜像文件,并通过Jenkins系统的web界面设置镜像文件在宿主机上的存储路径。当需要执行构建任务时,开发人员通过jenkins系统操作界面上对应的控件触发任务启动指令,jenkins系统从对应路径处获取对应的镜像文件,以基于该镜像文件执行后续流程。
102、将镜像文件实例化为第一容器,并将构建任务移交至第一容器。
在获取到该镜像文件之后,jenkins系统将该镜像文件实例化为一个docker容器,即第一容器,用于隔离执行该构建任务。也就是说,第一容器是基于镜像文件创建的,即容器中的进程依赖于镜像中的文件,这里的镜像文件中包括进程运行所需要的可执行文件、依赖软件、库文件、配置文件等等。docker容器可以执行包含启动、停止、删除等操作,不同的容器之间是相互隔离的。该实施例中,第一容器用于执行该构建任务,镜像文件中有执行该构建任务所需的各种文件。
宿主机的操作系统一般是linux系统,而linux系统下的usb(Universal SerialBus,通用串行总线)设备一般都会挂载在/dev/bus/usb目录下,挂载的安卓设备作为资源,在目录中以类似文件的形式存在。
而运行在宿主机上的docker容器是与宿主机的操作系统本身是完全隔离的,jenkins系统在执行一些构建任务时,需要外部安卓设备来执行一些操作。要想构建任务能够操作到外部安卓设备,则需要该构建任务对应的docker容器能够操作到外部安卓设备,如果希望docker容器能够操作外部安卓设备,则需要将外部设备对应的路径挂载到容器中对应的位置处。
但是,当安卓设备连接到宿主机时,宿主机的操作系统会随机地为该安卓设备生成一个路径,也就是说,在安卓设备连接到宿主机之前,该路径是无法预先设置的,只能在安卓设备连接到宿主机之后,才能去获取。并且,安卓设备每一次从宿主机上拔下之后,再重新连接到宿主机,宿主机会重新为其分配一个路径,该路径一般不同于上次建立连接时的路径。基于上述原因,导致封闭的docker容器无法获取到每一台外接的安卓设备在宿主机上的路径信息。
传统的jenkins系统方案中,jenkins系统无法获取到每一台安卓设备在宿主机上的具体路径,只能将每一台安卓设备的上一级路径,即/dev/bus/usb整个目录挂载到容器中。而采用这种方案,直接导致将该目录下的全部安卓设备挂载到同一个容器中,也就是说,在该容器内部能够操作所有的安卓设备。而当Jenkins系统上也有多个构建任务时,每一个构建任务对应于一个docker容器,则每一个docker容器都可以操作到全部的安卓设备。
而且,jenkins系统还提供了一种资源管理工具Lockable Resource。LockableResource采用软管理的机制对连接的多台安卓设备进行管理,该资源管理工具的管理机制是,当资源被使用时,不会对资源本身加锁,而是通过在Jenkins系统的流水线中添加lock与release,以将安卓设备标记为占用状态或者空闲状态,一旦开发人员由于疏忽忘记加lock与release,将导致不同的任务操作同一台安卓设备的现象,造成任务执行的冲突,从而导致构建任务不能被正确执行。
此外,对于安卓设备而言,一般是通过adb(Android Debug Bridge,安卓调试桥)工具连接至宿主机的,当将/dev/bus/usb整个目录挂载到容器中,还会导致这些安卓设备共用一套adb环境,而构建任务在执行的过程中,是通过adb服务与安卓设备之间进行交互的,当多台安卓设备共用一套adb环境时,这些安卓设备之间难免会互相影响。而jenkins系统的lockable resource并没有禁止直接通过命令行操作被锁的安卓设备,也没有禁止通过命令行操作adb服务本身,持续集成环境的稳定性和安全性都很低。因此,一旦某一个构建任务在执行过程中重启了adb服务,则其他构建任务对该adb服务的访问都会被重置,导致处于执行中的构建任务发生中断或者出错。
例如,宿主机上同时连接有安卓设备A、安卓设备B、安卓设备C以及安卓设备D。如果此时Jenkins系统有两个在执行的构建任务,分别为构建任务job1和构建按任务job2,并且,构建任务job1和构建任务job2分别位于各自对应的docker容器中,按照传统的jenkins系统资源分配方案,会将/dev/bus/usb整个目录挂载到容器中,也就是说,会将上述四个安卓设备都挂载到两个容器中,需要开发人员在构建任务job1和构建任务job2中分别设置lock与release,实现对占用的安卓设备的加锁与释放。例如,Jenkins系统执行构建任务job1时,占用了安卓设备A,则为安卓设备A加锁,那么在安卓设备A被释放之前,始终处于被占用的状态,在执行构建任务job2时,只能从剩余的安卓设备B、安卓设备C以及安卓设备D中选择一台安卓设备使用。但是,这种持续集成环境是非常不安全以及不稳定的,如果开发人员忘记为构建任务添加lock与release,则会导致两个容器同时占用一台安卓设备,进而造成两个任务的执行发生冲突。或者,即使这两个任务没有操作同一台安卓设备,但是他们仍然共用一套adb服务,如果其中的一个任务重启了adb服务,则会导致另外一个正在执行中的任务出错或者中断。
103、从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取目标设备的标识信息。
104、基于标识信息,获取目标设备在宿主机上的路径信息。
cgroups是Linux内核提供的一种可以限制单个进程或者多个进程使用资源的机制,可以对cpu、内存等资源实现精细化的控制。该实施例中,基于cgroups的devices子系统,能够使用udevadm命令对usb插拔事件进行监控,而通过对usb插拔事件的监控,可以确定插接到宿主机上的外接usb设备的标识信息,以及Linux系统为该usb设备随机生成的路径信息,其中,标识信息可以是序列号。
基于上述方案,宿主机在检测到有usb设备插接到宿主机上时,获取该usb设备的标识信息及其在宿主机上的路径信息,将该标识信息与该路径信息关联后存储。
在生成构建任务对应的容器之后,从当前的设备列表中确定出处于空闲状态的设备,从中选择任意一台作为目标设备。根据路径信息与标识信息之间的映射关系,获取目标设备的标识信息关联的路径信息。
105、根据路径信息将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务。
在获取到目标设备的路径信息后,基于该路径信息将目标设备挂载到第一容器中,挂载完成后,等同于将目标设备直接连接到第一容器,第一容器被赋予了操作该设备的权利。
此时,构建任务对应于唯一的docker容器,并且目标设备被挂载到第一容器后,只能够被第一容器操作,此时目标设备对应于唯一的第一容器。并且挂载于不同容器的各台设备之间使用不同的adb服务,即使一个任务重启其了adb服务,也不会影响到其他任务的执行。实现了真正意义上的设备隔离,使得持续集成中的设备管理更加稳定。
其中,上述构建任务可以是持续集成中任意一个环节的任务,例如,可以是集成、测试、交付等环节的任务,也就是说,构建任务是对持续集成中各种任务的统称,可以是测试任务、集成任务、交付任务、部署任务等等。可以理解的是,本实施例的方案不局限于持续集成,也可以应用于持续部署、持续交付中需要外接设备执行任务的场景。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本申请实施例提供的基于jenkins的设备管理方法,确定jenkins中待执行的构建任务,获取该构建任务的镜像文件,将镜像文件实例化为第一容器,将构建任务移交至第一容器,从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,目标设备即没有被挂载到任何容器的设备,获取该目标设备的标识信息,基于标识信息请求目标设备在宿主机上的路径,然后基于该路径将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务,以使构建任务能够在独立的容器内被执行,并且该方案能够将设备的特定路径挂载到该容器,即该容器只能操作到该目标设备,达到完全的沙箱隔离效果,避免出现不同的任务操作同一台设备的现象,能够实现真正的设备隔离,以保障持续集成环境的稳定和安全。
在一些实施例中,在宿主机中部署资源管理服务,该资源管理服务可以基于宿主机的Linux系统获取到插接到宿主机上的usb设备的具体路径,而宿主机上的jenkins系统可以向该资源管理服务发送请求以获取usb设备的具体路径以及标识信息。
在一些实施例中,资源管理服务以web服务的形式部署在宿主机上,同时为了保持该资源管理服务以稳定状态运行,构建一个docker容器作为第二容器,将资源管理服务运行于第二容器内。宿主机的Linux系统可以通过预设命令行,例如udevadm命令,对usb插拔事件进行监控,以获取到插接的usb设备的标识信息和具体路径,其中,其实现代码如下:
→udevadm monitor-u--subsystem-match=usb--environment
monitor will print the received events for:
UDEV-the event which udev sends out after rule processing
因此,在执行udevadm命令之后,udevadm开始持续监听所有的设备插拔事件并打印出来。基于此,只需要执行该命令后的输出进行过滤分类,就能够获取:设备的插拔事件、设备的id,以及设备的路径,例如获取到设备的路径为/dev/bus/usb/001。并且,当通过udevadm命令获取到新连接的设备的标识信息以及路径信息后,将该标识信息添加到设备列表中,当通过udevadm命令检测到有设备断开连接后,将断开连接的设备的标识信息从设备列表中删除。
请参阅图3,图3为本申请实施例提供的基于jenkins的设备管理方法的第二种流程示意图。
在一些实施例中,确定jenkins中待执行的构建任务,获取构建任务的镜像文件之前,还包括:
106、基于资源管理服务运行预设命令行,对宿主机的设备插拔事件进行监测,以检测宿主机上是否连接了新的设备,其中,资源管理服务运行于第二容器内;
107、当检测到宿主机上连接了新的设备时,获取设备的标识信息,以及宿主机的操作系统为设备分配的路径信息;
108、将标识信息与路径信息关联存储。
基于标识信息,获取目标设备在宿主机上的路径信息,包括:
1041、基于标识信息向资源管理服务发送HTTP请求,以获取目标设备在宿主机上的路径信息,其中,资源管理服务以web服务的形式部署在宿主机上。
请参阅图4,图4为本申请实施例提供的基于jenkins的设备管理方法的二种应用场景示意图。该实施例中,将资源管理服务以web服务的形式运行在一个专门的docker容器(第二容器)内,资源管理服务通过执行udevadm命令,对宿主机上的插拔事件进行监控,当检测到有usb设备插接到宿主机上时,获取该usb设备的标识信息以及路径信息,根据标识信息判断该usb设备是否为预设类型的设备,例如,当使用jenkins系统对安卓设备上的快应用、快游戏等项目的开发时,则根据标识信息判断该usb设备是否为安卓设备,若是安卓设备,则将usb设备的标识与路径信息关联后存储,将该设备添加至设备列表。
Jenkins系统中有构建任务需要执行时,获取该构建任务的镜像文件,并将镜像文件实例化为一个docker容器,作为第一容器,并将构建任务移交到第一容器内,jenkins系统从设备列表确定处于空闲状态的任意一台安卓设备,作为目标设备,获取该目标设备的标识信息,并基于该标识信息向资源管理服务发送HTTP请求,源管理服务响应于HTTP请求将该标识信息的路径信息发送至Jenkins系统。Jenkins系统根据接收到的路径信息将目标设备挂载到第一容器后,则可以在第一容器内,基于目标设备执行该构建任务。
在一些实施例中,根据路径信息将目标设备挂载到第一容器之后,还包括:将目标设备由空闲状态变更为占用状态。在该构建任务执行完毕之后,将第一容器删除,并将目标设备由占用状态变更为空闲状态。以使其他构建任务能够使用该设备。或者,在其他实施例中,根据路径信息将目标设备挂载到第一容器之后,将目标设备的空闲状态这一标记删除。
请参阅图5,图5为本申请实施例中构建任务与设备之间的对应关系示意图。如果jenkins系统上有多个构建任务,例如有三个,则可以按照上述方案,分别为各个构建任务创建容器,并将各个构建任务移交到对应的容器中。然后从资源管理服务处分别请求对应的安卓设备。如图5所示,基于安卓设备A1在宿主机上的路径/dev/bus/usb/001,将安卓设备A1挂载到构建任务job1所在的第一容器D1中;基于安卓设备A2在宿主机上的路径/dev/bus/usb/002,将安卓设备A2挂载到构建任务job2所在的第一容器D2中;基于安卓设备A3在宿主机上的路径/dev/bus/usb/003,将安卓设备A3挂载到构建任务job3所在的第一容器D3中。使得每一个job都可以独立的运行于各自的容器内,同时具有各自的设备作为运行时的外部资源,任务之间互不干扰。
此外,需要说明的是,第二容器与宿主机的操作系统之间的隔离程度小于第一容器与宿主机的操作系统之间的隔离程度,由于第二容器中的资源管理服务需要从宿主机的操作系统处获取设备信息,故第二容器与操作系统之间只是一种浅隔离。
在一实施例中还提供一种基于jenkins的设备管理装置。请参阅图6,图6为本申请实施例提供的基于jenkins的设备管理装置200的结构示意图。其中,该基于jenkins的设备管理装置200应用于电子设备,该基于jenkins的设备管理装置200包括文件获取模块201、容器构建模块202、设备确定模块203、路径获取模块204以及设备挂载模块205,如下:
文件获取模块201,用于确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
容器构建模块202,用于将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
设备确定模块203,用于从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
路径获取模块204,用于基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
设备挂载模块205,用于根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
在一些实施例中,路径获取模块204还用于:基于所述标识信息向资源管理服务发送HTTP请求,以获取所述目标设备在宿主机上的路径信息,其中,所述资源管理服务以web服务的形式部署在所述宿主机上。
在一些实施例中,该基于jenkins的设备管理装置200还包括资源管理模块,该资源管理模块用于:
基于所述资源管理服务运行预设命令行,对所述宿主机的设备插拔事件进行监测,以检测所述宿主机上是否连接了新的设备,其中,所述资源管理服务运行于第二容器内;
当检测到所述宿主机上连接了新的设备时,获取所述设备的标识信息,以及所述宿主机的操作系统为所述设备分配的路径信息;
将所述标识信息与所述路径信息关联存储。
在一些实施例中,该基于jenkins的设备管理装置200还包括状态标记模块,该状态标记模块用于:根据所述路径信息将所述目标设备挂载到所述第一容器之后,将所述目标设备由空闲状态变更为占用状态。
在一些实施例中,该基于jenkins的设备管理装置200还包括容器删除模块,该容器删除模块用于:当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器。
在一些实施例中,状态标记模块还用于:当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器之后,将所述目标设备由占用状态变更为空闲状态。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本申请实施例提供的基于jenkins的设备管理装置与上文实施例中的基于jenkins的设备管理方法属于同一构思,在基于jenkins的设备管理装置上可以运行基于jenkins的设备管理方法实施例中提供的任一方法,其具体实现过程详见基于jenkins的设备管理方法实施例,此处不再赘述。
由上可知,本申请实施例提出的基于jenkins的设备管理装置,文件获取模块201确定jenkins中待执行的构建任务,获取该构建任务的镜像文件,容器构建模块202将镜像文件实例化为第一容器,将构建任务移交至第一容器,设备确定模块203从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取该目标设备的标识信息,路径获取模块204基于标识信息请求目标设备在宿主机上的路径,然后设备挂载模块205基于该路径将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务,以使构建任务能够在独立的容器内被执行,并且该方案能够将设备的特定路径挂载到该容器,即该容器只能操作到该目标设备,达到完全的沙箱隔离效果,避免出现不同的任务操作同一台设备的现象,能够实现真正的设备隔离,以保障持续集成环境的稳定和安全。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图7,图7为本申请实施例提供的电子设备的第一种结构示意图。电子设备300包括处理器301和存储器302。其中,处理器301与存储器302电性连接。
处理器301是电子设备300的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器302内的计算机程序,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器302可用于存储计算机程序和数据。存储器302存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器301通过调用存储在存储器302的计算机程序,从而执行各种功能应用以及数据处理。
在本实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而实现各种功能:
确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
在一些实施例中,请参阅图8,图8为本申请实施例提供的电子设备的第二种结构示意图。电子设备300还包括:射频电路303、显示屏304、控制电路305、输入单元306、音频电路307、传感器308以及电源309。其中,处理器301分别与射频电路303、显示屏304、控制电路305、输入单元306、音频电路307、传感器308以及电源309电性连接。
射频电路303用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏304可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路305与显示屏304电性连接,用于控制显示屏304显示信息。
输入单元306可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元306可以包括指纹识别模组。
音频电路307可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路307包括麦克风。所述麦克风与所述处理器301电性连接。所述麦克风用于接收用户输入的语音信息。
传感器308用于采集外部环境信息。传感器308可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源309用于给电子设备300的各个部件供电。在一些实施例中,电源309可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管图8中未示出,电子设备300还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而实现各种功能:
确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
在一些实施例中,基于所述标识信息,获取所述目标设备在宿主机上的路径信息时,处理器301执行:
基于所述标识信息向资源管理服务发送HTTP请求,以获取所述目标设备在宿主机上的路径信息,其中,所述资源管理服务以web服务的形式部署在所述宿主机上。
在一些实施例中,确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件之前,处理器301还执行:
基于所述资源管理服务运行预设命令行,对所述宿主机的设备插拔事件进行监测,以检测所述宿主机上是否连接了新的设备,其中,所述资源管理服务运行于第二容器内;
当检测到所述宿主机上连接了新的设备时,获取所述设备的标识信息,以及所述宿主机的操作系统为所述设备分配的路径信息;
将所述标识信息与所述路径信息关联存储。
在一些实施例中,根据所述路径信息将所述目标设备挂载到所述第一容器之后,处理器301还执行:
将所述目标设备由空闲状态变更为占用状态。
在一些实施例中,根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务之后,处理器301还执行:
当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器。
在一些实施例中,当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器之后,处理器301还执行:
将所述目标设备由占用状态变更为空闲状态。
由上可知,本申请实施例提供了一种电子设备,所述电子设备确定jenkins中待执行的构建任务,获取该构建任务的镜像文件,将镜像文件实例化为第一容器,将构建任务移交至第一容器,从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取该目标设备的标识信息,基于标识信息请求目标设备在宿主机上的路径,然后基于该路径将目标设备挂载到第一容器,以基于目标设备在第一容器内执行构建任务,以使构建任务能够在独立的容器内被执行,并且该方案能够将设备的特定路径挂载到该容器,即该容器只能操作到该目标设备,达到完全的沙箱隔离效果,避免出现不同的任务操作同一台设备的现象,能够实现真正的设备隔离,以保障持续集成环境的稳定和安全。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的基于jenkins的设备管理方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的基于jenkins的设备管理方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于jenkins的设备管理方法,其特征在于,包括:
对宿主机的设备插拔事件进行监测,以检测所述宿主机上是否连接了新的设备;
当检测到所述宿主机上连接了新的设备时,获取所述设备的标识信息,以及所述宿主机的操作系统为所述设备分配的路径信息,其中,多个设备的路径信息各不相同;
将所述标识信息与所述路径信息关联存储;
确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
2.如权利要求1所述的基于jenkins的设备管理方法,其特征在于,所述基于所述标识信息,获取所述目标设备在宿主机上的路径信息,包括:
基于所述标识信息向资源管理服务发送HTTP请求,以获取所述目标设备在宿主机上的路径信息,其中,所述资源管理服务以web服务的形式部署在所述宿主机上。
3.如权利要求2所述的基于jenkins的设备管理方法,其特征在于,所述资源管理服务运行于第二容器内。
4.如权利要求1所述的基于jenkins的设备管理方法,其特征在于,所述根据所述路径信息将所述目标设备挂载到所述第一容器之后,还包括:
将所述目标设备由空闲状态变更为占用状态。
5.如权利要求1至4任一项所述的基于jenkins的设备管理方法,其特征在于,所述根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务之后,还包括:
当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器。
6.如权利要求5所述的基于jenkins的设备管理方法,其特征在于,所述当检测到所述构建任务执行完成后,删除所述构建任务对应的第一容器之后,还包括:
将所述目标设备由占用状态变更为空闲状态。
7.一种基于jenkins的设备管理装置,其特征在于,包括:
资源管理模块,用于对宿主机的设备插拔事件进行监测,以检测所述宿主机上是否连接了新的设备;
当检测到所述宿主机上连接了新的设备时,获取所述设备的标识信息,以及所述宿主机的操作系统为所述设备分配的路径信息;以及
将所述标识信息与所述路径信息关联存储;
文件获取模块,用于确定jenkins中待执行的构建任务,获取所述构建任务的镜像文件;
容器构建模块,用于将所述镜像文件实例化为第一容器,并将所述构建任务移交至所述第一容器;
设备确定模块,用于从与宿主机连接的多台设备中确定出处于空闲状态的目标设备,获取所述目标设备的标识信息;
路径获取模块,用于基于所述标识信息,获取所述目标设备在宿主机上的路径信息;
设备挂载模块,用于根据所述路径信息将所述目标设备挂载到所述第一容器,以基于所述目标设备在所述第一容器内执行所述构建任务。
8.如权利要求7所述的基于jenkins的设备管理装置,其特征在于,所述路径获取模块还用于:
基于所述标识信息向资源管理服务发送HTTP请求,以获取所述目标设备在宿主机上的路径信息。
9.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至6任一项所述的基于jenkins的设备管理方法。
10.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1 至6任一项所述的基于jenkins的设备管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910684091.8A CN110472413B (zh) | 2019-07-26 | 2019-07-26 | 基于jenkins的设备管理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910684091.8A CN110472413B (zh) | 2019-07-26 | 2019-07-26 | 基于jenkins的设备管理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110472413A CN110472413A (zh) | 2019-11-19 |
CN110472413B true CN110472413B (zh) | 2021-06-01 |
Family
ID=68509581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910684091.8A Active CN110472413B (zh) | 2019-07-26 | 2019-07-26 | 基于jenkins的设备管理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110472413B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124469B (zh) * | 2019-11-25 | 2022-07-08 | 江苏艾佳家居用品有限公司 | 一种基于Docker镜像元数据管理的持续发布系统 |
CN111045737B (zh) * | 2019-11-29 | 2023-09-19 | 惠州Tcl移动通信有限公司 | 设备标识获取方法、装置、终端设备和存储介质 |
CN112513750A (zh) * | 2020-03-10 | 2021-03-16 | 深圳市大疆创新科技有限公司 | 设备控制系统、装置及方法 |
CN111459539B (zh) * | 2020-04-07 | 2023-03-28 | 中国建设银行股份有限公司 | 基于镜像分层的持续集成流水线运行方法及装置 |
CN111600955B (zh) * | 2020-05-18 | 2023-03-28 | 山东汇贸电子口岸有限公司 | 一种基于WebSocket到前台的处理方法及系统 |
CN112084003A (zh) * | 2020-08-17 | 2020-12-15 | 北京字节跳动网络技术有限公司 | 一种隔离数据的方法、装置、介质和电子设备 |
CN113704081A (zh) * | 2020-10-15 | 2021-11-26 | 天翼智慧家庭科技有限公司 | 一种应用程序兼容性自动化测试方法和系统 |
CN112328328B (zh) * | 2020-11-24 | 2023-07-25 | 北京百度网讯科技有限公司 | 设备驱动重载的方法、装置、设备以及存储介质 |
CN113076170B (zh) * | 2021-06-03 | 2021-09-17 | 统信软件技术有限公司 | 一种远程协助方法、系统、装置、计算设备及存储介质 |
CN113377665A (zh) * | 2021-06-25 | 2021-09-10 | 北京百度网讯科技有限公司 | 基于容器技术的测试方法、装置、电子设备及存储介质 |
CN113608828B (zh) * | 2021-06-30 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种防护方法及其相关设备 |
CN114172904B (zh) * | 2021-12-02 | 2024-02-13 | 上海众源网络有限公司 | 一种Jenkins信息处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536888A (zh) * | 2014-12-24 | 2015-04-22 | 网易(杭州)网络有限公司 | 移动设备的游戏测试方法与系统 |
CN105335210A (zh) * | 2014-07-30 | 2016-02-17 | 小米科技有限责任公司 | 分发任务的方法及装置 |
CN105630488A (zh) * | 2015-12-18 | 2016-06-01 | 上海爱数信息技术股份有限公司 | 一种基于docker容器技术的持续集成实现方法 |
CN108039963A (zh) * | 2017-12-05 | 2018-05-15 | 腾讯科技(深圳)有限公司 | 一种容器配置方法、装置及存储介质 |
CN108733553A (zh) * | 2017-04-18 | 2018-11-02 | 北京嘀嘀无限科技发展有限公司 | 基于docker的测试装置的配置方法、装置和系统 |
-
2019
- 2019-07-26 CN CN201910684091.8A patent/CN110472413B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335210A (zh) * | 2014-07-30 | 2016-02-17 | 小米科技有限责任公司 | 分发任务的方法及装置 |
CN104536888A (zh) * | 2014-12-24 | 2015-04-22 | 网易(杭州)网络有限公司 | 移动设备的游戏测试方法与系统 |
CN105630488A (zh) * | 2015-12-18 | 2016-06-01 | 上海爱数信息技术股份有限公司 | 一种基于docker容器技术的持续集成实现方法 |
CN108733553A (zh) * | 2017-04-18 | 2018-11-02 | 北京嘀嘀无限科技发展有限公司 | 基于docker的测试装置的配置方法、装置和系统 |
CN108039963A (zh) * | 2017-12-05 | 2018-05-15 | 腾讯科技(深圳)有限公司 | 一种容器配置方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110472413A (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110472413B (zh) | 基于jenkins的设备管理方法、装置、存储介质及电子设备 | |
KR102048111B1 (ko) | 보안 펌웨어 업데이트 기법 | |
CN108733553B (zh) | 基于docker的测试装置的配置方法、装置和系统 | |
CN105190550B (zh) | 用于启动具有多个中央处理器的计算机系统的方法 | |
US8972973B2 (en) | Firmware update discovery and distribution | |
CN104932926B (zh) | 智能操作系统平台中实现设备与驱动动态匹配的系统及方法 | |
US9110761B2 (en) | Resource data structures for firmware updates | |
US11385903B2 (en) | Firmware update patch | |
CN108141378B (zh) | Vnfd中的休眠vdu | |
CN111527474A (zh) | 软件功能的动态交付 | |
WO2012138046A1 (ko) | 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 | |
EP3207453B1 (en) | Api versioning independent of product releases | |
CN110659104B (zh) | 一种业务监控方法及相关设备 | |
CN107861827B (zh) | 卡屏检测方法、移动终端及计算机可读存储介质 | |
US20180349131A1 (en) | Windows support of a pluggable ecosystem for universal windows application stores | |
CN113051088B (zh) | 程序加载方法、装置、设备及计算机可读介质 | |
CN113760325A (zh) | 容器环境更新方法及装置 | |
CN112231231A (zh) | 云端服务的调试方法、系统及装置 | |
CN110825417A (zh) | 应用程序更新方法及系统 | |
US20240095041A1 (en) | Peripheral device communication | |
CN113835846B (zh) | k8s集群的创建方法、装置及计算机可读存储介质 | |
CN113805858B (zh) | 持续部署脚本语言开发的软件的方法和装置 | |
KR102485154B1 (ko) | 전력 통신 서비스 | |
CN115840617A (zh) | 一种调试方法、系统及相关装置 | |
KR100892286B1 (ko) | 다중 파티션 의존성을 지원하는 임베디드 시스템 통합 설정방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |