CN113515293B - 一种管理DevOps工具链的方法和系统 - Google Patents
一种管理DevOps工具链的方法和系统 Download PDFInfo
- Publication number
- CN113515293B CN113515293B CN202110477300.9A CN202110477300A CN113515293B CN 113515293 B CN113515293 B CN 113515293B CN 202110477300 A CN202110477300 A CN 202110477300A CN 113515293 B CN113515293 B CN 113515293B
- Authority
- CN
- China
- Prior art keywords
- devops
- toolchain
- original
- target
- docker
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种管理DevOps工具链的方法和系统,所述方法包括:获取原始DevOps工具链;得到包含所述原始DevOps工具链的一个Docker镜像;在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链。本发明实施例提供的方法和系统,基于Docker镜像工具包,为Jenkins流水线单独安装工具,并在流水线实例消亡后自动卸载,避免了服务器中DevOps工具链的管理混乱,提高了DevOps工具链的管理效率和应用效率。
Description
技术领域
本发明涉及软件信息技术领域,特别是涉及一种管理DevOps工具链的方法和一种管理DevOps工具链的系统。
背景技术
Jenkins是一个开源的、可扩展的持续集成、交付、部署的基于web界面的软件开发运维平台,允许持续集成和持续交付项目。为了满足用户的特定需求,Jenkins提供了数量众多、功能各异的工具,这些工具也使得Jenkins的功能得到了极大程度的拓展。
但是,目前Jenkins使用插件管理器来配置这些工具,只针对工具的鉴权和调用,还是需要用户手动安装工具和提供配置信息。并且,如果工具数目增多,安装工具、管理工具、配置Jenkins,以及,工具的鉴权管理等各方面操作都需要花费庞大的人力物力来完成。而这些已安装的种类繁多、还可能存在各种历史版本的DevOps工具链,也将占用大量的服务器CPU资源和内存资源。而且,这些DevOps工具链不仅使用权限配置繁杂、环境配置复杂,造成工具利用率和服务器性能低下,还会向外暴露过多端口,使得服务器存在巨大的网络安全隐患。
发明内容
鉴于上述问题,本发明实施例提出了一种克服上述问题或者至少部分地解决上述问题的一种管理DevOps工具链的方法和一种管理DevOps工具链的系统。
为了解决上述问题,本发明实施例提供了一种管理DevOps工具链的方法,所述方法包括:
获取原始DevOps工具链;
得到包含所述原始DevOps工具链的一个Docker镜像;
在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;
在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链。
可选的,获取原始DevOps工具链,包括:
从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
可选的,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
可选的,在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链,包括:
在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系;
接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径;
根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链;
基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
可选的,在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链,包括:
在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
本发明实施例还提供了一种管理DevOps工具链的系统,所述系统包括:
工具获取单元,用于获取原始DevOps工具链;
Docker镜像生成单元,用于得到包含所述原始DevOps工具链的一个Docker镜像;
工具安装单元,用于在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;
工具卸载单元,用于在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链。
可选的,所述工具获取单元,包括:
远程工具获取单元,用于从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
可选的,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
可选的,所述工具安装单元,包括:
镜像包引用单元,用于在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系;
安装请求接收单元,用于接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径;
镜像查询单元,用于根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链;
镜像安装单元,用于基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
可选的,所述工具卸载单元,包括:
回调函数卸载单元,用于在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
从上述技术方案可以看出,本发明实施例提供了一种管理DevOps工具链的方法和一种管理DevOps工具链的系统,基于包含原始DevOps工具链的Docker镜像,根据用户或环境的需求,以镜像安装的方式,为各个Jenkins流水线单独自动镜像安装工具,并在流水线实例消亡后自动卸载工具,避免了复杂的权限配置和环境配置,以及,避免了在服务器环境中安装工具总量过多导致的管理混乱,节省管理工具的人力物力。并且,各个Jenkins流水线之间的工具均单独运行互不干扰,也提高了DevOps工具链的管理效率和应用效率,能够及时释放工具占用的服务器CPU资源和内存资源,有效提高服务器性能,还能避免工具端口长期暴露,提高了服务器的网络安全性。
附图说明
图1是本发明实施例提供的一种管理DevOps工具链的方法的步骤流程图;
图2是本发明实施例提供的一种Docker镜像工具包的示意图;
图3是本发明实施例提供的一种安装目标DevOps工具链的方法;
图4是本发明实施例提供的一种流水线安装工具包的流程示意图;
图5是本发明实施例提供的一种管理DevOps工具链的系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,软件开发运维已经形成了一套成熟且完整的流程链路,即,开发→构建→集成→测试→交付→部署,在此基础上,出现了众多平台,用以执行这套流程,满足用户软件开发运维的需求,Jenkins就是其中之一。Jenkins是一个开源的、提供友好操作界面的CI(Continuous Integration,持续集成)工具,主要用于作为CI和/或者CD(ContinuousDelivery,持续部署)的调度中心,持续、自动的构建/测试软件项目,以及,监控外部任务的运行。Jenkins通常与版本管理工具、构建工具结合使用。
Jenkins功能强大的重要原因之一在于其提供了数量众多的插件,这些插件作为用户进行软件开发运维的过程中的开发工具,为用户提供各色各样的功能,帮助用户更好的进行整个过程的开发运维,诸如用于用户认证和授权的插件GitlabAuthentication,用于管理源代码的插件Subversion等等。
目前,Jenkins平台内的DevOps工具链的数量已经到达2000多个,而且,随着软件技术的发展,这些工具的数量未来还将进一步增加。而Jenkins服务器中不仅需要安装这些工具,各个工具可能还需要不同的环境配置,占用服务器大量存储资源和内存资源,还需要保存这些工具与众多用户、流水线之间复杂的权限配置关系,造成环境复杂、性能差、服务器反应缓慢等问题。并且,目前DevOps工具链必须由使用者亲自安装和管理,并由使用者提供配置到DevOps工具链管理中的token配置,再由服务器管理员通过插件管理器对这些数量众多的工具进行安装和管理,也需要消耗大量的人力物力,还容易出现管理混乱、异常出错的问题。此外,这些工具安装在服务器中,用户虽然能直接对其进行调用,但同时这些工具也直接长期对外暴露了过多端口,使得服务器容易通过这些端口遭受恶意攻击,网络安全存在巨大隐患。
而且,考虑到在一些情况下,一些DevOps工具链只在个别Jenkins流水线中使用,在有限次的使用后就再不需要了,这种情况下工具仍然在服务器中运行,还需要管理员来维护和管理,耗费很多不必要的时间和精力,也占用了不必要的服务器资源。
为此,本实施例提出一种管理DevOps工具链的方法和一种管理DevOps工具链的系统,将需要的DevOps工具链打包成一个Docker镜像,基于用户或环境的需求,以镜像安装的方式,为各个Jenkins流水线自动镜像安装单独的工具,并在流水线实例消亡后自动卸载,不再存在复杂的权限配置,避免了在服务器环境中安装工具总量过多导致的管理混乱,也免去了过多端口的暴露,提高了服务器的网络安全性,而各个Jenkins流水线之间的工具均单独运行互不干扰,也提高了DevOps工具链的管理效率和应用效率,能够有效提高服务器性能,也能避免工具端口长期暴露,提高了服务器的网络安全。
下面结合附图对本发明实施例进行说明。
参照图1,图1是本发明实施例提供的一种管理DevOps工具链的方法的步骤流程图。如图1所示,本发明实施例提供了一种管理DevOps工具链的方法,所述方法包括如下步骤:
S31,获取原始DevOps工具链。
其中,所述原始DevOps工具链可以包括对所有需要应用的Jenkins流水线而言,现有的Jenkins平台上已安装的所有插件,即,流水线所需的所有工具,还可以包括从其他渠道可以获得的潜在可用的工具,比如开源工具、商用工具。而考虑到本申请基于Docker镜像(image)的方式管理工具,这些DevOps工具链需要能够以Docker方式启动。
为此,本发明还提供了一种获取原始DevOps工具链的方法,包括:
从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
预设的开源仓库可以是各类常见的开源项目的远程仓库,比如,Github远程仓库。由于Jenkins自身的开发运维属性,从这些开源仓库中获得的工具,也需要能够在Jenkins流水线的执行流程链路上发挥作用,或者发挥潜在作用,才能够作为DevOps工具链,添加到Jenkins平台中。
具体地,在可选的一种实施方式中,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
其中,代码检查插件,例如Sonarqube,用以完成代码质量检查;制品检查插件,例如Trivy,用以针对Docker镜像安全检查;自动化测试插件,例如JMeter,用以完成自动化测试;报告输出插件,例如Swagger,用以完成接口文档输出;日志收集插件,例如EFK(ElasticSearch,Fluentd,Kibana)编译插件,例如Gradle,用以完成自动化构建;质量门禁插件,例如Sonarqube Quality Gate,用以对代码质量进行控制;自定义插件,包括用以满足其他特定服务需求的插件。
通过本实施例,对用户有潜在需要的所有DevOps工具链进行获取,以便统一进行管理。
S32,得到包含所述原始DevOps工具链的一个Docker镜像。
其中,Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。而容器完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
而Docker镜像可以看作是一个特殊的文件系统,包含了运行容器的各种资源的文件系统。Docker镜像除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数,比如匿名卷、环境变量、用户等。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
具体地,Jenkins平台将原始DevOps工具链打包成一个Docker镜像,该Docker镜像则包含原始DevOps工具链,却不直接供Jenkins流水线调用,后续在需要使用某一DevOps工具链时,直接在该Docker镜像内获取对应的镜像文件,则可以实现快速的自动安装,无需额外由用户设定配置参数和选择配置环境。
以及,由于软件开发技术的进步和发展是持续的,DevOps工具链也需要不断更新和增加,在一种可选的实施方式中,还可以在发现新的工具可以作为可用的DevOps工具链后,或者,用户对Jenkins提出新的要求需要添加新的工具后,可以将新的工具按照统一的方式与当前的Docker镜像中的原始DevOps工具链进行合并,重新打包成一个新的Docker镜像,完成对Docker镜像内原始DevOps工具链的更新。
由于打包形成的Docker镜像中的原始DevOps工具链并不能直接被Jenkins流水线调用以完成开发流程中的任务,也不会直接暴露DevOps工具链的端口,因此,大多数DevOps工具链在不被使用时,都使服务器处于安全的状态下。
参照图2,图2是本发明实施例提供的一种Docker镜像工具包的示意图。结合上述步骤S31,如图2所示,可选地,本实施例提供了一种Docker镜像工具包,所述Docker镜像工具包至少包括各类型DevOps工具链的镜像文件,具体包括如下类型的DevOps工具链:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
在本实施例中,Docker镜像工具包可以对原始DevOps工具链进行分类,每一种工具类型对应相应的原始DevOps工具链,以便后续服务器根据安装路径选取目标DevOps工具链的镜像文件。
S33,在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链。
其中,目标DevOps工具链是该Jenkins流水线中处理流程所需的DevOps工具链,根据用户或环境条件的需求确定,可以安装在同一个Docker容器内。
其中,每一条Jenkins流水线都可以看作一个软件开发运维的任务实例,Jenkins为数量众多的用户提供软件开发运维的支持,服务器一般同时执行着Jenkins流水线,每一条Jenkins流水线包含了软件开发运维的一段流程或整个流程。以Devops为例,其完整的执行流程一般包括开发→构建→集成→测试→交付→部署。其中,开发即编译代码;构建即包括搭建环境在内的自动化的构建流程,以进行编译、发布、自动化测试等流程;集成即持续集成,是指不间断地定期将代码集成到主干,以快速发现错误,并防止分支大幅脱离主干;测试即对集成后的代码进行测试;交付即持续交付,指不间断地定期将软件的新版本,交付给质量团队或者用户评审;部署即持续部署,是指在代码通过评审以后,自动部署到生产环境。
每一条流水线均可能基于用户需求调用各类相同或不同的DevOps工具链,以实现各种差异化的功能。因此,本实施例在每一条Jenkins流水线构建初始化时,响应用户对DevOps工具链的启动安装需求。
以及,Jenkins虽然是基于Java开发的软件平台,但是却可以兼容多种语言,比如C++等,则具体的语言环境条件也可能提出不同的工具安装需求,为此,本实施例在每一条Jenkins流水线构建初始化时,响应环境条件对DevOps工具链的启动安装需求。
Docker镜像中的DevOps工具链不可以直接进行使用,在接收到对应DevOps工具链的安装请求后,服务器调用Docker镜像中的DevOps工具链,在不需要分别配置环境的情况下即可以进行单独的镜像安装,且该次安装的DevOps工具链仅供该Jenkins流水线调用,即,仅为该Jenkins流水线提供功能服务。
优选地,可以将每条Jenkins流水线对应的所有目标DevOps工具链安装到同一个容器内,通过DevOps工具链的隔离化安装,以便于完成该容器内所有DevOps工具链与Jenkins流水线的对应管理,包括后续DevOps工具链的快速调用和集中卸载。
在本实施例中,DevOps工具链通过镜像安装的方式进行安装,不仅可以迅捷快速地满足用户或环境条件的需求,且每一个容器内的DevOps工具链仅与一条Jenkins流水线相对应,避免了繁杂的环境配置和鉴权管理,有效地提高了DevOps工具链的管理效率和应用效率。
S34,在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链。
作为单独的任务实例,每一条Jenkins流水线在执行完毕后,其任务实例即会自动地消亡,在这种情况下,专门为该Jenkins流水线安装的DevOps工具链已经完成了使用,可以自动地将DevOps工具链卸载掉,以释放DevOps工具链、调用关系、配置信息等占用的服务器资源。
可选地,DevOps工具链作为用于Jenkins流水线的工具,可以在产出工具使用结果报告,并反馈给用户后,表明为该Jenkins流水线安装的DevOps工具链已经完成了使用,可以自动执行卸载。当为该Jenkins流水线所安装的原始DevOps工具链均安装于同一个容器时,在为该Jenkins流水线所安装的原始DevOps工具链均已完成使用后,彻底删除该容器,以完全释放DevOps工具链、调用关系、配置信息、容器占用的服务器资源。
在本实施例中,由于服务器中仅有Docker镜像长期存在的,而流水线直接调用的安装的工具是即时应用,安装的工具仅被一个Jenkins流水线调用,权限配置、环境配置简单,易于管理,安装的工具随Jenkins流水线实例的消亡而彻底卸载,极大节约了服务器CPU资源、内存资源的占用。并且,各个Jenkins流水线之间的工具均单独运行互不干扰,也提高了DevOps工具链的管理效率和应用效率,能够有效提高服务器性能,还能避免安装的工具端口长期暴露,提高了服务器的网络安全。
参照图3,图3是本发明实施例提供的一种安装目标DevOps工具链的方法。考虑到工具数量众多,为方便用户或环境条件从镜像中快速查找需要的工具,并实现更快速的工具自动安装,可以通过选择页面提供与安装请求对应的工具的安装路径,进而使服务器能够进一步快速地对工具进行独立的安装。为此,如图3所示,在一种可选的实施方式中,本发明还提供了一种安装目标DevOps工具链的方法,所述方法具体包括:
S41,在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系。
在本实施例中,流水线不能直接调用Docker镜像内的工具,但需要从Docker镜像中引用工具,进而实现该工具的安装,因此,在每一条Jenkins流水线构建初始化时,即可建立所述Jenkins流水线与所述Docker镜像之间的引用关系。
S42,接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径。
其中,DevOps工具链页面根据用户对目标DevOps工具链的操作命令,生成目标DevOps工具链的安装请求,将携带目标DevOps工具链的名称和路径的安装请求发送给服务器。
在本实施例中,服务器在每一次完成Docker镜像的更新之后,对DevOps工具链页面进行更新,使DevOps工具链页面中包含原始DevOps工具链。
可选地,可以根据功能类别,对工具进行分类,使用户根据工具的功能类别查找需要的工具。
可选地,还可以建立索引关系表,提供搜索框,使用户可以按工具名称搜索需要的工具。
S43,根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链。
具体地,服务器根据安装请求中的DevOps工具链路径,可以直接定位到Docker镜像中目标DevOps工具链所在的位置,使服务器可以更加快速地获取所述目标DevOps工具链的镜像文件。
S44,基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
具体地,服务器利用目标DevOps工具链的镜像文件安装到预设Docker容器内,无需再单独配置环境,可以实现低负载的快速安装,也能便于Jenkins流水线的调用和流水线消亡后的卸载。
其中,预设Docker容器是Jenkins流水线唯一对应的容器,具有兼容各项工具的单一环境。
通过本实施例,能够快速响应用户或环境条件的需求,实现工具快速地自动安装、调用和卸载。
参照图4,图4是本发明实施例提供的一种流水线安装工具包的流程示意图。如图4所示,根据上述实施例进行进一步地说明,Jenkins流水线里包括Devops通用过程,包括:代码拉取、代码检查、编译、单元测试、接口测试、生成制品、制品仓库、制品安全、部署、自动化测试等。镜像工具包里包括了处理Devops流程的常用工具,包括:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、消息通知、自定义插件;其中,镜像工具包,即,Docker镜像工具包。
具体地,在流水线初始化时,可以根据Jenkins流水线中指定的处理流程,从镜像工具包识别并选择与处理流程相对应的工具,以生成工具包制品,即,工具包Docker制品;Docker在流水线进行时,启动并安装工具包,将工具包制品中的工具安装在同一个工具包容器中。当工具包执行完成,反馈执行结果至对应的Jenkins流水线。当流水线执行完成,则回调Docker工具包进程,停止并卸载工具包。
考虑到在一些应用场景中,工具使用结果报告可能不会及时反馈给用户,例如工具软件报错的情况下,为了进一步实现目标DevOps工具链的全面自动卸载,在一种可选的实施方式中,本发明还提供了一种自动卸载目标DevOps工具链的方法,所述方法具体包括:
在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
其中,Jenkins流水线执行报错是指Jenkins流水线在执行的过程中报告错误运行,比如,持续集成运行出现故障或被终止,则后续流程无法进行,则Jenkins流水线会执行报错。而在Jenkins流水线中,持续部署往往是最后一步,则部署完成也表明流水线消亡。利用回调函数的预先定义和后续调用,可以在Jenkins流水线执行报错或部署完成的时候,卸载该Jenkins流水线对应的所有目标工具,释放服务器资源。如果目标工具是安装在预设的一个容器内的,还可以彻底删除这个容器,以实现完全的资源释放,进一步提高服务器的资源利用率。
通过上述实施例,能够进一步准确地实现针对特定应用场景的目标DevOps工具链的安装和卸载,也就更加准确地满足用户对于Jenkins流水线工具应用的特定需求,完成高效的工具管理和应用。
参照图5,图5是本发明实施例提供的一种管理DevOps工具链的系统的结构框图。如图5所示,基于同一发明构思,本发明实施例还提供一种管理DevOps工具链的系统,所述系统包括:
工具获取单元61,用于获取原始DevOps工具链;
Docker镜像生成单元62,用于得到包含所述原始DevOps工具链的一个Docker镜像;
工具安装单元63,用于在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;
工具卸载单元64,用于在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链。
可选的,所述工具获取单元,包括:
远程工具获取单元,用于从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
可选的,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
可选的,所述工具安装单元,包括:
镜像包引用单元,用于在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系;
安装请求接收单元,用于接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径;
镜像查询单元,用于根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链;
镜像安装单元,用于基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
可选的,所述工具卸载单元,包括:
回调函数卸载单元,用于在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种管理DevOps工具链的方法和一种管理DevOps工具链的系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种管理DevOps工具链的方法,其特征在于,所述方法包括:
获取原始DevOps工具链;
得到包含所述原始DevOps工具链的一个Docker镜像;
在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;
在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链;
当有添加新工具的需求时,将新工具按照统一方式与所述Docker镜像中的原始DevOps工具链合并,更新Docker镜像内的原始DevOps工具链,打包成一个新的Docker镜像。
2.根据权利要求1所述的方法,其特征在于,获取原始DevOps工具链,包括:从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
3.根据权利要求1所述的方法,其特征在于,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
4.根据权利要求1所述的方法,其特征在于,在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链,包括:在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系;
接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径;
根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链;
基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
5.根据权利要求1所述的方法,其特征在于,在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链,包括:
在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
6.一种管理DevOps工具链的系统,其特征在于,所述系统包括:工具获取单元,用于获取原始DevOps工具链;
Docker镜像生成单元,用于得到包含所述原始DevOps工具链的一个Docker镜像;
工具安装单元,用于在检测到新的Jenkins流水线构建初始化时,响应于对所述原始DevOps工具链中的目标DevOps工具链的安装请求,基于所述Docker镜像,为所述Jenkins流水线镜像安装所述目标DevOps工具链;工具卸载单元,用于在检测到所述Jenkins流水线执行完毕之后,自动卸载所述目标DevOps工具链;
工具更新单元,用于当有添加新工具的需求时,将新工具按照统一方式与所述Docker镜像中的原始DevOps工具链合并,更新Docker镜像内的原始DevOps工具链,打包成一个新的Docker镜像。
7.根据权利要求6所述的系统,其特征在于,所述工具获取单元,包括:
远程工具获取单元,用于从预设的开源仓库远程获取Jenkins执行流程链路上的原始DevOps工具链;
其中,所述原始DevOps工具链均以Docker方式启动。
8.根据权利要求6所述的系统,其特征在于,所述DevOps工具链至少包括以下任一项:代码检查、制品检查、自动化测试、报告输出、日志收集、编译、质量门禁、自定义插件。
9.根据权利要求6所述的系统,其特征在于,所述工具安装单元,包括:
镜像包引用单元,用于在检测到新的Jenkins流水线构建初始化时,建立所述Jenkins流水线与所述Docker镜像之间的引用关系;
安装请求接收单元,用于接收对所述原始DevOps工具链中的目标DevOps工具链的安装请求,所述安装请求携带用户或者环境条件从DevOps工具链页面中选择的DevOps工具链路径;其中,所述DevOps工具链页面是根据所述原始DevOps工具链的名称生成的可视化选择页面,包含所述原始DevOps工具链的名称和路径;
镜像查询单元,用于根据所述安装请求中的DevOps工具链路径,从所述Docker镜像中获取所述目标DevOps工具链;
镜像安装单元,用于基于镜像安装的方式,将所述目标DevOps工具链安装到预设Docker容器内,以使所述Jenkins流水线从所述预设Docker容器调用所述目标DevOps工具链。
10.根据权利要求6所述的系统,其特征在于,所述工具卸载单元,包括:
回调函数卸载单元,用于在检测到所述Jenkins流水线执行报错或部署完成的时候,调用回调函数以卸载所述目标DevOps工具链;
其中,所述回调函数是在构建所述Jenkins流水线时所定义的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110477300.9A CN113515293B (zh) | 2021-04-29 | 2021-04-29 | 一种管理DevOps工具链的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110477300.9A CN113515293B (zh) | 2021-04-29 | 2021-04-29 | 一种管理DevOps工具链的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515293A CN113515293A (zh) | 2021-10-19 |
CN113515293B true CN113515293B (zh) | 2022-09-09 |
Family
ID=78063610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110477300.9A Active CN113515293B (zh) | 2021-04-29 | 2021-04-29 | 一种管理DevOps工具链的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515293B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661362B (zh) * | 2022-03-01 | 2023-11-03 | 深圳开源互联网安全技术有限公司 | 一种基于DevSecOps的流水线实现方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543326A (zh) * | 2019-08-27 | 2019-12-06 | 山东浪潮人工智能研究院有限公司 | 一种基于区块链的DevOps智能运维方法 |
CN112099815A (zh) * | 2020-09-27 | 2020-12-18 | 中国银行股份有限公司 | 持续集成环境构建方法及装置 |
CN112394946A (zh) * | 2020-11-17 | 2021-02-23 | 北京智齿博创科技有限公司 | 基于DevOps背景下的运维平台 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873975B (zh) * | 2016-12-30 | 2020-09-29 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化系统及方法 |
US11036483B2 (en) * | 2019-03-26 | 2021-06-15 | Digital.Ai Software, Inc. | Method for predicting the successfulness of the execution of a DevOps release pipeline |
CN111309441B (zh) * | 2020-02-19 | 2024-04-09 | 北京中数智汇科技股份有限公司 | 一种基于Jenkins实现DevOps的微服务部署方法 |
CN111858370B (zh) * | 2020-07-28 | 2023-12-26 | 浪潮云信息技术股份公司 | DevOps的实现方法、装置、计算机可读介质 |
CN111880903A (zh) * | 2020-07-30 | 2020-11-03 | 浪潮云信息技术股份公司 | 一种基于DevOps的云平台虚拟机镜像自动化制作、测试及发布装置和方法 |
CN112328229A (zh) * | 2020-11-06 | 2021-02-05 | 无锡江南计算技术研究所 | 一种快速创建Jenkins流水线的方法 |
-
2021
- 2021-04-29 CN CN202110477300.9A patent/CN113515293B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543326A (zh) * | 2019-08-27 | 2019-12-06 | 山东浪潮人工智能研究院有限公司 | 一种基于区块链的DevOps智能运维方法 |
CN112099815A (zh) * | 2020-09-27 | 2020-12-18 | 中国银行股份有限公司 | 持续集成环境构建方法及装置 |
CN112394946A (zh) * | 2020-11-17 | 2021-02-23 | 北京智齿博创科技有限公司 | 基于DevOps背景下的运维平台 |
Also Published As
Publication number | Publication date |
---|---|
CN113515293A (zh) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2972821B1 (en) | Application compatibility checking in a distributed computing environment | |
US9063725B2 (en) | Portable management | |
US10191733B2 (en) | Software change process orchestration in a runtime environment | |
CN111309441A (zh) | 一种基于Jenkins实现DevOps的微服务部署方法 | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
CN104360878B (zh) | 一种应用软件部署的方法及装置 | |
US20060253693A1 (en) | Systems and methods for automated processing of devices | |
US20140013315A1 (en) | Scheduled and quarantined software deployment based on dependency analysis | |
US20170123777A1 (en) | Deploying applications on application platforms | |
CN111966366A (zh) | 一种多cpu架构的集群部署的方法和设备 | |
CN111580926A (zh) | 模型发布方法、模型部署方法、装置、设备及存储介质 | |
US10929124B2 (en) | Application release using integration into unified code system | |
CN113434180B (zh) | 应用的数据处理方法、装置、服务器和存储介质 | |
US9542173B2 (en) | Dependency handling for software extensions | |
CN114077423A (zh) | 基于移动跨平台的机场app开发容器架构 | |
CN111679888A (zh) | 一种代理容器的部署方法及装置 | |
CN112328307A (zh) | 一种开发运维一体化系统 | |
CN115061717A (zh) | 应用管理方法、应用订阅方法及相关设备 | |
CN113515293B (zh) | 一种管理DevOps工具链的方法和系统 | |
US20220129301A1 (en) | Architectural design for universal software automation pipelines | |
CN113190286B (zh) | 动态远程加载功能插件的mes系统、加载方法、终端及介质 | |
CN115421765A (zh) | 一种应用于国产化操作系统的大数据管理部署方法 | |
US11200052B1 (en) | Documentation enforcement during compilation | |
US9760364B2 (en) | Checks for software extensions | |
CN113296795A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |