CN114461269A - 软件开发发布管理方法、装置、设备及存储介质 - Google Patents
软件开发发布管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114461269A CN114461269A CN202210125995.9A CN202210125995A CN114461269A CN 114461269 A CN114461269 A CN 114461269A CN 202210125995 A CN202210125995 A CN 202210125995A CN 114461269 A CN114461269 A CN 114461269A
- Authority
- CN
- China
- Prior art keywords
- target
- code
- branch
- release
- application
- 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
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请是关于一种软件开发发布方法、装置、设备及存储介质,具体涉及设备更新技术领域。所述方法包括:获取目标代码,并将目标代码存储至代码仓库中;当接收到应用添加指示后,根据应用添加指示对应生成目标文件,并将目标文件推送至代码仓库中;当检测到代码仓库中存在与目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;将目标镜像文件推送至镜像管理仓库,以便docker部署目标镜像文件从而实现目标应用的发布。上述方案,将软件开发发布过程划分为编译,打包,制作镜像三个阶段,并在接收到对应的信息时自动执行,不需要人工进行干预,提升了应用自动化发布的灵活度,从而提高了软件开发效率。
Description
技术领域
本发明涉及云原生技术领域,具体涉及一种软件开发发布管理方法、装置、设备及存储介质。
背景技术
在拥有大量微服务的应用架构场景下,如何高效的构建与发布应用是一个非常具备挑战的问题。
传统基于手动或者半自动的维护方式,在应用数量庞大的场景下非常低效且容易出错,而目前存在2种主流的解决方案:1)基于虚拟机/物理机的应用发布:大多基于ansible等任务编排工具,将应用程序按照预先定义的方式推送到若干虚拟主机/物理机。2)基于容器的应用发布:大多基于docker(应用容器引擎)容器化技术,将构建好的应用镜像分发到若干宿主机。
上述两种方式均需要大量人工参与应用部署的各个流程,重复性工作多,容易出错,导致软件开发效率低下。
发明内容
本申请提供了一种软件开发发布方法、装置、设备及存储介质,提高了设备更新升级的可靠性,该技术方案如下。
一方面,提供了一种软件开发发布方法,所述方法包括:
获取目标代码,并将所述目标代码存储至代码仓库中;
当接收到应用添加指示后,根据所述应用添加指示对应生成目标文件,并将所述目标文件推送至代码仓库中;
当检测到代码仓库中存在与所述目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
将目标镜像文件推送至镜像管理仓库,以便docker部署所述目标镜像文件从而实现目标应用的发布。
又一方面,提供了一种软件开发发布装置,所述装置包括:
代码获取模块,用于获取目标代码,并将所述目标代码存储至代码仓库中;
文件生成模块,用于当接收到应用添加指示后,根据所述应用添加指示对应生成目标文件,并将所述目标文件推送至代码仓库中;
镜像创建模块,用于当检测到代码仓库中存在与所述目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
应用发布模块,用于将目标镜像文件推送至镜像管理仓库,以便docker部署所述目标镜像文件从而实现目标应用的发布。
在一种可能的实现方式中,所述应用添加指示中包含所述目标应用的语言类型;所述文件生成模块,用于,
根据所述目标应用的语言类型,通过GitLab生成目标文件;所述目标文件用于指示对所述目标代码进行编译。
在一种可能的实现方式中,所述装置还包括:
开发分支创建模块,用于当接收到目标需求后,创建该目标需求对应的开发分支;
代码保存模块,用于获取所述目标代码并保存至所述开发分支上;
代码测试模块,用于对所述目标代码进行测试,当所述目标代码的测试通过后,将所述目标代码存储至上线分支的代码仓库中。
在一种可能的实现方式中,所述代码测试模块,还用于,
从上线分支中拉取发布分支,并将所述目标需求对应的开发分支与所述发布分支进行合并,并对合并后的发布分支中的代码进行测试验证。
在一种可能的实现方式中,所述装置还包括:
异常检测模块,用于当检测到所述目标需求对应的开发分支与所述发布分支的合并出现异常时,在分支展示界面上展示冲突的分支,并确定出合并异常部分的代码。
在一种可能的实现方式中,所述代码测试模块,还用于,
当所述目标代码的测试通过后,将合并后的发布分支中的代码合并至所述上线分支中,以将所述目标代码存储至上线分支的代码仓库。
在一种可能的实现方式中,所述装置还包括:
ID对比模块,用于调用GitLab api获取到目标开发分支最新提交的提交ID与目标测试分支的合并ID进行对比,当检测到所述提交ID与所述合并ID不同时,在所述分支展示界面上展示目标测试分支上存在代码更新。
再一方面,提供了一种计算机设备,所述计算机设备中包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述软件开发发布方法。
又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的软件开发发布方法。
再一方面,提供了一种计算机程序产品还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的软件开发发布方法。
本申请提供的技术方案可以包括以下有益效果:
在软件开发发布时,软件开发发布系统可以获取到用户输入的目标代码,并将其先保存至代码仓库中,当软件开发发布系统接收到应用添加指示后,则根据该应用添加指示生成对应的目标文件,并推送至代码仓库中,此时代码仓库检测到存在匹配的目标文件以及目标代码后,则运行该目标代码创建对应的目标镜像文件,并将创建好的目标镜像文件推送至镜像管理仓库,以便docker实现对目标镜像文件的部署,从而完成目标应用的发布过程。上述方案中,软件开发发布系统可以根据抽象任务构建单元,将软件开发发布过程划分为编译,打包,制作镜像三个阶段,并在接收到对应的信息时自动执行,不需要人工进行干预,提升了应用自动化发布的灵活度,从而提高了软件开发效率。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种软件开发发布系统的结构示意图。
图2是根据一示例性实施例示出的软件开发发布方法的方法流程图。
图3是根据一示例性实施例示出的软件开发发布方法的方法流程图。
图4示出了本申请实施例涉及的一种容器发布的架构示意图。
图5示出了本申请实施例涉及的一种镜像合成以及容器管理流程示意图。
图6示出了本申请实施例涉及的一种分支模型工作流程示意图。
图7是根据一示例性实施例示出的软件开发发布装置的结构方框图。
图8是根据本申请一示例性实施例提供的一种计算机设备示意图。
具体实施方式
下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,在本申请的实施例中提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,A指示B,可以表示A直接指示B,例如B可以通过A获取;也可以表示A间接指示B,例如A指示C,B可以通过C获取;还可以表示A和B之间具有关联关系。
在本申请实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
本申请实施例中,“预定义”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。
在对本申请所示的各个实施例进行说明之前,首先对本申请涉及到的几个概念进行介绍。
1)云技术
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
2)云计算
云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。
3)Kubernetes
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes的一个核心特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。
图1是根据一示例性实施例示出的一种软件开发发布系统的结构示意图。该软件开发发布系统中包含服务器110以及目标设备120。其中,目标设备120与服务器110之间通过通信网络进行数据通信,该通信网络可以是有线网络也可以是无线网络。
可选的,在该软件开发发布系统中,该目标设备120可以是开发人员使用的终端设备,该开发人员可以通过该目标设备120传输开发代码至服务器110,或者,该开发人员还可以通过该目标设备120控制运行与服务器110上的软件开发发布平台,以实现完整的软件开发发布流程。
可选的,该服务器110中有运行有基于K8s构建的软件开发发布平台,该服务器110中还具有数据存储模块,该数据存储模块中保存有软件开发过程中的各个流程的代码或文件,以当接收到开发人员通过目标设备120发送的开发命令后,调用对应的代码或文件以执行软件开发或发布流程。
可选的,该目标设备120还可以是智能手机、平板电脑,膝上便携式笔记本电脑等移动目标设备,也可以是台式电脑、投影式电脑等目标设备,或是具有数据处理组件的智能目标设备,本申请实施例对此不设限制。
服务器110可以实现为一台服务器,也可以实现为一组服务器构成的服务器集群,其可以是物理服务器,也可以实现为云服务器。在一种可能的实现方式中,服务器110是目标设备120中应用程序的后台服务器。
可选的,上述服务器可以是独立的物理服务器,也可以是由多个物理服务器构成的服务器集群或者是分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等技术运计算服务的云服务器。
可选的,该系统还可以包括管理设备,该管理设备用于对该系统进行管理(如管理各个模块与服务器之间的连接状态等),该管理设备与服务器之间通过通信网络相连。可选的,该通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网,但也可以是其他任何网络,包括但不限于局域网、城域网、广域网、移动、有限或无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言、可扩展标记语言等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层、传输层安全、虚拟专用网络、网际协议安全等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
图2是根据一示例性实施例示出的软件开发发布方法的方法流程图。该方法由服务器执行,该服务器可以是如图1所示的软件开发发布系统中的服务器110。如图2所示,该软件开发发布方法可以包括如下步骤:
步骤201,获取目标代码,并将该目标代码存储至代码仓库中。
在用户需要通过软件开发系统进行软件的开发以及发布时,用户可以通过软件开发发布系统中的目标设备,将需要开发的软件的目标代码传输至服务器中,此时服务器接收到该目标代码,并将该目标代码保存在代码仓库中,等待对该目标代码进行开发的开发命令。
步骤202,当接收到应用添加指示后,根据该应用添加指示对应生成目标文件,并将该目标文件推送至代码仓库中。
在该软件开发发布系统中,开发人员可以通过目标设备向服务器发送应用添加指示,例如通过目标设备登录服务器中运行的软件开发发布平台,并向该软件开发发布平台中的应用添加界面中,输入对应的信息,以生成应用添加指示,从而指示生成该应用的各个配置信息。
例如,目标文件中可以包含有需要开发的目标应用的语言类型,从而指示后续对该应用的开发过程中所采用的编译脚本等。或者,该目标文本的类型即为脚本文件类型,软件开发发布平台可以根据开发人员所选择或输入的信息,自动生产对应的编译脚本,以便对目标代码进行编译。
步骤203,当检测到代码仓库中存在与该目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
当目标文件输入至代码仓库后,则服务器检测到代码仓库中即包含有目标文件,也包含有目标代码,此时可以认为满足了目标代码的编译条件,因此对目标代码进行编译,并将编译结果进行打包后,创建为对应的目标镜像文件,以便后续的部署。
步骤204,将目标镜像文件推送至镜像管理仓库,以便docker部署该目标镜像文件从而实现目标应用的发布。
在构建了目标代码对应的目标镜像文件后,则将该目标镜像文件推送至对应的镜像管理仓库,以便docker将该目标镜像文件部署至各个集群中。
综上所述,在软件开发发布时,软件开发发布系统可以获取到用户输入的目标代码,并将其先保存至代码仓库中,当软件开发发布系统接收到应用添加指示后,则根据该应用添加指示生成对应的目标文件,并推送至代码仓库中,此时代码仓库检测到存在匹配的目标文件以及目标代码后,则运行该目标代码创建对应的目标镜像文件,并将创建好的目标镜像文件推送至镜像管理仓库,以便docker实现对目标镜像文件的部署,从而完成目标应用的发布过程。上述方案中,软件开发发布系统可以根据抽象任务构建单元,将软件开发发布过程划分为编译,打包,制作镜像三个阶段,并在接收到对应的信息时自动执行,不需要人工进行干预,提升了应用自动化发布的灵活度,从而提高了软件开发效率。
图3是根据一示例性实施例示出的软件开发发布方法的方法流程图。该方法由服务器执行,该服务器可以是如图1所示的软件开发发布系统中的服务器110。
在该服务器中运行有本申请实施例涉及的一种软件开发发布平台,目前广泛应用的持续集成的可视化web自动化工具有Jenkins CI和GitLab CI,而本申请实施例采用了GitLab CI构建该软件开发发布平台。该软件开发发布平台上具有完善的发布功能:容器弹性编译、支持容器镜像发布;支持java/go/php/javascript/python等语言。
在该软件开发发布平台中包括以下模块:应用管理模块,用于管理用户数据到集群中提供用户权限管理和代码管理;应用分支管理模型,用于管理用户开发分支和代码合并;环境配置管理模块,用于应用申请机器配置需求和托管配置文件;任务构建单元,用于管理构建代码的任务对代码进行构建;镜像管理单元,用于管理任务构建单元构建的Docker镜像;应用部署模块,用于镜像单元部署到kubernetes集群中。
如图3所示,在该软件开发发布平台上执行的该软件开发发布方法可以包括如下步骤:
步骤301,获取目标代码,并将该目标代码存储至代码仓库中。
其中,该代码仓库可以是GitLab代码仓库。即此时在编译构建过程中,用户可以将目标代码托管至GitLab代码仓库。
在本申请实施例中,软件开发发布平台中还具有目标分支模型,且该目标分支模型是基于git-flow分支模型设计的,此时目标代码所托管的GitLab代码仓库可以为master分支仓库,即上线分支的代码仓库。
步骤302,当接收到应用添加指示后,根据该目标应用的语言类型,通过GitLab生成目标文件。
该目标文件用于指示对该目标代码进行编译,并将该目标文件推送至代码仓库中。
即在本申请实施例所涉及的软件开发发布平台根据应用语言类型自动生成ci文件.gitlab-ci.yml,用户可自动推送其到master仓库中。
步骤303,当检测到代码仓库中存在与该目标文件对应的目标代码时,编译该目标代码,并创建对应的目标镜像文件。
当GitLab将检测到.gitlab-ci.ym脚本文件后,使用名为GitLab Runner的工具运行脚本,从而实现对目标代码的编译。
在一种可能的实现方式中,该脚本文件被分组为作业job,它们共同组成了一个管道,这个流水线共包含1个job为build,该buildjob包含一个stage build。buildstage配置了在具有build标签的runner中运行,限制为触发trigger操作时,运行构建命令。在编写好yml文件之后,在本申请实施例中的软件开发发布平台操作【重新部署】按钮。此时会触发流水线运行。
步骤304,将目标镜像文件推送至镜像管理仓库,以便docker部署该目标镜像文件从而实现目标应用的发布。
应用构建打包完成,会根据docker操作创建镜像并将应用镜像推送至统一的镜像管理仓库harbor,便于docker启动部署镜像。
在本申请实施例中,目标应用的发布是基于kubernetes实现的。图4示出了本申请实施例涉及的一种容器发布的架构示意图。如图4所示,开发人员通过omega集群(即本申请实施例所示出的软件开发发布平台)进行开发编译,生成镜像文件后推送至harbor集群。
Harbor集群中的各个镜像文件通过k8s中的docker部署到各个集群中,以便用户操控的client终端,调用该目标应用。
并且图4中还包括日志收集集群以及监控告警模块。本申请实施例的软件开发发布平台还支持历史日志查看,由于应用部署到kubernetes上面临实例漂移问题,此时通过镜像和deployment单元映射宿主机映射位置,nginx暴露目录的方式,使历史日志有统一的位置查看,降低了历史日志查阅的成本,提升定位问题的效率。
请参考图5,其示出了本申请实施例涉及的一种镜像合成以及容器管理流程示意图。如图5所示,当用户输入代码至Gitlab-CI后,进行编译处理打包为代码包,服务器通过Dockerfile生成基础镜像,此时再通过本申请实施例所示出的编译流程,将根据代码包、基础镜像、配置文件等构建为应用镜像,并保存至镜像仓库中,此时再通过k8s实现容器部署功能,部署为私有云VM虚拟池中的各个Docker容器并分别与接入层、日志模块、监控模块以及告警模块连接,以实现与终端的接入、日志的获取、监控以及告警等功能,并且在该容器管理流程中,还可以根据当前的环境进行应用的开发、测试、预发以及生产。
进一步的,上述软件的开发过程以及发布过程在开发分支、发布分支中执行。
在一种可能的实现方式中,当接收到目标需求后,创建该目标需求对应的开发分支;
获取该目标代码并保存至该开发分支上;
对该目标代码进行测试,当该目标代码的测试通过后,将该目标代码存储至上线分支的代码仓库中。
即用户在上传目标代码之前,用户可以先向服务器发送目标需求(例如在需求请求界面中选取或输入对应的信息,以生成目标需求),当服务器接收到目标需求后,创建该目标需求对应的开发分支,如直接从主干的master分支中拉取出。
请参考图6,其示出了本申请实施例涉及的一种分支模型工作流程示意图。如图6所示,在本申请实施例所示的目标分支模型中,主干的master分支(即上线分支)中包含有各个标记点tag,在目标分支模型中,可以根据不同的需求创建出不同的开发分支,在开发需求完成之后,从master拉出release发布分支,并将计划发布的开发分支合并到release发布分支,再根据发布分支进行目标代码(即目标应用)上线部署,代码部署成功后平台会将release发布分支代码自动合并到master分支上。
在一种可能的实现方式中,从上线分支中拉取发布分支,并将该目标需求对应的开发分支与该发布分支进行合并,并对合并后的发布分支中的代码进行测试验证。
即开发分支开发完需求后,按照发布节奏,从master拉出release发布分支,并将计划发布的开发分支合并到release。
在一种可能的实现方式中,如果在发布周期内,决定放弃一个开发分支的上线,只需放弃整个release发布分支,从master重新拉一条新的release发布分支,只合并确定要发布的开发分支。
在一种可能的实现方式中,当检测到该目标需求对应的开发分支与该发布分支的合并出现异常时,在分支展示界面上展示冲突的分支,并确定出合并异常部分的代码。
当代码合并的时候,有可能出现有冲突的情况,平台会展示冲突的分支,同时会跳转GitLab查看具体冲突的代码,便于研发人员快速定位冲突代码,线下解决后,再次点击合并。
在一种可能的实现方式中,当该目标代码的测试通过后,将合并后的发布分支中的代码合并至该上线分支中,以将该目标代码存储至上线分支的代码仓库。
release发布分支功能经过测试验证通过,进行上线部署,代码部署成功后,平台会将release发布分支代码自动合并到master分支上,避免线下人为合并容易遗忘的问题。
在一种可能的实现方式中,调用GitLab api(Application ProgrammingInterface,应用程序接口)获取到目标开发分支最新提交的提交ID与目标测试分支的合并ID进行对比,当检测到该提交ID与该合并ID不同时,在该分支展示界面上展示目标测试分支上存在代码更新。
代码有更新时,平台提示具体分支【有更新】展示,提醒用户将最新的代码合并到发布分支并部署到当前环境。代码更新:调用GitLab api获取到开发分支最新提交的commitID(提交ID)与omega数据库中维护的分支的mergerCommitId(合并ID)对比,不一致时,就认为分支有新代码提交。
通过上述方案,分支从创建、合并、发布、合并代码到master、删除等整个生命周期的操作均在平台上可完成,由平台统一管控分支,更加规范,同时减少了项目中各种各样的分支创建。
综上,可看出整个分支生命周期的流转,均可在平台上全自动可视化的解决,线上可视化多人协同开发处理,极大的简化了用户的操作,减少了多用户线下操作导致的各种问题,全部透明化,从平台能够直观的看到当前项目中迭代的分支情况(提测/上线)及进度,分支的全生命周期均可在平台完成。
综上所述,在软件开发发布时,软件开发发布系统可以获取到用户输入的目标代码,并将其先保存至代码仓库中,当软件开发发布系统接收到应用添加指示后,则根据该应用添加指示生成对应的目标文件,并推送至代码仓库中,此时代码仓库检测到存在匹配的目标文件以及目标代码后,则运行该目标代码创建对应的目标镜像文件,并将创建好的目标镜像文件推送至镜像管理仓库,以便docker实现对目标镜像文件的部署,从而完成目标应用的发布过程。上述方案中,软件开发发布系统可以根据抽象任务构建单元,将软件开发发布过程划分为编译,打包,制作镜像三个阶段,并在接收到对应的信息时自动执行,不需要人工进行干预,提升了应用自动化发布的灵活度,从而提高了软件开发效率。
并且通过本申请实施例所示方案中涉及的软件开发发布平台,使得开发过程中环境资源申请释放方便,通过对kubernetes模板的定制开发出环境管理系统,自助式申请机器和审批(由原来天级单位降为分钟级审批)。节省研发和运维的对接时间,提高新应用发布效率,如果环境需要废弃使用,可立即回收,释放资源,提高机器利用率。
通过制定一套新式git flow开发模型,并将其改造为线上操作的方式,对研发分支的生命周期进行管理,发布时可精确选择需要上线的分支,跟进分支的实时状态。支持了研发种快速迭代的诉求,又能避免直接对master分支做改造带来的隐患。
目前多语言多种应用类型的开发模式下,通过抽象任务构建单元,划分为编译,打包,制作镜像三个阶段。支持了多语言多应用类型的任务构建,制作出统一的镜像单元,研发无须干预,通过系统自动构建。抹平了研发差异,提升了自动化构建的灵活度。
Kubernetes在本系统中被抽象为发布单元,在应用无感知的情况下即可将镜像单元一键部署到kubernetes集群,通过kubernetes operator开发金丝雀发布模型(即灰度发布),发布过程流量完全无损,遇到问题可立即回滚,降低研发上线的负担。
通过路由设计达到多测试环境的目的,避免多并行需求之间的代码互绕问题,保证测试环境的稳定性提升测试效率,同时在环境稳定的基础上实施数据构建和自动化测试,提升测试效率。
图7是根据一示例性实施例示出的软件开发发布装置的结构方框图。所述装置包括:
代码获取模块701,用于获取目标代码,并将所述目标代码存储至代码仓库中;
文件生成模块702,用于当接收到应用添加指示后,根据所述应用添加指示对应生成目标文件,并将所述目标文件推送至代码仓库中;
镜像创建模块703,用于当检测到代码仓库中存在与所述目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
应用发布模块704,用于将目标镜像文件推送至镜像管理仓库,以便docker部署所述目标镜像文件从而实现目标应用的发布。
在一种可能的实现方式中,所述应用添加指示中包含所述目标应用的语言类型;所述文件生成模块,用于,
根据所述目标应用的语言类型,通过GitLab生成目标文件;所述目标文件用于指示对所述目标代码进行编译。
在一种可能的实现方式中,所述装置还包括:
开发分支创建模块,用于当接收到目标需求后,创建该目标需求对应的开发分支;
代码保存模块,用于获取所述目标代码并保存至所述开发分支上;
代码测试模块,用于对所述目标代码进行测试,当所述目标代码的测试通过后,将所述目标代码存储至上线分支的代码仓库中。
在一种可能的实现方式中,所述代码测试模块,还用于,
从上线分支中拉取发布分支,并将所述目标需求对应的开发分支与所述发布分支进行合并,并对合并后的发布分支中的代码进行测试验证。
在一种可能的实现方式中,所述装置还包括:
异常检测模块,用于当检测到所述目标需求对应的开发分支与所述发布分支的合并出现异常时,在分支展示界面上展示冲突的分支,并确定出合并异常部分的代码。
在一种可能的实现方式中,所述代码测试模块,还用于,
当所述目标代码的测试通过后,将合并后的发布分支中的代码合并至所述上线分支中,以将所述目标代码存储至上线分支的代码仓库。
在一种可能的实现方式中,所述装置还包括:
ID对比模块,用于调用GitLab api获取到目标开发分支最新提交的提交ID与目标测试分支的合并ID进行对比,当检测到所述提交ID与所述合并ID不同时,在所述分支展示界面上展示目标测试分支上存在代码更新。
综上所述,在软件开发发布时,软件开发发布系统可以获取到用户输入的目标代码,并将其先保存至代码仓库中,当软件开发发布系统接收到应用添加指示后,则根据该应用添加指示生成对应的目标文件,并推送至代码仓库中,此时代码仓库检测到存在匹配的目标文件以及目标代码后,则运行该目标代码创建对应的目标镜像文件,并将创建好的目标镜像文件推送至镜像管理仓库,以便docker实现对目标镜像文件的部署,从而完成目标应用的发布过程。上述方案中,软件开发发布系统可以根据抽象任务构建单元,将软件开发发布过程划分为编译,打包,制作镜像三个阶段,并在接收到对应的信息时自动执行,不需要人工进行干预,提升了应用自动化发布的灵活度,从而提高了软件开发效率。
请参阅图8,其是根据本申请一示例性实施例提供的一种计算机设备示意图,所述计算机设备包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述方法。
其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种软件开发发布方法,其特征在于,所述方法包括:
获取目标代码,并将所述目标代码存储至代码仓库中;
当接收到应用添加指示后,根据所述应用添加指示对应生成目标文件,并将所述目标文件推送至代码仓库中;
当检测到代码仓库中存在与所述目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
将目标镜像文件推送至镜像管理仓库,以便docker部署所述目标镜像文件从而实现目标应用的发布。
2.根据权利要求1所述的方法,其特征在于,所述应用添加指示中包含所述目标应用的语言类型;
所述根据所述应用添加指示对应生成目标文件,包括:
根据所述目标应用的语言类型,通过GitLab生成目标文件;所述目标文件用于指示对所述目标代码进行编译。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当接收到目标需求后,创建该目标需求对应的开发分支;
获取所述目标代码并保存至所述开发分支上;
对所述目标代码进行测试,当所述目标代码的测试通过后,将所述目标代码存储至上线分支的代码仓库中。
4.根据权利要求3所述的方法,其特征在于,所述对所述目标代码进行测试,包括:
从上线分支中拉取发布分支,并将所述目标需求对应的开发分支与所述发布分支进行合并,并对合并后的发布分支中的代码进行测试验证。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当检测到所述目标需求对应的开发分支与所述发布分支的合并出现异常时,在分支展示界面上展示冲突的分支,并确定出合并异常部分的代码。
6.根据权利要求5所述的方法,其特征在于,所述当所述目标代码的测试通过后,将所述目标代码存储至上线分支的代码仓库中,包括:
当所述目标代码的测试通过后,将合并后的发布分支中的代码合并至所述上线分支中,以将所述目标代码存储至上线分支的代码仓库。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
调用GitLab api获取到目标开发分支最新提交的提交ID与目标测试分支的合并ID进行对比,当检测到所述提交ID与所述合并ID不同时,在所述分支展示界面上展示目标测试分支上存在代码更新。
8.一种软件开发发布装置,其特征在于,所述装置包括:
代码获取模块,用于获取目标代码,并将所述目标代码存储至代码仓库中;
文件生成模块,用于当接收到应用添加指示后,根据所述应用添加指示对应生成目标文件,并将所述目标文件推送至代码仓库中;
镜像创建模块,用于当检测到代码仓库中存在与所述目标文件对应的目标代码时,运行该目标代码,并创建对应的目标镜像文件;
应用发布模块,用于将目标镜像文件推送至镜像管理仓库,以便docker部署所述目标镜像文件从而实现目标应用的发布。
9.一种计算机设备,其特征在于,所述计算机设备中包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如权利要求1至7任一所述的软件开发发布方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一所述的软件开发发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210125995.9A CN114461269A (zh) | 2022-02-10 | 2022-02-10 | 软件开发发布管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210125995.9A CN114461269A (zh) | 2022-02-10 | 2022-02-10 | 软件开发发布管理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461269A true CN114461269A (zh) | 2022-05-10 |
Family
ID=81413528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210125995.9A Pending CN114461269A (zh) | 2022-02-10 | 2022-02-10 | 软件开发发布管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461269A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113909A (zh) * | 2022-06-29 | 2022-09-27 | 北京永信至诚科技股份有限公司 | 一种项目自动化运维方法、系统、电子设备及存储介质 |
CN115291929A (zh) * | 2022-07-05 | 2022-11-04 | 华南师范大学 | 用于人工智能教育图形化编程软件的编程块管理系统 |
CN117270886A (zh) * | 2023-11-17 | 2023-12-22 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
-
2022
- 2022-02-10 CN CN202210125995.9A patent/CN114461269A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113909A (zh) * | 2022-06-29 | 2022-09-27 | 北京永信至诚科技股份有限公司 | 一种项目自动化运维方法、系统、电子设备及存储介质 |
CN115291929A (zh) * | 2022-07-05 | 2022-11-04 | 华南师范大学 | 用于人工智能教育图形化编程软件的编程块管理系统 |
CN115291929B (zh) * | 2022-07-05 | 2023-04-11 | 华南师范大学 | 用于人工智能教育图形化编程软件的编程块管理系统 |
CN117270886A (zh) * | 2023-11-17 | 2023-12-22 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
CN117270886B (zh) * | 2023-11-17 | 2024-02-06 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210232498A1 (en) | Method for testing edge computing, device, and readable storage medium | |
CN114461269A (zh) | 软件开发发布管理方法、装置、设备及存储介质 | |
CN107491329B (zh) | Docker镜像构建方法、设备、存储介质以及电子装置 | |
US10572249B2 (en) | Software kit release management | |
US20180113799A1 (en) | Model generation for model-based application testing | |
CN111309441A (zh) | 一种基于Jenkins实现DevOps的微服务部署方法 | |
US20140380265A1 (en) | Software change process orchestration | |
WO2020015191A1 (zh) | 业务规则的发布管理方法、电子装置及可读存储介质 | |
US20180089337A1 (en) | Creating an engineering project in an industrial automation environment | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
BR102021002596A2 (pt) | Sistema de gerenciamento de operadores em nuvem dinamicamente alocado e método para o mesmo | |
CN111162953A (zh) | 数据处理方法、系统升级方法和服务器 | |
EP3311265B1 (en) | A computing platform and method thereof for searching, executing, and evaluating computational algorithms | |
EP4246332A1 (en) | System and method for serverless application testing | |
CN114297056A (zh) | 一种自动化测试方法及系统 | |
CN113064630A (zh) | 移动端app自动打包方法、系统、电子设备及存储介质 | |
CN113296796A (zh) | 项目发布方法、装置、系统、存储介质、电子设备 | |
US10732948B2 (en) | System and method for implementing automated deployment | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN115220863A (zh) | 容器应用的运维方法、装置、计算机设备和存储介质 | |
US10579342B1 (en) | Encapsulated application templates for containerized application software development | |
CN117111907A (zh) | 一种软件开发系统 | |
CN116069334B (zh) | 一种基于云原生的在线开发与代码托管方法及系统 | |
CN114265595B (zh) | 一种基于智能合约的云原生应用开发与部署系统和方法 | |
CN116974716A (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 |