CN112860438A - 一种基于云平台的分布式DevOps运行方法 - Google Patents

一种基于云平台的分布式DevOps运行方法 Download PDF

Info

Publication number
CN112860438A
CN112860438A CN202110199668.3A CN202110199668A CN112860438A CN 112860438 A CN112860438 A CN 112860438A CN 202110199668 A CN202110199668 A CN 202110199668A CN 112860438 A CN112860438 A CN 112860438A
Authority
CN
China
Prior art keywords
execution
devops
mirror image
pipeline
construction
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
Application number
CN202110199668.3A
Other languages
English (en)
Inventor
窦旭
王瀚墨
陈磊
周恒�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202110199668.3A priority Critical patent/CN112860438A/zh
Publication of CN112860438A publication Critical patent/CN112860438A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote 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)
  • Stored Programmes (AREA)

Abstract

本发明提供一种基于云平台的分布式DevOps运行方法,属于分布式DevOps使用领域,本发明利用界面化的操作,通过API接口与Token来获取项目信息,整合了数个代码管理平台,同时采用分布式架构;步骤包括:基础镜像构建、命令分发步骤、命令预执行步骤、执行完成、异常退出。解决了传统DevOps无法多节点并发运行任务的缺点,具有多节点部署、扩展灵活、界面化显示等多种有点。

Description

