CN111142879B - 软件集成发布方法及自动运维平台 - Google Patents
软件集成发布方法及自动运维平台 Download PDFInfo
- Publication number
- CN111142879B CN111142879B CN201911232814.7A CN201911232814A CN111142879B CN 111142879 B CN111142879 B CN 111142879B CN 201911232814 A CN201911232814 A CN 201911232814A CN 111142879 B CN111142879 B CN 111142879B
- Authority
- CN
- China
- Prior art keywords
- file
- image file
- hook
- image
- branch code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012423 maintenance Methods 0.000 title claims abstract description 23
- 230000010354 integration Effects 0.000 claims abstract description 84
- 238000012360 testing method Methods 0.000 claims description 45
- 238000011161 development Methods 0.000 claims description 23
- 238000009826 distribution Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 20
- 238000004806 packaging method and process Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 14
- 238000004519 manufacturing process Methods 0.000 claims description 14
- 238000011990 functional testing Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000002688 persistence Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 34
- 230000002085 persistent effect Effects 0.000 description 18
- 238000010276 construction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件集成发布方法及自动运维平台,自动运维平台包括:代码管理系统,用以存储分支代码,并接收开发者提交的合并请求以生成第一网钩文件或第三网钩文件;持续集成系统,用以自动获取分支代码,以生成第一或第二镜像文件;镜像仓库系统,用以存储第一镜像文件和第二镜像文件,并生成第二第四网钩文件;容器化部署系统,用以根据第二网钩文件对第一镜像文件进行重新部署,或根据版本升级命令对第二镜像文件进行升级部署;持续集成系统还用以接收第四网钩文件,根据第四网钩文件获取第二镜像文件,同时发布版本升级命令。可以驱动持续集成、发布、部署自动化,全程无需运维干预,提高了整体效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种软件集成发布方法及自动运维平台。
背景技术
软件代码的生命周期包括三个阶段:开发、测试和生产。在软件开发过程中,软件代码编写是实现各个系统模块的具体过程,实现内容包括目标系统的功能、性能、接口、界面等方面的要求。测试同样是项目研发中一个相当重要的步骤,通过对代码实现的各个功能点的测试,确认功能的可用性。
传统的测试、生产环境服务都是人工完成的。具体方法流程如下:开发人员使用SVN进行协同开发;开发人员开发完毕后提交代码,并发起代码提测;运维人员通过Jenkins平台任务拉取SVN中代码进行编译,并获取编译后的程序包部署于测试环境;测试人员在测试环境对程序包进行各项功能测试;测试通过后,运维人员将测试通过的程序包部署到生产环境,生成软件产品。以上各步骤需要开发人员、运维人员、测试人员等相互配合进行,任何一个步骤出现异常,则回退到前一步进行排查,逐级排查直至代码开发阶段。
针对代码版本管理和持续集成工作,现已经出现了多种管理工具,包括现在广泛使用的svn,git,Jenkins,maven,Gradle等。git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理;Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作;Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven,Ivy仓库,支持传递性依赖管理;Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具;Maven仓库是放置所有JAR文件(WAR,ZIP,POM等等)的地方,使用时项目可以从同一个Maven仓库中获取自己所需要的依赖JAR;但是这些工具都是相对独立的,并没有与整个开发和测试过程相整合。因而现有的软件部署方法存在发布速度慢、效率低和人为误操作的问题。
因此,有必要提供改进的技术方案以克服现有技术中存在的以上技术问题。
发明内容
为了解决上述技术问题,本发明提供了一种软件集成发布方法及自动运维平台,可以实现软件持续集成、发布、部署的自动化,全程无需运维干预,提高了整体效率。
根据本发明提供的一种软件集成发布方法,包括:当处于测试环境时,软件集成发布方法包括:代码管理系统接收开发者提交的第一合并请求,并在接收到第一合并请求时生成第一网钩文件;持续集成系统接收第一网钩文件,根据第一网钩文件获取第一分支代码,并对第一分支代码进行编译和打包,以生成第一镜像文件;持续集成系统将生成的第一镜像文件保存至镜像仓库系统;镜像仓库系统在接收到第一镜像文件时生成第二网钩文件;容器化部署系统接收第二网钩文件,根据第二网钩文件从镜像仓库系统中获取第一镜像文件进行功能测试,以对第一镜像文件进行重新部署,第一镜像文件为最新版本的镜像文件。
优选地,当处于生产环境时,软件集成发布方法包括:代码管理系统接收开发者提交的第二合并请求,并在接收到第二合并请求时生成第三网钩文件;持续集成系统接收第三网钩文件,根据第三网钩文件获取第二分支代码,并对第二分支代码进行编译和打包,以生成第二镜像文件;持续集成系统将生成的第二镜像文件保存至镜像仓库系统;镜像仓库系统在接收到第二镜像文件时生成第四网钩文件;持续集成系统接收第四网钩文件,根据第四网钩文件从镜像仓库系统中获取第二镜像文件进行功能测试,并在测试成功后将第二镜像文件发送至容器化部署系统进行版本升级,第二镜像文件为带版本号的镜像文件。
优选地,第一网钩文件中包含有第一分支代码的存储地址信息。
优选地,第二网钩文件中包含有第一镜像文件的存储地址信息、服务名以及版本号。
优选地,第三网钩文件中包含有第二分支代码的存储地址信息。
优选地,第四网钩文件中包含有第二镜像文件的存储地址信息、服务名以及版本号。
优选地,对第一分支代码进行编译和打包,以生成镜像文件包括:对第一分支代码进行编译,生成相应的程序包;将用于实现相同功能的程序包划分到一个模块中,并对模块进行整合;将整合后的模块、相关中间文件以及配置文件打包,以生成镜像文件。
优选地,对第一分支代码进行编译之前,还包括调用持续集成工具,确定第一分支代码满足以下至少一项:不存在未使用的变量;不存在不必要的对象;不存在多次重复的循环嵌套;不存在内存泄漏。
优选地,根据第二网钩文件从镜像仓库系统中获取第一镜像文件进行功能测试包括:从镜像仓库中获取第一镜像文件;从第二镜像文件中获取最新模板;从最新模板中获取待测试的程序包。
优选地,容器化部署系统接收第二网钩文件时,不对第二网钩文件的具体内容进行访问处理。
优选地,对第二分支代码进行编译和打包,以生成带版本号的镜像文件包括:对第二分支代码进行编译,生成相应的程序包;将用于实现相同功能的程序包划分到一个模块中,并对模块进行整合;将整合后的模块、相关中间文件以及配置文件打包,以生成带版本号的镜像文件。
优选地,对第二分支代码进行编译之前,还包括调用持续集成工具,确定第二分支代码满足以下至少一项:不存在未使用的变量;不存在不必要的对象;不存在多次重复的循环嵌套;不存在内存泄漏。
优选地,持续集成系统接收第四网钩文件,根据第四网钩文件从镜像仓库系统中获取第二镜像文件进行功能测试,并在测试成功后将第二镜像文件发送至容器化部署系统进行版本升级,还包括:第四网钩文件触发持续集成系统发布版本升级命令;容器化部署系统根据版本升级命令为第二镜像文件创建运行容器以进行版本升级。
优选地,根据第四网钩文件从镜像仓库系统中获取第二镜像文件进行功能测试包括:从镜像仓库中获取第二镜像文件;从第二镜像文件中获取最新模板;从最新模板中获取待测试的程序包。
优选地,持续集成系统接收第四网钩文件时,读取第四网钩文件,以从第四网钩文件中获取第二网钩文件的服务名和版本号。优选地,软件集成发布方法还包括:对测试失败的代码,开发人员需要重新建立新的开发分支,将测试失败的代码合并到新的开发分支进行第二次开发;或由相应系统生成错误提示和修改提示,以通知开发人员查找错误原因并进行修改。
根据本发明提供的一种自动运维平台,包括:代码管理系统,用以存储第一分支代码和第二分支代码,并在接收到开发者提交的第一合并请求时,生成第一网钩文件,或在接收到开发者提交的第二合并请求时,生成第三网钩文件;持续集成系统,用以接收第一网钩文件,根据第一网钩文件自动获取第一分支代码,并对第一分支代码进行编译、打包,以生成第一镜像文件,或接收第二网钩文件,根据第二网钩文件自动获取第二分支代码,并对第二分支代码进行编译、打包,以生成第二镜像文件;镜像仓库系统,用以存储第一镜像文件和第二镜像文件,并在接收到第一镜像文件时生成第二网钩文件,或在接收到第二镜像文件时生成第四网钩文件;以及容器化部署系统,用以接收第二网钩文件,根据第二网钩文件获取第一镜像文件,并对第一镜像文件进行重新部署,或接收版本升级命令,并根据版本升级命令对第二镜像文件进行升级部署,持续集成系统还用以接收第四网钩文件,根据第四网钩文件获取第二镜像文件,同时发布版本升级命令。
根据本发明提供的一种计算机设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器和通信接口;存储器存储有可被至少一个处理器执行的指令,至少一个处理器通过执行存储器存储的指令,利用通信接口执行上述的软件集成发布方法。
根据本发明提供的一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述的软件集成发布方法。
本发明的有益效果是:本发明在软件自动运维平台中采用不同的方法分别进行测试环境下软件的集成测试和生产环境下软件的版本升级,优化了软件部署,使得软件的测试与生产在自动运维平台中得到了更优的资源分配和流程分配,实现了测试环境和生产环境快速化、智能化的持续集成发布需求,以及软件自动化运维的准确性,避免了人工干预的可能。
在进行软件集成发布时,采用网钩文件(即webhook事件)作为触发文件,同时触发文件中包含有代码或镜像文件的基本信息如存储地址信息等,使得触发速度更快,提高了集成发布效率。
将程序包以模块的方式进行分类存储,能够减少软件集成的工作量,节约开发成本。
在编译之前对待集成的分支代码进行异常检测,能够弥补在测试环节中难以发现的隐患,进而提高代码质量,提高程序运行效率以及程序长时间运行的稳定性。
采用分级获取程序包的方式,可以缩小文件获取范围,进而快速地得到需要运行测试的程序包,加快测试速度。
在测试环境中不对镜像仓库系统生产的网钩文件的内容进行访问,仅在发布环境中访问,节约了软件集成资源。
第二镜像文件先由持续集成系统进行处理,之后再由持续集成系统触发容器化部署系统进行版本升级部署,通过这一实施方式,合理地运用了持续集成系统的已有功能,进而无需在容器化部署系统中搭建复杂的外加设备或功能,简化了容器化部署系统的结构,节省了开发资源。
应当说明的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚。
图1示出本发明实施例提供的一种自动运维平台的系统框架图;
图2示出本发明实施例提供的一种应用于测试环境的软件集成发布方法流程图;
图3示出本发明实施例提供的一种应用于生产环境的软件集成发布方法流程图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以通过不同的形式来实现,并不限于本文所描述的实施例。相反的,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
下面,参照附图对本发明进行详细说明。
本发明实施例提供了一种自动运维平台,如图1所示,图1示出本发明实施例提供的一种自动运维平台的系统框架图。
参阅图1,本实施例中,自动运维平台100包括代码管理系统110、持续集成系统120、镜像仓库系统130以及容器化部署系统140。
其中,代码管理系统110用以存储第一分支代码和第二分支代码,并在接收到开发者提交的第一合并请求时,生成第一网钩文件,或在接收到开发者提交的第二合并请求时,生成第三网钩文件。
需要说明的是,本文中,所述的第一分支代码指代基于gitlab开发的dev分支代码(或开发分支代码),所述的第二分支代码指代基于gitlab开发的master分支代码(或主分支代码)。
本实施例中,开发者上传的分支代码包括第一分支代码和第二分支代码。第一分支代码应用于软件的测试阶段,第二分支代码应用于软件的生产阶段。
代码管理系统110为基于gitlab开源项目的仓库管理系统,使用Git作为代码管理工具进行管理。代码管理系统110包括git代码仓库和第一触发器,git代码仓库用于对开发者上传的第一分支代码和第二分支代码进行存储。
进一步地,代码管理系统110中设置有第一触发器,用于根据第一合并请求触发生成第一网钩文件,或根据第二合并请求触发生成第三网钩文件。第一网钩文件和第三网钩文件为触发请求文件如为webhook event,用于触发持续集成系统120实现相应分支代码的自动持续集成。
进一步地,在第一网钩文件和第三网钩文件中,包含有相应分支代码的基本信息如存储地址信息等,可以实现分支代码的快速访问和获取。
持续集成系统120用以接收第一网钩文件,根据第一网钩文件自动获取代码管理系统110中的第一分支代码,并对第一分支代码进行编译、打包,以生成第一镜像文件,或接收第二网钩文件,根据第二网钩文件自动获取代码管理系统110中的第二分支代码,并对第二分支代码进行编译、打包,以生成第二镜像文件。
本实施例中,持续集成系统120基于Jenkins持续集成工具实现,在Jenkins持续集成工具中配置有开源代码管理系统110的参数信息,该参数信息用于确定代码管理系统110中是否存在待集成代码,即第一分支代码和第二分支代码。
持续集成系统120包括:获取单元,用于根据第一网钩文件触发以自动获取第一分支代码,或根据第二网钩文件触发以自动获取第二分支代码;处理单元,用于对第一分支代码或第二分支代码进行编译,以生成程序包;将实现相同功能的程序包整合至一个模块,根据整合后的模块、相关中间件以及配置文件打包生成docker镜像文件(即第一镜像文件和第二镜像文件的其中之一)。
进一步地,配置文件中包含有docker镜像文件的服务名和版本号信息。
进一步地,持续集成系统120还用以接收第四网钩文件,根据第四网钩文件获取第二镜像文件,同时发布版本升级命令。
镜像仓库系统130用以存储第一镜像文件和第二镜像文件,并在接收到第一镜像文件时生成第二网钩文件,或在接收到第二镜像文件时生成第四网钩文件。
本实施例中,持续集成系统120在生成第一镜像文件或第二镜像文件时,自动将第一镜像文件或第二镜像文件上传至镜像仓库系统130。镜像仓库系统130以docker镜像文件的形式存储软件的分支代码。
镜像仓库系统130中设置有第二触发器,该第二触发器用于在接收到第一镜像文件时配置生成第二网钩文件,或在接收到第二镜像文件时配置生成第四网钩文件。
进一步地,第二网钩文件和第四网钩文件中设置有版本发布事件。
进一步地,在软件的测试环境中,镜像仓库系统130生成第二网钩文件,触发容器化部署系统140从镜像仓库系统130中自动获取最新版本的第一镜像文件。
在软件的生成环境中,镜像仓库系统130生成第四网钩文件,触发持续集成系统120从镜像仓库系统130中自动获取带版本号的第二镜像文件。
进一步地,在第二网钩文件和第四网钩文件中,包含有相应镜像文件的基本信息如存储地址信息、服务名和版本号等,可以实现镜像文件的快速访问和获取。
容器化部署系统140用以接收第二网钩文件,根据第二网钩文件获取第一镜像文件,并对第一镜像文件进行重新部署,或接收版本升级命令,并根据版本升级命令对第二镜像文件进行升级部署。
容器化部署系统140基于开源的容器编排引擎kubernetes构建,支持自动化部署、大规模可伸缩、应用容器化管理。在kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
进一步地,在软件的测试环境中,容器化部署系统140重新部署自镜像仓库系统130获取的最新版本的第一镜像文件服务,操作模块中程序包的功能测试。
在软件的生产环境中,容器化部署系统140从持续集成系统120获取带版本号的第二镜像文件,以将旧版本的镜像文件升级到目标版本。目标版本为容器化部署系统140从持续集成系统120获取的第二镜像文件的版本。
进一步地,容器化部署系统140包括:版本发布单元,用于在docker镜像文件(本文中简称为镜像文件)通过功能测试后进行版本发布。
版本发布管理单元和项目管理单元。版本发布管理单元用于监控持续进行的应用版本发布工作;项目管理单元用于控制和管理应用版本的发布过程。
需要说明的是,本文中,第一网钩文件、第二网钩文件、第三网钩文件和第四网钩文件均表现为Webhook事件,即一种触发文件。Webhook是一种轻量的事件处理应用,用于向APP或者其他应用提供一种实时信息。Webhook在数据产生时立即发送数据,使得各系统之间的联动更加高效,提高了代码测试效率。
基于同一发明构思,本发明实施例还提供了一种软件集成发布方法,如图2和图3所示,图2示出本发明实施例提供的一种应用于测试环境的软件集成发布方法流程图,图3示出本发明实施例提供的一种应用于生产环境的软件集成发布方法流程图。
结合图1和图2,本实施例提供的应用于测试环境的软件集成发布方法包括执行步骤S01至步骤S05,具体如下:
在步骤S01中,代码管理系统接收开发者提交的第一合并请求,并在接收到第一合并请求时生成第一网钩文件。
本实施例中,开发者基于Git建立第一分支,在开发阶段进行代码的开发和开发测试。开发完成后在代码管理系统110上提交待集成的第一分支代码,同时提交第一合并请求到第一分支,代码管理系统110在接收到第一合并请求时,会配置生成第一网钩文件,并将该第一网钩文件发送给持续集成系统120。
优选地,在第一网钩文件中包含有待集成的第一分支代码的存储地址信息。
在步骤S02中,持续集成系统接收第一网钩文件,根据第一网钩文件获取第一分支代码,并对第一分支代码进行编译和打包,以生成第一镜像文件。
本实施例中,持续集成系统120接收第一网钩文件,并根据该第一网钩文件中包含的地址信息自动获取代码管理系统110中待集成的第一分支代码,并自动触发Jenkins开始编译任务,生成相应的程序包。通过这种方式,实现了代码管理系统110与持续集成系统120的联动,提高了软件集成效率。
进一步地,对第一分支代码进行打包包括:将用于实现相同功能的程序包划分到一个模块中,并对该模块进行整合;将整合后的模块、相关中间文件以及配置文件打包生成第一镜像文件,同时为第一镜像文件设置文件名。通过本方式,持续集成系统120将程序包以模块的方式进行分类存储,能够减少软件集成的工作量,节约开发成本。
可选地,在对待集成第一分支代码进行编译之前,还包括:调用Jenkins,确定待集成第一分支代码满足以下至少一项:不存在未使用的变量;不存在不必要的对象;不存在多次重复的循环嵌套;不存在内存泄漏。通过本方式,在编译之前对待集成第一分支代码进行异常检测,能够弥补在测试环节中难以发现的隐患,进而提高代码质量,提高程序运行效率以及程序长时间运行的稳定性。
在步骤S03中,持续集成系统将生成的第一镜像文件保存至镜像仓库系统。
本实施例中,持续集成系统120对待集成的第一分支代码编译工作完成后,会将生成的第一镜像文件自动存入镜像仓库系统130,以实现第一镜像文件的安全存储。
在步骤S04中,镜像仓库系统在接收到第一镜像文件时生成第二网钩文件。
本实施例中,镜像仓库系统130在接收到第一镜像文件的同时,会根据第一镜像文件的内容生成相应的触发钩子即第二网钩文件。在第二网钩文件中,包含有第一镜像文件的地址信息、服务名和版本号,以方便后续对第一镜像文件的调用。
在步骤S05中,容器化部署系统接收第二网钩文件,根据第二网钩文件从镜像仓库系统中获取第一镜像文件进行功能测试,以对第一镜像文件进行重新部署。
本实施例中,容器化部署系统140接收第二网钩文件,触发容器化部署系统140自动从镜像仓库系统130中获取第一镜像文件(即最新版本docker镜像文件),为第一镜像文件创建运行容器以进行重新部署,并在所创建的容器中运行最新版本docker镜像文件的程序包,完成程序包的功能测试。
进一步地,根据第二网钩文件从镜像仓库系统130中获取第一镜像文件时,先从镜像仓库系统130中获取第一镜像文件,再从第一镜像文件中获取最新模块,接着从最新模块中获取程序包。通过这种分级获取的方式,可以缩小文件获取范围,进而快速地得到需要运行测试的程序包,加快测试速度。
优选地,第二网钩文件触发kubeinetes重新部署API直接部署,此过程中不对第二网钩文件的内容进行访问处理,减少了不必要的处理步骤,节省了测试资源,提高了测试效率。
结合图1和图3,本实施例提供的应用于测试环境的软件集成发布方法包括执行步骤S11至步骤S15,具体如下:
在步骤S11中,代码管理系统接收开发者提交的第二合并请求,并在接收到第二合并请求时生成第三网钩文件。
本实施例中,基于上述步骤S01至步骤S05,针对测试成功的第一分支代码,会将其合并到第二分支,此时测试人员会提交第二合并请求到第二分支,代码管理系统110在接收到第二合并请求时,会配置生成第三网钩文件,并将该第三网钩文件发送给持续集成系统120。
优选地,在第三网钩文件中包含有待集成第二分支代码的基本信息,如代码存储地址、服务名、版本号等。
在合并过程中,测试人员仅需在操作系统上对待合并的代码进行确认操作,在保证了软件集成的准确性的同时,也实现了智能化的发布需求。
进一步地,对测试失败的代码,开发人员需要重新建立新的开发分支,将测试失败的代码合并到新的开发分支进行第二次开发。或者由相应系统生成错误提示和修改提示,以通知开发人员查找错误原因并进行修改。
在步骤S12中,持续集成系统接收第三网钩文件,根据第三网钩文件获取第二分支代码,并对第二分支代码进行编译和打包,以生成第二镜像文件。
本实施例中,持续集成系统120接收第三网钩文件,并根据该第三网钩文件中包含的地址信息自动获取代码管理系统110中待集成的第二分支代码,并自动触发Jenkins开始编译任务,生成相应的程序包。通过这种方式,实现了代码管理系统与持续集成系统的联动,提高了软件集成效率。
进一步地,对第二分支代码进行打包包括:将用于实现相同功能的程序包划分到一个模块中,并对该模块进行整合;将整合后的模块、相关中间文件以及配置文件打包生成第二镜像文件(即带版本号的docker镜像文件),同时为第二镜像文件设置文件名。通过本方式,持续集成系统120将程序包以模块的方式进行分类存储,能够减少软件集成的工作量,节约开发成本。
可选地,在对待集成第二分支代码进行编译之前,还包括:调用Jenkins,确定待集成第二分支代码满足以下至少一项:不存在未使用的变量;不存在不必要的对象;不存在多次重复的循环嵌套;不存在内存泄漏。通过本方式,在编译之前对待集成第二分支代码进行异常检测,能够弥补在测试环节中难以发现的隐患,进而提高代码质量,提高程序运行效率以及程序长时间运行的稳定性。
在步骤S13中,持续集成系统将生成的第二镜像文件保存至镜像仓库系统。
本实施例中,持续集成系统120对待集成的第二分支代码编译工作完成后,会将生成的第二镜像文件自动存入镜像仓库系统130,以实现第二镜像文件的安全存储。
在步骤S14中,镜像仓库系统在接收到第二镜像文件时生成第四网钩文件。
本实施例中,镜像仓库系统130在接收到第二镜像文件的同时,会根据第二镜像文件的内容生成相应的触发钩子即第四网钩文件。在第四网钩文件中,包含有第二镜像文件的地址信息、服务名和版本号,以方便后续对第二镜像文件的调用。
在步骤S15中,持续集成系统接收第四网钩文件,根据第四网钩文件从镜像仓库系统中获取第二镜像文件进行功能测试,并在测试成功后将第二镜像文件发送至容器化部署系统进行版本升级。
本实施例中,由持续集成系统120接收第四网钩文件,触发持续集成系统120自动从镜像仓库系统130中获取第二镜像文件,以及读取第四网钩文件,并从第四网钩文件中获取第二镜像文件的服务名和版本号,进而触发持续集成系统120发布版本升级命令。
进一步地,容器化部署系统140根据持续集成系统120发布的版本升级命令为第二镜像文件创建运行容器以进行版本升级,同时公布升级后软件的版本号和服务名。第二镜像文件先由持续集成系统120进行处理,之后再由持续集成系统120触发容器化部署系统140进行版本升级部署,通过这一实施方式,合理地运用了持续集成系统120的已有功能,进而无需在容器化部署系统140中搭建复杂的外加设备或功能,简化了容器化部署系统的结构,节省了开发资源。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括:至少一个处理器,以及与该至少一个处理器通信连接的存储器、通信接口。其中,存储器存储有可被该至少一个处理器执行的指令,至少一个处理器通过执行存储器存储的指令,利用通信接口执行本发明实施例第二方面所描述的软件集成发布方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当该存储的计算机指令在计算机上运行时,可使得计算机执行本发明实施例中所描述的软件集成发布方法。
本发明在软件自动运维平台中采用不同的方法分别进行测试环境下软件的集成测试和生产环境下软件的版本升级,优化了软件部署,使得软件的测试与生产在自动运维平台中得到了更优的资源分配和流程分配,实现了测试环境和生产环境快速化、智能化的持续集成发布需求,提高了软件自动化运维的准确性,避免了人工干预的可能。
应当说明的是,在本文中,所含术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本发明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围之中。
Claims (17)
1.一种软件集成发布方法,其中,当处于测试环境时,所述软件集成发布方法包括:
代码管理系统接收开发者提交的第一合并请求,并在接收到所述第一合并请求时生成第一网钩文件,所述第一网钩文件中包含有第一分支代码的存储地址信息;
持续集成系统接收所述第一网钩文件,根据所述第一网钩文件获取第一分支代码,并对所述第一分支代码进行编译和打包,以生成第一镜像文件;
所述持续集成系统将生成的所述第一镜像文件保存至镜像仓库系统;
所述镜像仓库系统在接收到所述第一镜像文件时生成第二网钩文件;
容器化部署系统接收所述第二网钩文件,根据所述第二网钩文件从所述镜像仓库系统中获取所述第一镜像文件进行功能测试,以对所述第一镜像文件进行重新部署,所述第一镜像文件为最新版本的镜像文件;
以及,当处于生产环境时,所述软件集成发布方法包括:
代码管理系统接收开发者提交的第二合并请求,并在接收到第二合并请求时生成第三网钩文件;
持续集成系统接收所述第三网钩文件,根据所述第三网钩文件获取第二分支代码,并对所述第二分支代码进行编译和打包,以生成第二镜像文件;
所述持续集成系统将生成的所述第二镜像文件保存至镜像仓库系统;
所述镜像仓库系统在接收到所述第二镜像文件时生成第四网钩文件;
所述持续集成系统接收所述第四网钩文件,根据所述第四网钩文件从所述镜像仓库系统中获取所述第二镜像文件进行功能测试,并在测试成功后将所述第二镜像文件发送至容器化部署系统进行版本升级,所述第二镜像文件为带版本号的镜像文件。
2.根据权利要求1所述的软件集成发布方法,其中,所述第二网钩文件中包含有所述第一镜像文件的存储地址信息、服务名以及版本号。
3.根据权利要求1所述的软件集成发布方法,其中,所述第三网钩文件中包含有所述第二分支代码的存储地址信息。
4.根据权利要求1所述的软件集成发布方法,其中,所述第四网钩文件中包含有所述第二镜像文件的存储地址信息、服务名以及版本号。
5.根据权利要求1所述的软件集成发布方法,其中,对所述第一分支代码进行编译和打包,以生成第一镜像文件包括:
对所述第一分支代码进行编译,生成相应的程序包;
将用于实现相同功能的程序包划分到一个模块中,并对所述模块进行整合;
将整合后的所述模块、相关中间文件以及配置文件打包,以生成所述第一镜像文件。
6.根据权利要求5所述的软件集成发布方法,其中,对所述第一分支代码进行编译之前,还包括调用持续集成工具,确定所述第一分支代码满足以下至少一项:
不存在未使用的变量;
不存在不必要的对象;
不存在多次重复的循环嵌套;
不存在内存泄漏。
7.根据权利要求1所述的软件集成发布方法,其中,根据所述第二网钩文件从所述镜像仓库系统中获取第一镜像文件进行功能测试包括:
从所述镜像仓库中获取所述第一镜像文件;
从所述第二镜像文件中获取最新模板;
从所述最新模板中获取待测试的程序包。
8.根据权利要求1所述的软件集成发布方法,其中,容器化部署系统接收所述第二网钩文件时,不对所述第二网钩文件的具体内容进行访问处理。
9.根据权利要求1所述的软件集成发布方法,其中,对所述第二分支代码进行编译和打包,以生成带版本号的镜像文件包括:
对所述第二分支代码进行编译,生成相应的程序包;
将用于实现相同功能的程序包划分到一个模块中,并对所述模块进行整合;
将整合后的所述模块、相关中间文件以及配置文件打包,以生成所述带版本号的镜像文件。
10.根据权利要求9所述的软件集成发布方法,其中,对所述第二分支代码进行编译之前,还包括调用持续集成工具,确定所述第二分支代码满足以下至少一项:
不存在未使用的变量;
不存在不必要的对象;
不存在多次重复的循环嵌套;
不存在内存泄漏。
11.根据权利要求1所述的软件集成发布方法,其中,所述持续集成系统接收所述第四网钩文件,根据所述第四网钩文件从所述镜像仓库系统中获取第二镜像文件进行功能测试,并在测试成功后将所述第二镜像文件发送至容器化部署系统进行版本升级,还包括:
所述第四网钩文件触发所述持续集成系统发布版本升级命令;
所述容器化部署系统根据所述版本升级命令为第二镜像文件创建运行容器以进行版本升级。
12.根据权利要求11所述的软件集成发布方法,其中,根据所述第四网钩文件从所述镜像仓库系统中获取第二镜像文件进行功能测试包括:
从所述镜像仓库中获取所述第二镜像文件;
从所述第二镜像文件中获取最新模板;
从所述最新模板中获取待测试的程序包。
13.根据权利要求11所述的软件集成发布方法,其中,所述持续集成系统接收所述第四网钩文件时,读取所述第四网钩文件,以从所述第四网钩文件中获取所述第二网钩文件的服务名和版本号。
14.根据权利要求1所述的软件集成发布方法,其中,所述软件集成发布方法还包括:
对测试失败的代码,开发人员需要重新建立新的开发分支,将所述测试失败的代码合并到新的开发分支进行第二次开发;或
由相应系统生成错误提示和修改提示,以通知开发人员查找错误原因并进行修改。
15.一种自动运维平台,其中,包括:
代码管理系统,用以存储第一分支代码和第二分支代码,并在接收到开发者提交的第一合并请求时,生成第一网钩文件,或在接收到开发者提交的第二合并请求时,生成第三网钩文件,所述第一网钩文件中包含有所述第一分支代码的存储地址信息;
持续集成系统,用以接收所述第一网钩文件,根据所述第一网钩文件自动获取第一分支代码,并对所述第一分支代码进行编译、打包,以生成第一镜像文件,或接收所述第三网钩文件,根据所述第三网钩文件自动获取第二分支代码,并对所述第二分支代码进行编译、打包,以生成第二镜像文件;
镜像仓库系统,用以存储所述第一镜像文件和所述第二镜像文件,并在接收到所述第一镜像文件时生成第二网钩文件,或在接收到所述第二镜像文件时生成第四网钩文件;以及
容器化部署系统,用以接收所述第二网钩文件,根据所述第二网钩文件获取所述第一镜像文件,并对所述第一镜像文件进行重新部署,或接收版本升级命令,并根据所述版本升级命令对所述第二镜像文件进行升级部署;
所述持续集成系统还用以接收所述第四网钩文件,根据所述第四网钩文件获取所述第二镜像文件,同时发布所述版本升级命令,所述第二镜像文件为带版本号的镜像文件。
16.一种计算机设备,其中,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器和通信接口;
所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,利用所述通信接口执行如权利要求1至14中任一项所述的软件集成发布方法。
17.一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1至14中任一项所述的软件集成发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911232814.7A CN111142879B (zh) | 2019-12-05 | 2019-12-05 | 软件集成发布方法及自动运维平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911232814.7A CN111142879B (zh) | 2019-12-05 | 2019-12-05 | 软件集成发布方法及自动运维平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142879A CN111142879A (zh) | 2020-05-12 |
CN111142879B true CN111142879B (zh) | 2023-12-26 |
Family
ID=70517691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911232814.7A Active CN111142879B (zh) | 2019-12-05 | 2019-12-05 | 软件集成发布方法及自动运维平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142879B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263120B2 (en) * | 2020-02-12 | 2022-03-01 | Capital One Services, Llc | Feature-based deployment pipelines |
CN111694553B (zh) * | 2020-06-11 | 2023-07-07 | 广州力挚网络科技有限公司 | 一种代码处理系统及方法 |
CN111783104B (zh) * | 2020-07-02 | 2021-04-06 | 北京自如信息科技有限公司 | 一种漏洞检查方法、持续集成代码的漏洞检查方法及装置 |
CN112000334A (zh) * | 2020-07-20 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 页面开发方法、装置、服务器及存储介质 |
CN111966365A (zh) * | 2020-08-17 | 2020-11-20 | 北京一览群智数据科技有限责任公司 | 一种模块部署方法及部署系统 |
CN112052070A (zh) * | 2020-08-27 | 2020-12-08 | 亚信科技(南京)有限公司 | 应用容器化评估方法、装置、电子设备及存储介质 |
CN111984246A (zh) * | 2020-09-02 | 2020-11-24 | 重庆可兰达科技有限公司 | 分布式环境下企业级系统自动化部署方法及其装置 |
CN114157658B (zh) * | 2021-12-06 | 2024-03-01 | 京东科技信息技术有限公司 | 镜像仓库部署方法、装置、电子设备和计算机可读介质 |
CN114490073A (zh) * | 2022-01-29 | 2022-05-13 | 京东方科技集团股份有限公司 | 电子地图运维方法、电子地图数据使用方法及服务系统 |
CN115034095B (zh) * | 2022-08-10 | 2022-11-04 | 国网江苏省电力有限公司信息通信分公司 | 一种敏态研发仿真系统 |
CN115857973A (zh) * | 2022-12-23 | 2023-03-28 | 上海基煜基金销售有限公司 | 基于哈希值的软件一致性管理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528200A (zh) * | 2016-10-08 | 2017-03-22 | 广州视睿电子科技有限公司 | 一种基于docker compose的持续集成方法及装置 |
CN109683912A (zh) * | 2018-12-29 | 2019-04-26 | 有米科技股份有限公司 | 软件集成与部署的方法、装置、服务器及存储介质 |
CN110083369A (zh) * | 2019-04-25 | 2019-08-02 | 中电科嘉兴新型智慧城市科技发展有限公司 | 一种基于容器方案的持续集成和持续交付方法 |
CN110471648A (zh) * | 2019-08-19 | 2019-11-19 | 山东浪潮通软信息科技有限公司 | 一种基于异步机制的分布式的ci/cd的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10754761B2 (en) * | 2016-11-11 | 2020-08-25 | Atlassian Pty Ltd | Systems and methods for testing source code |
-
2019
- 2019-12-05 CN CN201911232814.7A patent/CN111142879B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528200A (zh) * | 2016-10-08 | 2017-03-22 | 广州视睿电子科技有限公司 | 一种基于docker compose的持续集成方法及装置 |
CN109683912A (zh) * | 2018-12-29 | 2019-04-26 | 有米科技股份有限公司 | 软件集成与部署的方法、装置、服务器及存储介质 |
CN110083369A (zh) * | 2019-04-25 | 2019-08-02 | 中电科嘉兴新型智慧城市科技发展有限公司 | 一种基于容器方案的持续集成和持续交付方法 |
CN110471648A (zh) * | 2019-08-19 | 2019-11-19 | 山东浪潮通软信息科技有限公司 | 一种基于异步机制的分布式的ci/cd的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111142879A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142879B (zh) | 软件集成发布方法及自动运维平台 | |
CN109960643B (zh) | 一种代码测试方法和装置 | |
CN110532189B (zh) | 一种持续集成系统、方法及装置 | |
CN109814879B (zh) | 自动化ci/cd项目部署方法、存储介质 | |
US10114637B1 (en) | Automatically updating a shared project build platform | |
CN108399083B (zh) | 一种系统部署方法、装置、电子设备和存储介质 | |
CN105164644B (zh) | 钩子框架 | |
US10579966B1 (en) | Adapting a shared project build platform to a developer plugin | |
US11243516B2 (en) | Edge devices and associated networks utilising microservices | |
CN111399853B (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
CN112965785B (zh) | 基于容器的微服务应用开发方法及开发平台 | |
US8516464B2 (en) | Computer system and method for resolving dependencies in a computer system | |
US20100070961A1 (en) | Supplying Software Updates Synchronously | |
CN113703730A (zh) | 持续集成方法、装置、计算机设备及存储介质 | |
US8713554B1 (en) | Automated hotfix handling model | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
CN107885551A (zh) | 一种服务部署方法、装置、可读介质及存储控制器 | |
CN109002307A (zh) | 一种自动升级及自动化测试方法 | |
CN108776643B (zh) | 一种基于版本控制流程的目标代码合并控制方法及系统 | |
CN111324522A (zh) | 一种自动化测试系统及方法 | |
CN114995835A (zh) | 一种应用自动化部署方法、系统、设备和可读存储介质 | |
CN111078265B (zh) | 一种基于jenkins的web项目更新补丁生成方法 | |
CN115220863A (zh) | 容器应用的运维方法、装置、计算机设备和存储介质 | |
CN112099815B (zh) | 持续集成环境构建方法及装置 | |
CN114546819A (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 | ||
CB02 | Change of applicant information |
Address after: Room 501, Jinqian block, 10 Hongyi Road, Xinwu District, Wuxi City, Jiangsu Province, 214028 Applicant after: Wuxi rongka Technology Co.,Ltd. Address before: 518000 w805, north wing, west block, industry university research base, South Qidao deep lane, Gaoxin, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN RONGCARD Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |