一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件自动部署方法与流程

2021-12-17 20:55:00 来源:中国专利 TAG:


1.本发明涉及计算机软件开发技术领域,具体地说是一种软件自动部署方法。


背景技术:

2.目前在一些机器环境较为复杂的场景中,功能性组件与自研软件的部署面临最大的问题就是:操作系统环境不统一而导致的依赖组件不兼容。从而影响系统的部署效率与使用效果。


技术实现要素:

3.本发明的技术任务是针对以上不足之处,提供一种软件自动部署方法,解决软件在不同linux系统环境部署时,依赖组件版本不统一不兼容的问题,实现一次打包,自动分发部署,多环境运行。
4.本发明解决其技术问题所采用的技术方案是:
5.一种软件自动部署方法,该方法基于appimage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;
6.部署的软件通过标准操作系统环境统一打包成appimage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。
7.本方法基于appimage包管理技术与golang语言,支持自动部署多个节点,支持多种linux发行版环境的软件部署,有效解决了因linux系统环境差异导致的软件不兼容的情况,提高部署效率与成功率;通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果。
8.具体的,该方法中,将软件安装目录打包,并同时将其所在的软件依赖环境一起打包;通过自动调度分发至各待安装节点,统一执行启动;
9.自动调度服务包括proxy和agent,proxy和agent均为基于gossh开发的远程连接服务,编译后生成二进制可执行文件;
10.选取一台服务器节点作为控制节点,运行proxy程序,在需要控制的其他服务器节点上运行agent程序;
11.proxy机器接收到appimage文件后自动分发并控制agent机器启动appimage,从而实现一次打包,自动分发部署,多环境运行的效果。
12.优选的,打包工具采用linuxdeployqt和patchelf。
13.进一步的,该方法的实现过程如下:
14.1)、建立appimage打包环境,
15.搭建拥有最新版本内核环境的linux系统,集成各类语言开发环境,安装appimage打包工具;构建成具有统一版本依赖的运行环境,控制住依赖组件版本这个变量,出问题时更容易调试;
16.2)、自动部署程序,
17.基于gossh的功能,实现proxy与agent服务,分别控制不同角色的机器节点。
18.优选的,所述agent,集成gossh代码,封装cmd、push和pull功能,downloadjson类获取来自proxy的json文件,读取配置文件中的json语句,解析后以[]byte类型返回;
[0019]
根据参数判断多机并发执行还是单机执行,然后actionsdo类调用cmd、push和pull组件进行安装包推送、拉取与安装的操作。
[0020]
进一步的,所述json文件按照gossh规则编写操作步骤。
[0021]
优选的,proxy拿到配置文件后校验文件格式,并去数据库里对比目标机器是否已执行过此操作,然后将此配置文件推送到agent;执行后agent返回信息,包括执行的结果、受控制的机器以及资源分布信息;proxy将返回值解析后写入数据库。
[0022]
进一步的,所述proxy实现资源管理与控制系统,用户可手动提交配置文件至工程指定路径下,也可以通过提供的界面编写执行步骤配置文件。
[0023]
本发明还要求保护一种软件自动部署装置,包括:至少一个存储器和至少一个处理器;
[0024]
所述至少一个存储器,用于存储机器可读程序;
[0025]
所述至少一个处理器,用于调用所述机器可读程序,执行上述的软件自动部署方法。
[0026]
本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的软件自动部署方法。
[0027]
本发明的一种软件自动部署方法与现有技术相比,具有以下有益效果:
[0028]
本方法有效解决了因linux系统环境差异导致的软件不兼容情况,提高部署效率与成功率;
[0029]
得益于golang语言goroutine的优势,支撑大并发场景,使大文件可以分片传输,充分占满网络带宽,提高节点之间的文件传输效率;可同时部署大量的服务器节点;
[0030]
通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果;
[0031]
相比较docker,使用该方法部署,无需提前安装运行环境,真正的即插即用;卸载简单,只有一个appimage文件,直接删除即可。
附图说明
[0032]
图1是本发明实施例提供的软件自动部署方法的流程架构图。
具体实施方式
[0033]
下面结合具体实施例对本发明作进一步说明。
[0034]
本发明实施例提供一种软件自动部署方法,该方法基于appimage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;
[0035]
部署的软件通过标准操作系统环境统一打包成appimage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。
[0036]
appimage是一种linux下的软件打包方式,对于开发者来说,开发者使用appimage来封装打包自己的软件,可以使其直接在主流发行版上运行,不再需要为碎片化严重的每
个主流linux发行版而编译一个版本;对于用户来说,只需下载一个appimage软件包,给予它运行权限,无需安装依赖,无需安装任何运行环境,直接双击便可以运行。并且,appimage支持大多数主流linux桌面发行版,ubuntu,debian,centos,linuxmint等等。
[0037]
appimage的宗旨亦在“一次打包,到处运行”,它就像mac程序和windows程序一样简单,更确切的描述是它更像android的apk应用程序,总之用一个词来概括,就是简单,就算是刚刚安好linux桌面的菜鸟,也能方便的使用appimage应用程序。appimage的打包过程也十分简单,可以直接将二进制程序转换为appimage应用程序,例如包含在tar.gz,deb,rpm包中的二进制文件,也可以将travis ci(在线托管的持续集成服务)版本应用、jenkins(持续集成工具)构建的应用等打包为appimage,也支持基于qt(跨平台的c 应用和ui开发库)的应用程序(这可能是最简单的)和基于electron的应用程序(使用javascript,html和css构建跨平台的桌面应用程序)打包为appimage,甚至还可以将整个软件目录一起打包为appimage。在大多数情况下,打包都是由appimage自动完成的,操作十分简单。
[0038]
gossh是一个使用go语言开发的极度简洁的ssh工具,只有一个二进制程序,无任何依赖,真正开箱即用,用于远程管理linux(类unix)机器:包括远程执行命令和推拉文件,支持单机和批量模式。gossh提供3种核心功能:连接到远程主机执行命令;推送本地文件或者文件夹到远程主机;拉取远程主机的文件到本地。gossh支持单机模式和批量并行模式,也就是可以一次向一台机器发送命令执行,也可以一次向成千上万台台机器批量发送命令,批量并行模式也是gossh最大的一个特点,充分利用go在并发执行方面的优势。
[0039]
自动部署程序基于gossh的功能,实现了proxy与agent两类服务,分别操控不同角色的机器节点,通过特定端口通信、传输文件,并在配置文件中设定自动执行的步骤。
[0040]
使用打包工具linuxdeployqt和patchelf将软件安装目录打包,同时也会将其所在的软件依赖环境一起打包;通过自动调度分发至各待安装节点,统一执行启动;
[0041]
自动调度服务包括proxy和agent,proxy和agent两个程序均是基于gossh开发的远程连接服务,编译后生成二进制可执行文件;
[0042]
选取一台服务器节点作为控制节点,运行proxy程序,在需要控制的其他服务器节点上运行agent程序;
[0043]
proxy机器接收到appimage文件后自动分发并控制agent机器启动appimage,从而实现一次打包,自动分发部署,多环境运行的效果。
[0044]
该方法的实现过程如下:
[0045]
1)、建立appimage打包环境,
[0046]
搭建一套拥有最新版本内核环境的linux系统,集成各类语言开发环境,安装appimage打包工具;构建成一套拥有统一版本依赖的运行环境,控制住依赖组件版本这个变量,出问题时更容易调试;
[0047]
2)、自动部署程序,
[0048]
自动部署程序基于gossh的功能,实现proxy与agent服务,分别控制不同角色的机器节点。
[0049]
具体实现步骤如下:
[0050]
agent:集成gossh代码,封装cmd、push和pull功能,downloadjson类获取来自proxy的json文件,json文件按照gossh规则编写操作步,读取配置文件中的json语句,解析
后以[]byte类型返回;
[0051]
根据参数判断多机并发执行还是单机执行,然后actionsdo类调用cmd、push和pull组件进行安装包推送、拉取与安装的操作。
[0052]
proxy:实现了一个资源管理与控制系统,用户可手动提交配置文件至工程指定路径下,也可以通过提供的界面编写执行步骤配置文件;当proxy拿到配置文件后校验文件格式,并去数据库里对比目标机器是否已执行过此操作,然后将此配置文件推送到agent;执行后agent返回执行的结果、受控制的机器以及资源分布等信息;proxy将返回值解析后写入数据库。
[0053]
本方法基于appimage包管理技术与golang语言,支持自动部署多个节点,支持多种linux发行版环境的软件部署,有效解决了因linux系统环境差异导致的软件不兼容的情况,提高部署效率与成功率;通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果。
[0054]
本发明实施例还提供了一种软件自动部署装置,包括:至少一个存储器和至少一个处理器;
[0055]
所述至少一个存储器,用于存储机器可读程序;
[0056]
所述至少一个处理器,用于调用所述机器可读程序,执行本发明上述实施例中所述的软件自动部署方法。
[0057]
本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的软件自动部署方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
[0058]
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
[0059]
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd

rom、cd

r、cd

rw、dvd

rom、dvd

ram、dvd

rw、dvd rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
[0060]
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0061]
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
[0062]
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献