一种基于云平台的分布式DevOps运行方法
技术领域
本发明涉及分布式DevOps使用领域,尤其涉及一种基于云平台的分布式 DevOps运行方法。
背景技术
随着敏捷开发理念的普及,当今更多的软件开发形式从传统开发过程转向了敏捷开发过程。由于软件功能新增的速度超过了软件发版的固有速度,如何自动的完成软件版本管理这一问题被正式提出。传统的软件开发将开发、IT运营和质量保障设为各自分离的部门。按照原有的工作流程,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而需要机器紧密的多部门协作。现在占据主导地位的传统美国式管理风格会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟。因此需要DevOps能力来克服由此引发的问题。
很多组织将开发和系统管理划分成不同的部门。开发部门的驱动力通常是“频繁交付新特性”,而运营部门则更关注IT服务的可靠性和IT成本投入的效率。两者目标的不匹配,就在开发和运营部门之间造成了一条鸿沟,从而减慢了IT交付业务价值的速度。而DevOps的引入能对产品交付、测试、功能开发和维护起到了意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息鸿沟,例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快的将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出现问题的地方。
以下几方面的因素可能促使一个组织引入DevOps:
1.使用敏捷开发或者其他软甲开发过程与方法
2.业务负责人要求加快产品交付速的速率
3.虚拟化和云计算基础设施(可能来自内部或者外部供应商)日益普遍
4.数据中心自动化技术和配置管理工具的普及
DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。
强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。
然而现实中现状却是开发人员经常不考虑自己写的代码会对运营造成什么影响。他们在交付代码之前,并不邀请运营人员参与架构决策或代码评审,所以缺乏对代码风险的评估。开发人员对配置或环境进行修改之后,经常没有及时与运营人员沟通,导致新的代码不能运行。开发人员在自己的机器上手工修改配置,而没有记录所有需要的步骤。想找到必要的配置参数,通常需要尝试很多不同的参数;在得到一个可工作的状态后,往往很难识别出通过哪些最小步骤就能到达该状态。开发人员倾向于使用有利于快速开发的工具:对代码修改更快的反馈,更低的内存消耗,等等。这样的工具集与运营人员面对的目标运行时环境非常不同:后者对稳定性和性能的要求远胜于灵活性。由于开发人员平时使用桌面电脑,他们倾向于使用为桌面用户优化的操作系统。生产环境的运行时系统通常都运行服务器操作系统上。在开发过程中,系统在开发者的本地机器上运行。在运营过程中,系统经常分布在多台服务器上,例如web服务器、应用服务器、数据库服务器等等。开发是由功能性需求(通常与业务需求直接相关)驱动的。运营是由非功能性需求(例如可获得性、可靠性、性能等)驱动的。运营人员希望尽量避免修改功能,从而降低满足非功能性需求的风险如果拒绝了小的修改,但给定时间段内需要修改的总量不变,那么每次变更的规模就会变大变更规模越大,风险也越大,因为其中涉及的区域越多由于运营人员尝试避免变更,新功能流入生产环境的速度因此被延缓,从而延缓了开发人员将特性交付给用户使用的速度。运营人员可能对应用程序内部缺乏了解,从而难以正确地选择运行时环境和发布流程。开发人员可能对运行时环境缺乏了解,从而难以正确地对代码进行调整。
发明内容
为了解决以上技术问题,本发明提供了一种基于云平台的分布式DevOps运行方法,利用分布式技术来减少单台机器运行DevOps的压力,解决了传统DevOps 无法多节点并发运行任务的缺点,具有多节点部署、扩展灵活、界面化显示等多种优点。
本发明的技术方案是:
一种基于云平台的分布式DevOps运行方法,利用界面化的操作,通过API接口与Token来获取项目信息,整合了数个代码管理平台,同时采用分布式架构;包括基础镜像构建、命令分发步骤、命令预执行步骤、执行完成、异常退出。
进一步的,
基础镜像构建步骤:此步骤在界面化中显示为创建构建步骤;构建为流水线与项目仓库之间的关联者,构建中存储了项目仓库具体信息与流水线使用的基础容器镜像。
使用者首先需要创建一个新的构建并填写项目仓库信息,在构建创建成功后,即可创建真正的流水线。
在创建流水线这一步骤中,需要将预先设置的流水线中的每一步的命令拷贝到流水线中的每一个步骤中并保存退出。
进一步的,
命令分发步骤:首先点击执行按钮,启动任务对应的流水线,开启整体的流程;首先流水线会根据基础镜像构建步骤中包含的构建获取项目对应的信息,并通过基础镜像构建步骤当中的脚本对选中执行节点的对应位置的可执行代码部分进行处理。
进一步的,
命令预执行步骤:在使用这根据所需任务不同启动不同流水线并完成预执行操作后,流水线会根据创建者创建时的脚本命令进行相应的步骤,完成编译、语法检查、单元测试、逻辑测试、生成镜像并上传的功能。
流水线中不同步骤可指定不同的运行节点,节点间通过缓存来共享文件,在编译后可同时在不同节点共享前置步骤编译好的二进制文件,分别进行单元测试和镜像制作的步骤。
进一步的,
执行完成、异常退出:在流水线执行过程中,有且只会产生两种状态,执行成功、失败退出;
当流水线失败退出后在界面中会对对应失败步骤进行标红处理,方便使用进行查看;
正常执行完成后整体流水线会全部显示绿色,表名流水线已正常结束。
本发明的有益效果是
通过在DevOps中创建不同的流水线来对每个需求进行适配,用以跟踪使用结果,然后使用相应的方法来对结果进行分析。
结果表明,基于云平台的分布式DevOps能够减少8倍的运行所需资源和 DevOps等待时间,同时对运行节点的负载可以忽略不计。
附图说明
图1是DevOps流水线工作流程示意图;
图2是云DevOps执行流程图;
图3是云DevOps组成图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
传统DevOps方案,默认情况下使用单机单核心的部署方案。在实际运行过程中,DevOps系统实现的开发、交付效果难以达到令人满意的效果。本发明提出的一种基于浪潮云平台的DevOps方案,具体方案如下:
假定使用一个由多个输入端,多个运行节点和界面化显示组成的分布式 DevOps来说明工作模式,如图2所示。为简单起见,假设只在界面上触发DevOps 处理流程,并且它以ssh与scp命令的形式同步的连接到需要执行命令的机器上并推送执行脚本到相应选中的节点上。现在,通过图3所示简单描述一下基于浪潮云平台的DevOps方案对于触发的流水线命令的相应过程以及后续的执行流程。
基础镜像构建步骤:此步骤在界面化中显示为创建构建步骤。构建为流水线与项目仓库之间的关联者,构建中存储了项目仓库具体信息与流水线使用的基础容器镜像。使用者首先需要创建一个新的构建并填写项目仓库等信息,在构建创建成功后,即可创建真正的流水线。在创建流水线这一步骤中,创建者需要将预先设置的流水线中的每一步的命令拷贝到流水线中的每一个步骤中并保存退出。
命令分发步骤:使用者首先点击执行按钮,启动任务对应的流水线,开启整体的流程。首先流水线会根据第一个步骤中包含的构建获取项目对应的信息,并通过第一个步骤当中的脚本对选中执行节点的对应位置的可执行代码部分进行处理,例如可以进入到对应项目下对代码项目执行合并更新操作或删除对应项目并重新clone并切换到对应分支。至此流水线已经做好了运行前的准备工作。
命令预执行步骤:在使用这根据所需任务不同启动不同流水线并完成预执行操作后,流水线会根据创建者创建时的脚本命令进行相应的步骤,完成例如编译、语法检查、单元测试、逻辑测试、生成镜像并上传等功能。流水线中不同步骤可以指定不同的运行节点,节点间可以通过缓存来共享文件,例如在编译后可以同时在不同节点共享前置步骤编译好的二进制文件,分别进行单元测试和镜像制作的步骤,多步骤并行操作可以极大节省时间,避免了传统DevOps各步骤串行执行等待的耗时。
执行完成、异常退出:在流水线执行过程中,有且只会产生两种状态,执行成功、失败退出。
当流水线因为某些原因失败退出后在界面中会对对应失败步骤进行标红处理,方便使用进行查看。正常执行完成后整体流水线会全部显示绿色,表名流水线已正常结束。
云平台DevOps通过分布式部署的方式极大地减轻了单机运行DevOps的压力, 同时多个流水线之间也实现了并行处理,既解决了Gitlab Runner系统无法并行的问题,又实现了自动化运行功能。
同时云平台DevOps存在界面化的操作,可以极大的减轻人员的工作量,并且界面化的显示可以帮助开发、测试、运维人员更好的掌控整体的流程,对执行结果有一个更好的把握。
云平台DevOps系统通过API接口与Token来获取项目信息,整合了多个代码管理平台(例如Gitlab、Github、码云)等,做到了强大的兼容性,极大了减轻了因为代码管理平台差异而引起的复杂化,将差异进行了友好的封装,降低了开发与运维等人员使用的难度。
同时分布式的架构系统也极大的减轻了单机运行的压力,在机器性能不足的条件下,可以更加合理的分配掉服务器剩余的运力,而不必是相关运力浪费掉。分布式的架构同时也极大地降低了各个流水线之间的耦合程度,可以利用流水线做到独立开发、独立部署、独立测试等等,明确了各个操作人员之间的边界,大大提升工作的效率。也使得整个系统在需要进行扩展的时候,更加易于进行。并且提高了整体的复用性。分布式架构的存在也使得一个整体的任务可以划分为数个子任务,并且把这些个子任务分散到不同的节点上去运行,从而加快整体上的运行速度。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种基于云平台的分布式DevOps运行方法,其特征在于,
利用界面化的操作,通过API接口与Token来获取项目信息,整合了数个代码管理平台,同时采用分布式架构;步骤包括:基础镜像构建、命令分发步骤、命令预执行步骤、执行完成、异常退出。
2.根据权利要求1所述的方法,其特征在于,
基础镜像构建步骤:此步骤在界面化中显示为创建构建步骤;构建为流水线与项目仓库之间的关联者,构建中存储了项目仓库具体信息与流水线使用的基础容器镜像。
3.根据权利要求2所述的方法,其特征在于,
使用者首先需要创建一个新的构建并填写项目仓库信息,在构建创建成功后,即可创建真正的流水线。
4.根据权利要求3所述的方法,其特征在于,
在创建流水线这一步骤中,需要将预先设置的流水线中的每一步的命令拷贝到流水线中的每一个步骤中并保存退出。
5.根据权利要求4所述的方法,其特征在于,
命令分发步骤:首先点击执行按钮,启动任务对应的流水线,开启整体的流程;首先流水线会根据基础镜像构建步骤中包含的构建获取项目对应的信息,并通过基础镜像构建步骤当中的脚本对选中执行节点的对应位置的可执行代码部分进行处理。
6.根据权利要求5所述的方法,其特征在于,
命令预执行步骤:在使用这根据所需任务不同启动不同流水线并完成预执行操作后,流水线会根据创建者创建时的脚本命令进行相应的步骤,完成编译、语法检查、单元测试、逻辑测试、生成镜像并上传的功能。
7.根据权利要求6所述的方法,其特征在于,
流水线中不同步骤可指定不同的运行节点,节点间通过缓存来共享文件,在编译后可同时在不同节点共享前置步骤编译好的二进制文件,分别进行单元测试和镜像制作的步骤。
8.根据权利要求7所述的方法,其特征在于,
执行完成、异常退出:在流水线执行过程中,有且只会产生两种状态,执行成功、失败退出;
当流水线失败退出后在界面中会对对应失败步骤进行标红处理,方便使用进行查看;
正常执行完成后整体流水线会全部显示绿色,表名流水线已正常结束。
CN202110199668.3A 2021-02-23 2021-02-23 一种基于云平台的分布式DevOps运行方法 Pending CN112860438A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110199668.3A CN112860438A (zh) 2021-02-23 2021-02-23 一种基于云平台的分布式DevOps运行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110199668.3A CN112860438A (zh) 2021-02-23 2021-02-23 一种基于云平台的分布式DevOps运行方法

