CN114564185A - 一种提升微服架构程序发布效率的方法及系统 - Google Patents
一种提升微服架构程序发布效率的方法及系统 Download PDFInfo
- Publication number
- CN114564185A CN114564185A CN202210212472.8A CN202210212472A CN114564185A CN 114564185 A CN114564185 A CN 114564185A CN 202210212472 A CN202210212472 A CN 202210212472A CN 114564185 A CN114564185 A CN 114564185A
- Authority
- CN
- China
- Prior art keywords
- environment
- program
- server
- code
- platform
- 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/30—Creation or generation of source code
-
- 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
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供了一种提升微服架构程序发布效率的方法及系统,所述方案包括:将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;基于获得的发布环境,实现应用程序在远程服务器上的发布。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种提升微服架构程序发布效率的方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
随着软件开发的行业的发展,现在软件开发行业使用Spring cloud微服务框架开发方式越来越普遍,但是传统的代码构建发布方式已无法满足微服务开发框架中日益增长的发布,测试、上线工作。
发明人发现,传统的代码发布一般流程是:开发人员本地编译源码打包出应用程序,将应用程序交付给运维人员,运维人员通过FTP(File Transfer Protocol:文件传输协议)/SSH(Secure Shell:安全外壳协议)等途径传输到服务器,然后手工命令启动应用程序,如果操作系统环境不匹配,还需要去配置环境,若程序出现了问题,需要运维提取日志给开发人员;传统的流程操作复杂、开发与运维工作交叉责任不清、需要频繁的手工操作很容易出错。
同时,传统代码发布构建过程中依赖开发人员的本地环境,有时相同的代码只能在某个开发人员的电脑上可以构建,其它电脑需要做出复杂的配置才能成功编译代码,极大的影响了生产效率,而且这种方式也增加了运维成本。
发明内容
本发明为了解决上述问题,提供了一种提升微服架构程序发布效率的方法及系统,所述方案所述方案通过将代码的编译工作放在云端服务器,开发人员只需要提交自己的业务代码,任何人都可以在云端编译代码,降低编译工作对开发人员本地环境的依赖;同时,在应用构建上可以构建独立的应用程序和提供Docker镜像方式,并通过程序自动分析发布服务器环境,可通过容器化的方式启动应用,也可以通过传统裸机部署方式,解决了操作系统环境复杂的运维难题;通过采用自动化的流水线作业,无需开发和运维的过多介入,开发人员只需要提交自己的业务代码到gitLab代码托管仓库,便可实现代码自动编译,运行应用,有效减少了人为失误;且自动化的流水线作业无需人员过多的参与,进一步提高了发布应用的效率。
根据本发明实施例的第一个方面,提供了一种提升微服架构程序发布效率的方法,包括:
将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
基于获得的发布环境,实现应用程序在远程服务器上的发布。
进一步的,所述Kubernetes容器云环境的判断具体为:运行kubectl版本查询脚本命令,若输出结果中含有服务器版本信息且版本信息内容不为空,则发布环境具备Kubernetes容器云环境;
或,
所述Docker环境的判断具体为:运行docker系统信息查询脚本命令,若输出结果中含有服务器信息且服务器版本内容不为空,则发布环境具备Docker环境;
或,
所述裸机环境的判断具体为:运行java版本查询脚本命令,若输出结果不为空且含有版本关键字,则发布环境具备裸机环境。
进一步的,所述对远程服务器环境进行分析判断,获得发布环境,具体满足如下优先级:Kubernetes容器云环境>Docker环境>裸机环境。
进一步的,所述手工配置环境的判断,具体为:预先指定程序发布环境,通过自适应发布环境的判断方式,判断待发布远程服务器是否具备指定程序发布环境,若是,则按照指定程序发布环境进行发布;若否,则按照待发布远程服务器具备的程序发布环境及优先级进行发布。
进一步的,所述将开发完的代码提交至代码托管平台,具体的:不同开发人员开发的代码上传至代码托管平台中,并通过相关开源平台执行代码的自动流水化作业;其中,所述相关开源平台采用账号统一创建方式,对于同一用户在不同开源平台创建相同的用户信息。
进一步的,所述开源平台包括Jenkins、Docker、GitLab、Harbor、Nexus、Maven、Sonar以及Zabbix。
进一步的,流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,具体的:开发人员提交代码后,代码托管平台触发push信号,流水作业平台配置的GitLab webhook,对push信号作出触发反应,启动自动化流水线作业。
进一步的,所述代码托管平台采用GitLab平台,所述流水作业平台采用Jenkins平台。
进一步的,将获得的应用程序存储入程序库,并将应用程序打包为镜像服务,具体为:将构建的应用程序直接推入程序库中,实现打包程序的版本管理以及远程服务器的直接下载;将可运行的应用程序,通过Docker的形式打包为Docker镜像服务。
根据本发明实施例的第二个方面,提供了一种提升微服架构程序发布效率的系统,包括:
托管单元,其用于将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
编译单元,其用于流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
存储单元,其用于将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
环境判断单元,其用于对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
发布单元,其用于基于获得的发布环境,实现应用程序在远程服务器上的发布。
与现有技术相比,本发明的有益效果是:
(1)本发明提供了一种提升微服架构程序发布效率的方法及系统,所述方案通过将代码的编译工作放在云端服务器,开发人员只需要提交自己的业务代码,任何人都可以在云端编译代码,降低编译工作对开发人员本地环境的依赖;同时,在应用构建上可以构建独立的应用程序和提供Docker镜像方式,并通过程序自动分析发布服务器环境,可通过容器化的方式启动应用(使用Docker服务或者kubernetes容器云),也可以通过传统裸机部署方式,解决了操作系统环境复杂的运维难题;
(2)本发明所述方案采用自动化的流水线作业,无需开发和运维的过多介入,开发人员只需要提交自己的业务代码到gitLab代码托管仓库,便可实现代码自动编译,运行应用,减少人为失误;自动化的流水线作业无需人员过多的参与,提高了发布应用的效率。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本发明实施例中所述的一种提升微服架构程序发布效率的方法流程图;
图2为本发明实施例中所述的一种提升微服架构程序发布效率的系统架构示意图;
图3为本发明实施例中所述的一种提升微服架构程序发布效率的系统功能模块示意图。
具体实施方式
下面结合附图与实施例对本发明做进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一:
本实施例的目的是提供一种提升微服架构程序发布效率的方法。
一种提升微服架构程序发布效率的方法,包括:
将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
基于获得的发布环境,实现应用程序在远程服务器上的发布。
进一步的,所述Kubernetes容器云环境的判断具体为:运行kubectl版本查询脚本命令,若输出结果中含有服务器版本信息且版本信息内容不为空,则发布环境具备Kubernetes容器云环境;
或,
所述Docker环境的判断具体为:运行docker系统信息查询脚本命令,若输出结果中含有服务器信息且服务器版本内容不为空,则发布环境具备Docker环境;
或,
所述裸机环境的判断具体为:运行java版本查询脚本命令,若输出结果不为空且含有版本关键字,则发布环境具备裸机环境。
进一步的,所述对远程服务器环境进行分析判断,获得发布环境,具体满足如下优先级:Kubernetes容器云环境>Docker环境>裸机环境。
进一步的,所述手工配置环境的判断,具体为:预先指定程序发布环境,通过自适应发布环境的判断方式,判断待发布远程服务器是否具备指定程序发布环境,若是,则按照指定程序发布环境进行发布;若否,则按照待发布远程服务器具备的程序发布环境及优先级进行发布。
进一步的,所述将开发完的代码提交至代码托管平台,具体的:不同开发人员开发的代码上传至代码托管平台中,并通过相关开源平台执行代码的自动流水化作业;其中,所述相关开源平台采用账号统一创建方式,对于同一用户在不同开源平台创建相同的用户信息。
进一步的,所述开源平台包括Jenkins、Docker、GitLab、Harbor、Nexus、Maven、Sonar以及Zabbix。
进一步的,流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,具体的:开发人员提交代码后,代码托管平台触发push信号,流水作业平台配置的GitLab webhook,对push信号作出触发反应,启动自动化流水线作业。
进一步的,所述代码托管平台采用GitLab平台,所述流水作业平台采用Jenkins平台。
进一步的,将获得的应用程序存储入程序库,并将应用程序打包为镜像服务,具体为:将构建的应用程序直接推入程序库中,实现打包程序的版本管理以及远程服务器的直接下载;将可运行的应用程序,通过Docker的形式打包为Docker镜像服务。
具体的,为了便于理解,以下结合附图对本发明所述方案进行详细说明:
本发明为了解决现有技术存在的问题,提供了一种提升微服架构程序发布效率的方法,所述方法将代码的编译工作放在云端服务器,开发人员只需要提交自己的业务代码,任何人都可以在云端编译代码,降低编译工作对开发人员本地环境的依赖;在应用构建上可以构建独立的应用程序和提供Docker镜像方式,程序自动分析发布服务器环境,可通过容器化的方式启动应用(使用Docker服务或者kubernetes容器云),也可以通过传统裸机部署方式,解决了操作系统环境复杂的运维难题;自动化的流水线作业,无需开发和运维的过多介入,开发人员只需要提交自己的业务代码到gitLab代码托管仓库,便可实现代码自动编译,运行应用,减少人为失误;自动化的流水线作业无需人员过多的参与,提高了发布应用的效率。具体的,如图1所示,所述方法包括如下步骤:
步骤1:创建用户账号信息,分配给使用用户;
步骤2:本发明中涉及众多的开源平台和系统,各系统直接需要相互调用,使用的化每个平台系统都需要配置相应的用户和权限,如果每创建一个用户都要配置一遍的话,需要的重复工作大,该步骤是一个平台分配账号后,会后台同步到其它平台包括(Jenkins、Harbor、gitLab、Nexus),会在所有平台上自动创建相同的用户信息,并分配相应的功能权限;
账号统一创建方式:调用各开源平台的接口API,通过API的方式实现用户的增/删/改;
例如:
Harbor平台创建用户dev密码为passwd123
curl-u"dev:passwd123"-X POST-H"Content-Type:application/json"
"https://IP地址/api/users"-d@user.json
注释说明:Harbor平台(docker镜像仓库服务),可通过http post请求的方式,发送创建用户命令,无需人工登录平台手工操作,该代码示例为创建一个用户为dev密码为passwd123的平台账号。
GitLab创建用户dev密码为passwd123
curl-X POST-H“PRIVATE-TOKEN:${access_token}”
http://${gitlab_url}/api/v4/users
-H‘cache-control:no-cache’
-H‘content-type:application/json’
-d‘{
“username”:“dev”,
“password”:“passwd123”,
“name”:“dev”,
}’
注释说明:GitLab平台(开发代码版本控制软件),可通过http post请求的方式,发送创建用户命令,无需人工登录平台手工操作,该代码示例为创建一个用户为dev密码为passwd123的平台账号。
上述步骤的目的是一个平台分配账号后,会后台同步到其它平台包括(Jenkins、Harbor、gitLab、Nexus),会在所有平台上自动创建相同的用户信息。
步骤3:人员开发完代码本地测试无误后,在gitLab代码托管平台提交自己开发代码;
步骤4:开发人员提交代码后,在gitLab平台会触发一个“push”的信号,流水线作业平台配置GitLab webhook,对“push”信息做出触发反应,启动自动化流水线作业;
步骤5:将代码拉取到构建服务器后,首先对代码进行静态扫描发现代码潜在缺陷,分析代码重复行,代码命名规则与注释是否合规,并生成代码质量分析报告,根据代码的质量分析报告来确定是否进入下一步的代码编译操作,若质量分析低于阈值,则停止自动化作业并发送邮件到开发人员。
步骤6:代码检查通过后,在云端服务器完成编译构建工作,生成可运行应用程序;
步骤7:源代码编译成应用程序后,在本步骤实现2种操作:
(1)将构建的应用程序直接推入程序库中,实现打包程序的版本管理、同时也方便远程服务器直接下载部署;即:源码构建的应用程序,可通过该发明方法直接下载部署应用程序;
(2)将可运行程序,通过Docker的形式打包为Docker镜像服务,以容器化部署的方式部署在远程服务器上,可降低程序对操作系统的环境依赖;即将源码构建的应用程序打包为Docker镜像,以镜像的方式部署。
步骤8:该步骤实现分析配置远程服务器部署程序的方式,可选择直接部署或者通过Docker容器化方式部署再或者部署在Kubernete容器云平台中;
其中,所述分析远程服务器环境判断方式:
(1)手工配置
由发布人员手工强制指定程序发布环境,程序也会判断环境是否有效,判断方式和系统自动判断待发布环境相同;
(2)程序自适应发布环境
由程序判断发布环境,根据优先级Kubernetes容器云环境>Docker容器环境>裸机环境的方式使用最佳微服务部署方式;
程序由源码构建完成后进入待发布状态,若发布人员未指定运行程序环境,本方法/系统自动判断待发布环境;具体的:
Kubernetes容器云判断环境:运行脚本命令“kubectl version”,输出结果中含有“Server Version”信息且“version.Info”内容不为空,则发布环境具备Kubernetes容器云环境;
Docker环境判断:运行脚本命令“docker info”,输出结果中含有“Server:”信息且“Server Version:”内容不为空;
裸机环境判断:运行脚本命令“java-version”,输出结果不为空且含有“version”关键字。
步骤9:根据上一步的分析结果,程序在不同环境下的部署工作;具体的:
Kubernetes容器云:其部署步骤通过kubectl run pod_name--image={镜像地址}部署;
Docker环境:其部署步骤通过docker run-itd–name pod_name{镜像地址}部署;
裸机环境:其部署步骤通过java-Djava.security.egd=file:/dev/./urandom-Djava.io.tmpdir=/tmp-XX:+UseG1GC-Xms256m-Xmx512m-server-XX:+HeapDumpOnOutOfMemoryError{构建程序}。
步骤10:程序在远程服务器启动后,针对不同的环境运行配置相应的程序运行探针,一般为程序存活探针和程序健康探针。
程序存活探针:
监测程序进程是否存在例如:
裸机部署监测进行PID是否存在;
Docker运行监测docker容器是否正在运行;
kubernete监测Pod是否处于Running状态;
程序健康探针:
监听服务端口是否正常开启并可以访问;当状态不正常时,发送邮件/短信警告。
步骤11:程序正常上线后,进入通过zabbix平台持续监控,当程序出现问题后及时短信/邮件告警。
进一步的,本发明所述方案采用的开源平台具体包括:
Jenkins平台为主平台,其用于实现任务自动化调度工作的一种持续集成工具。比如代码构建流水线、shell脚本的编写与运行、服务发布实现;
Docker是一个开源的应用容器引擎,其用于让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,让程序的运行拜托对运行主机操作系统环境的依赖;
GitLab代码托管平台,其用于管理开发的源代码,将GltLab与Jenkins结合,便可实现,当提交代码时自动触发程序构建流水线作业;
Harbor作为Docker镜像仓库使用,其用于管理Docker镜像版本。可以很好的远程push和pullDacker镜像;
Nexus是Maven私服,其用于帮助用户在打包程序时更加快速的拉取互联网资源到本地,同时也可以将本地打包好的应用程序放在nexus中,方便远程下载程序;
Maven被用于构建和管理各种项目;
Sonar用于代码质量分析报告工具,可以支持包括java、C#、C/C++、PL/SQL、Cobol、JavaScrip、Groovy等等二十几种编程语言的代码质量管理与检测,包括检测潜在的缺陷,检测代码重复行等等;
Zabbix是一种基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案;zabbix用于监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
本发明所述方案相对于传统微服务发布方式中代码构建环境依赖程序员本地电脑,将代码存放在云端服务器,有效提升了构建编译效率,相对于传统应用从源代码到最终的上线,效率提升明显;同时,解决多环境发布程序的复杂运维,可支持裸机环境、Docker容器环境,kubernetes云容器集群环境;所述方案有效降低了运维成本,通过自动化部署,减少人工操作;所述方案相对于目前流行的CICD(Continuous Integration ContinuousDeployment:持续集成、持续部署)优势,目前的CICD更多的是解决单一环境下的持续部署交付工作,本发明方法可解决多环境下的应用发布工作。
进一步的,以目前最流行的Spring cloud微服务框架,一般基础组件包括服务发现Eureka、客服端负载均衡Ribbon、断路器Hystrix、服务网关Zuul、分布式配置SpringCloud Config五个必备组件,一般的项目还会有Auth权限模块以及3-4个相关的模块,项目中还有一个前端WEB项目,最少一个项目要有10个模块,在传统部署方式中部署一个项目需要一名运维工程师,一名后端开发工程师,一名前端开发工程师相互配合。使用该方法和系统后无需工程师介入,开发人员提交代码自动构建,时间由传统的50分钟缩短到5分钟之内,效率提升90%。
程序的发布通过GitLab webhook触发器触发Jenkins流水线的方式,自动触发流水线作业,开发人员仅需提交代码便可自动部署流程,发布程序更加简单;
采用本发明方法后,无需人工干预,由自动化系统自动构建,减少人员投入,有效降低了运维成本;
本发明方法及系统提供了完善的日志体系与监控模块,及时发现应用发布全流程中出现的各种信息,具有完善的时时邮件、短信告警机制,第一时间发现问题;
本发明方法中在代码编译前有Sonar质量分析工具对代码全面的检查,发现代码潜在缺陷,提高代码质量,提高代码的健壮性,从而提升服务的稳定性;
本发明方法为自动化流水线作业,无需人员登录服务器进行命令行操作,所有的流程都由自动化程序后台运行,因此可以关闭外部进入服务器的入口,极大的提高了服务器的安全性。
实施例二:
本实施例的目的是提供一种提升微服架构程序发布效率的系统。
一种提升微服架构程序发布效率的系统,包括:
托管单元,其用于将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
编译单元,其用于流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
存储单元,其用于将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
环境判断单元,其用于对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
发布单元,其用于基于获得的发布环境,实现应用程序在远程服务器上的发布。
进一步的,如图2所示展示了本发明所述系统的架构示意图,如图3所示展示了本发明所述系统的功能模块示意图。
在更多实施例中,还提供:
一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成实施例一中所述的方法。为了简洁,在此不再赘述。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一中所述的方法。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
上述实施例提供的一种提升微服架构程序发布效率的方法及系统可以实现,具有广阔的应用前景。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种提升微服架构程序发布效率的方法,其特征在于,包括:
将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
基于获得的发布环境,实现应用程序在远程服务器上的发布。
2.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述Kubernetes容器云环境的判断具体为:运行kubectl版本查询脚本命令,若输出结果中含有服务器版本信息且版本信息内容不为空,则发布环境具备Kubernetes容器云环境;
或,
所述Docker环境的判断具体为:运行docker系统信息查询脚本命令,若输出结果中含有服务器信息且服务器版本内容不为空,则发布环境具备Docker环境;
或,
所述裸机环境的判断具体为:运行java版本查询脚本命令,若输出结果不为空且含有版本关键字,则发布环境具备裸机环境。
3.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述对远程服务器环境进行分析判断,获得发布环境,具体满足如下优先级:Kubernetes容器云环境>Docker环境>裸机环境。
4.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述手工配置环境的判断,具体为:预先指定程序发布环境,通过自适应发布环境的判断方式,判断待发布远程服务器是否具备指定程序发布环境,若是,则按照指定程序发布环境进行发布;若否,则按照待发布远程服务器具备的程序发布环境及优先级进行发布。
5.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述将开发完的代码提交至代码托管平台,具体的:不同开发人员开发的代码上传至代码托管平台中,并通过相关开源平台执行代码的自动流水化作业;其中,所述相关开源平台采用账号统一创建方式,对于同一用户在不同开源平台创建相同的用户信息。
6.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述开源平台包括Jenkins、Docker、GitLab、Harbor、Nexus、Maven、Sonar以及Zabbix。
7.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,具体的:开发人员提交代码后,代码托管平台触发push信号,流水作业平台配置的GitLab webhook,对push信号作出触发反应,启动自动化流水线作业。
8.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,所述代码托管平台采用GitLab平台,所述流水作业平台采用Jenkins平台。
9.如权利要求1所述的一种提升微服架构程序发布效率的方法,其特征在于,将获得的应用程序存储入程序库,并将应用程序打包为镜像服务,具体为:将构建的应用程序直接推入程序库中,实现打包程序的版本管理以及远程服务器的直接下载;将可运行的应用程序,通过Docker的形式打包为Docker镜像服务。
10.一种提升微服架构程序发布效率的系统,其特征在于,包括:
托管单元,其用于将开发完的代码提交至代码托管平台,其中,所述代码开发基于微服务架构实现,将系统根据功能分解为不同的服务,由不同的开发人员进行实现;
编译单元,其用于流水线作业平台接收代码托管平台的触发信号后,通过云端服务器完成代码的编译构建,获得可运行的应用程序;
存储单元,其用于将获得的应用程序存储入程序库,并将应用程序打包为镜像服务;
环境判断单元,其用于对远程服务器环境进行分析判断,获得发布环境;其中,所述远程服务器环境的分析判断包括手工配置环境的判断和自适应发布环境的判断;所述发布环境包括Kubernetes容器云环境、Docker环境以及裸机环境;
发布单元,其用于基于获得的发布环境,实现应用程序在远程服务器上的发布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210212472.8A CN114564185A (zh) | 2022-03-04 | 2022-03-04 | 一种提升微服架构程序发布效率的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210212472.8A CN114564185A (zh) | 2022-03-04 | 2022-03-04 | 一种提升微服架构程序发布效率的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114564185A true CN114564185A (zh) | 2022-05-31 |
Family
ID=81718665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210212472.8A Pending CN114564185A (zh) | 2022-03-04 | 2022-03-04 | 一种提升微服架构程序发布效率的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114564185A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270886A (zh) * | 2023-11-17 | 2023-12-22 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
-
2022
- 2022-03-04 CN CN202210212472.8A patent/CN114564185A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270886A (zh) * | 2023-11-17 | 2023-12-22 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
CN117270886B (zh) * | 2023-11-17 | 2024-02-06 | 浪潮通用软件有限公司 | 一种微服务系统开发部署方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180314622A1 (en) | System and method for implementing an api validator tool | |
US20140282421A1 (en) | Distributed software validation | |
US20090089039A1 (en) | System and method of emulating functionality of a web service | |
US11467951B2 (en) | System and method for implementing mainframe continuous integration continuous development | |
US20120124559A1 (en) | Performance Evaluation System | |
CN110795078B (zh) | 基于ios系统下的app工程运作系统的架构方法 | |
US20060080638A1 (en) | Automated multi-platform build and test environment for software application development | |
JP2018530070A (ja) | クラウドベースのコンピューティング環境上の基盤を構築、最適化及び実施するシステム及び方法 | |
CN109117170B (zh) | 一种运行环境搭建方法及装置、代码合入方法及系统 | |
CN113703730A (zh) | 持续集成方法、装置、计算机设备及存储介质 | |
US20050223101A1 (en) | Computer-implemented method, system and program product for resolving prerequisites for native applications utilizing an open service gateway initiative ( OSGi) framework | |
CN108984179B (zh) | 一种Linux下编译处理方法及装置 | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
CN111506322A (zh) | 一种自动化集成构建开发部署平台及方法 | |
Santos et al. | Mining the usage patterns of ROS primitives | |
CN113626036A (zh) | 一种基于Jenkins的代码集成管理方法和系统 | |
US20230305813A1 (en) | Continuous integration and development of code in a secure environment | |
CN114564185A (zh) | 一种提升微服架构程序发布效率的方法及系统 | |
CN112579461A (zh) | 断言处理方法、系统和存储介质 | |
Dhakate et al. | Distributed cloud monitoring using Docker as next generation container virtualization technology | |
Ali et al. | Automated parallel GUI testing as a service for mobile applications | |
Padget et al. | Deontic Sensors. | |
Zheng et al. | A lightweight process for change identification and regression test selection in using COTS components | |
CN112231231B (zh) | 云端服务的调试方法、系统及装置 | |
CN113515293A (zh) | 一种管理DevOps工具链的方法和系统 |
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 |