Publications (1)

Publication Number Publication Date
CN112860438A true CN112860438A (zh) 2021-05-28

Family

ID=75989880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110199668.3A Pending CN112860438A (zh) 2021-02-23 2021-02-23 一种基于云平台的分布式DevOps运行方法

Country Status (1)

Country Link
CN (1) CN112860438A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113542433A (zh) * 2021-09-15 2021-10-22 广州嘉为科技有限公司 一种基于DevOps的制品同步方法、设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106873975A (zh) * 2016-12-30 2017-06-20 武汉默联股份有限公司 基于Docker的devops持续交付与自动化系统及方法
CN111443940A (zh) * 2020-05-08 2020-07-24 南京大学 一种基于DevOps的完整软件生命周期管理方法及平台
CN111857861A (zh) * 2020-01-19 2020-10-30 苏州浪潮智能科技有限公司 一种jenkins任务管理方法、系统、终端及存储介质
CN111880903A (zh) * 2020-07-30 2020-11-03 浪潮云信息技术股份公司 一种基于DevOps的云平台虚拟机镜像自动化制作、测试及发布装置和方法
CN111930421A (zh) * 2020-07-31 2020-11-13 中电鸿信信息科技有限公司 一种基于DevOps的自由编排监控系统及其使用方法
CN112035352A (zh) * 2020-08-28 2020-12-04 浪潮云信息技术股份公司 一种基于云生命周期管理的快速自动化编译部署的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106873975A (zh) * 2016-12-30 2017-06-20 武汉默联股份有限公司 基于Docker的devops持续交付与自动化系统及方法
CN111857861A (zh) * 2020-01-19 2020-10-30 苏州浪潮智能科技有限公司 一种jenkins任务管理方法、系统、终端及存储介质
CN111443940A (zh) * 2020-05-08 2020-07-24 南京大学 一种基于DevOps的完整软件生命周期管理方法及平台
CN111880903A (zh) * 2020-07-30 2020-11-03 浪潮云信息技术股份公司 一种基于DevOps的云平台虚拟机镜像自动化制作、测试及发布装置和方法
CN111930421A (zh) * 2020-07-31 2020-11-13 中电鸿信信息科技有限公司 一种基于DevOps的自由编排监控系统及其使用方法
CN112035352A (zh) * 2020-08-28 2020-12-04 浪潮云信息技术股份公司 一种基于云生命周期管理的快速自动化编译部署的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113542433A (zh) * 2021-09-15 2021-10-22 广州嘉为科技有限公司 一种基于DevOps的制品同步方法、设备

Similar Documents

Publication Publication Date Title
US11487536B2 (en) System for automating user-defined actions for applications executed using virtual machines in a guest system
US10951491B2 (en) Automatic microservice problem detection in enterprise applications
US10515205B2 (en) Systems and methods for determining trust levels for computing components
US9952852B2 (en) Automated deployment and servicing of distributed applications
US9535669B2 (en) Systems and methods for computing applications
US8898620B2 (en) System and method for application process automation over a computer network
CN110321152A (zh) 一种软件开发平台
EP2972821B1 (en) Application compatibility checking in a distributed computing environment
CN115292026B (zh) 容器集群的管理方法、装置、设备及计算机可读存储介质
US7000220B1 (en) Networked software development environment allowing simultaneous clients with combined run mode and design mode
US8196089B2 (en) Pattern-based development of computer system solutions
US20090327465A1 (en) Distributed Configuration Orchestration for Network Client Management
US20130086130A1 (en) Executor for software configuration automation
US11561890B2 (en) Automated videogame testing
US8819695B2 (en) Controlling application landscapes
CN115658166A (zh) 集中管理和容易使用应用程序配置的系统、方法及介质
CN112860438A (zh) 一种基于云平台的分布式DevOps运行方法
EP3683675A1 (en) System, apparatus and method of integrated deployment
Pastrana-Pardo et al. Approach to the Best Practices in Software Development Based on DevOps and SCRUM Used in Very Small Entities
CN114265595B (zh) 一种基于智能合约的云原生应用开发与部署系统和方法
CN115185561A (zh) 一种基于Serveless Jenkins的CICD系统和实现方法
US20140081679A1 (en) Release Management System and Method
US20240319973A1 (en) Automated infrastructure provisioning of containerized applications
Balzamov et al. Development of a methodology for migration of monolithic systems to microservice architecture using cloud technologies
US20240192974A1 (en) Simulation of one or more pipeline jobs in a software deployment pipeline

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: 20210528

RJ01 Rejection of invention patent application after publication