CN113805899A - 一种软件自动部署方法 - Google Patents

一种软件自动部署方法 Download PDF

Info

Publication number
CN113805899A
CN113805899A CN202110978951.6A CN202110978951A CN113805899A CN 113805899 A CN113805899 A CN 113805899A CN 202110978951 A CN202110978951 A CN 202110978951A CN 113805899 A CN113805899 A CN 113805899A
Authority
CN
China
Prior art keywords
proxy
agent
software
automatic
deployment
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.)
Granted
Application number
CN202110978951.6A
Other languages
English (en)
Other versions
CN113805899B (zh
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.)
Chaozhou Zhuoshu Big Data Industry Development Co Ltd
Original Assignee
Chaozhou Zhuoshu Big Data Industry Development 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 Chaozhou Zhuoshu Big Data Industry Development Co Ltd filed Critical Chaozhou Zhuoshu Big Data Industry Development Co Ltd
Priority to CN202110978951.6A priority Critical patent/CN113805899B/zh
Publication of CN113805899A publication Critical patent/CN113805899A/zh
Application granted granted Critical
Publication of CN113805899B publication Critical patent/CN113805899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种软件自动部署方法,属于计算机软件开发技术领域,该方法基于AppImage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;部署的软件通过标准操作系统环境统一打包成AppImage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。本发明能够解决软件在不同linux系统环境部署时,依赖组件版本不统一不兼容的问题,实现一次打包,自动分发部署,多环境运行。

Description

一种软件自动部署方法
技术领域
本发明涉及计算机软件开发技术领域,具体地说是一种软件自动部署方法。
背景技术
目前在一些机器环境较为复杂的场景中,功能性组件与自研软件的部署面临最大的问题就是:操作系统环境不统一而导致的依赖组件不兼容。从而影响系统的部署效率与使用效果。
发明内容
本发明的技术任务是针对以上不足之处,提供一种软件自动部署方法,解决软件在不同linux系统环境部署时,依赖组件版本不统一不兼容的问题,实现一次打包,自动分发部署,多环境运行。
本发明解决其技术问题所采用的技术方案是:
一种软件自动部署方法,该方法基于AppImage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;
部署的软件通过标准操作系统环境统一打包成AppImage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。
本方法基于AppImage包管理技术与golang语言,支持自动部署多个节点,支持多种Linux发行版环境的软件部署,有效解决了因linux系统环境差异导致的软件不兼容的情况,提高部署效率与成功率;通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果。
具体的,该方法中,将软件安装目录打包,并同时将其所在的软件依赖环境一起打包;通过自动调度分发至各待安装节点,统一执行启动;
自动调度服务包括proxy和agent,proxy和agent均为基于gossh开发的远程连接服务,编译后生成二进制可执行文件;
选取一台服务器节点作为控制节点,运行proxy程序,在需要控制的其他服务器节点上运行agent程序;
proxy机器接收到AppImage文件后自动分发并控制agent机器启动AppImage,从而实现一次打包,自动分发部署,多环境运行的效果。
优选的,打包工具采用linuxdeployqt和patchelf。
进一步的,该方法的实现过程如下:
1)、建立AppImage打包环境,
搭建拥有最新版本内核环境的linux系统,集成各类语言开发环境,安装AppImage打包工具;构建成具有统一版本依赖的运行环境,控制住依赖组件版本这个变量,出问题时更容易调试;
2)、自动部署程序,
基于gossh的功能,实现proxy与agent服务,分别控制不同角色的机器节点。
优选的,所述agent,集成gossh代码,封装cmd、push和pull功能,DownloadJson类获取来自proxy的json文件,读取配置文件中的json语句,解析后以[]byte类型返回;
根据参数判断多机并发执行还是单机执行,然后ActionsDo类调用cmd、push和pull组件进行安装包推送、拉取与安装的操作。
进一步的,所述json文件按照gossh规则编写操作步骤。
优选的,proxy拿到配置文件后校验文件格式,并去数据库里对比目标机器是否已执行过此操作,然后将此配置文件推送到agent;执行后agent返回信息,包括执行的结果、受控制的机器以及资源分布信息;proxy将返回值解析后写入数据库。
进一步的,所述proxy实现资源管理与控制系统,用户可手动提交配置文件至工程指定路径下,也可以通过提供的界面编写执行步骤配置文件。
本发明还要求保护一种软件自动部署装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行上述的软件自动部署方法。
本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的软件自动部署方法。
本发明的一种软件自动部署方法与现有技术相比,具有以下有益效果:
本方法有效解决了因linux系统环境差异导致的软件不兼容情况,提高部署效率与成功率;
得益于golang语言goroutine的优势,支撑大并发场景,使大文件可以分片传输,充分占满网络带宽,提高节点之间的文件传输效率;可同时部署大量的服务器节点;
通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果;
相比较docker,使用该方法部署,无需提前安装运行环境,真正的即插即用;卸载简单,只有一个AppImage文件,直接删除即可。
附图说明
图1是本发明实施例提供的软件自动部署方法的流程架构图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明实施例提供一种软件自动部署方法,该方法基于AppImage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;
部署的软件通过标准操作系统环境统一打包成AppImage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。
AppImage是一种Linux下的软件打包方式,对于开发者来说,开发者使用AppImage来封装打包自己的软件,可以使其直接在主流发行版上运行,不再需要为碎片化严重的每个主流Linux发行版而编译一个版本;对于用户来说,只需下载一个AppImage软件包,给予它运行权限,无需安装依赖,无需安装任何运行环境,直接双击便可以运行。并且,AppImage支持大多数主流Linux桌面发行版,Ubuntu,Debian,CentOS,LinuxMint等等。
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自动完成的,操作十分简单。
gossh是一个使用go语言开发的极度简洁的ssh工具,只有一个二进制程序,无任何依赖,真正开箱即用,用于远程管理linux(类unix)机器:包括远程执行命令和推拉文件,支持单机和批量模式。gossh提供3种核心功能:连接到远程主机执行命令;推送本地文件或者文件夹到远程主机;拉取远程主机的文件到本地。gossh支持单机模式和批量并行模式,也就是可以一次向一台机器发送命令执行,也可以一次向成千上万台台机器批量发送命令,批量并行模式也是gossh最大的一个特点,充分利用go在并发执行方面的优势。
自动部署程序基于gossh的功能,实现了proxy与agent两类服务,分别操控不同角色的机器节点,通过特定端口通信、传输文件,并在配置文件中设定自动执行的步骤。
使用打包工具linuxdeployqt和patchelf将软件安装目录打包,同时也会将其所在的软件依赖环境一起打包;通过自动调度分发至各待安装节点,统一执行启动;
自动调度服务包括proxy和agent,proxy和agent两个程序均是基于gossh开发的远程连接服务,编译后生成二进制可执行文件;
选取一台服务器节点作为控制节点,运行proxy程序,在需要控制的其他服务器节点上运行agent程序;
proxy机器接收到AppImage文件后自动分发并控制agent机器启动AppImage,从而实现一次打包,自动分发部署,多环境运行的效果。
该方法的实现过程如下:
1)、建立AppImage打包环境,
搭建一套拥有最新版本内核环境的linux系统,集成各类语言开发环境,安装AppImage打包工具;构建成一套拥有统一版本依赖的运行环境,控制住依赖组件版本这个变量,出问题时更容易调试;
2)、自动部署程序,
自动部署程序基于gossh的功能,实现proxy与agent服务,分别控制不同角色的机器节点。
具体实现步骤如下:
Agent:集成gossh代码,封装cmd、push和pull功能,DownloadJson类获取来自proxy的json文件,json文件按照gossh规则编写操作步,读取配置文件中的json语句,解析后以[]byte类型返回;
根据参数判断多机并发执行还是单机执行,然后ActionsDo类调用cmd、push和pull组件进行安装包推送、拉取与安装的操作。
Proxy:实现了一个资源管理与控制系统,用户可手动提交配置文件至工程指定路径下,也可以通过提供的界面编写执行步骤配置文件;当proxy拿到配置文件后校验文件格式,并去数据库里对比目标机器是否已执行过此操作,然后将此配置文件推送到agent;执行后agent返回执行的结果、受控制的机器以及资源分布等信息;proxy将返回值解析后写入数据库。
本方法基于AppImage包管理技术与golang语言,支持自动部署多个节点,支持多种Linux发行版环境的软件部署,有效解决了因linux系统环境差异导致的软件不兼容的情况,提高部署效率与成功率;通过合理的步骤配置,实现一次打包、自动分发部署、多环境运行的效果。
本发明实施例还提供了一种软件自动部署装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行本发明上述实施例中所述的软件自动部署方法。
本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的软件自动部署方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

Claims (10)

1.一种软件自动部署方法,其特征在于基于AppImage打包技术和golang语言,实现自动部署,将部署角色分为proxy和agent,proxy通过特定端口控制agent操作机器;
部署的软件通过标准操作系统环境统一打包成AppImage文件,并传输给proxy,proxy操作agent进行部署,实现一次打包,自动分发,多环境运行。
2.根据权利要求1所述的一种软件自动部署方法,其特征在于将软件安装目录打包,并同时将其所在的软件依赖环境一起打包;通过自动调度分发至各待安装节点,统一执行启动;
自动调度服务包括proxy和agent,proxy和agent均为基于gossh开发的远程连接服务,编译后生成二进制可执行文件;
选取一台服务器节点作为控制节点,运行proxy程序,在需要控制的其他服务器节点上运行agent程序;
proxy机器接收到AppImage文件后自动分发并控制agent机器启动AppImage。
3.根据权利要求2所述的一种软件自动部署方法,其特征在于打包工具采用linuxdeployqt和patchelf。
4.根据权利要求1或2或3所述的一种软件自动部署方法,其特征在于该方法的实现过程如下:
1)、建立AppImage打包环境,
搭建拥有最新版本内核环境的linux系统,集成各类语言开发环境,安装AppImage打包工具;构建成具有统一版本依赖的运行环境;
2)、自动部署程序,
基于gossh的功能,实现proxy与agent服务,分别控制不同角色的机器节点。
5.根据权利要求4所述的一种软件自动部署方法,其特征在于所述agent,集成gossh代码,封装cmd、push和pull功能,DownloadJson类获取来自proxy的json文件,读取配置文件中的json语句,解析后以[]byte类型返回;
根据参数判断多机并发执行还是单机执行,然后ActionsDo类调用cmd、push和pull组件进行安装包推送、拉取与安装的操作。
6.根据权利要求5所述的一种软件自动部署方法,其特征在于所述json文件按照gossh规则编写操作步骤。
7.根据权利要求4所述的一种软件自动部署方法,其特征在于proxy拿到配置文件后校验文件格式,并去数据库里对比目标机器是否已执行过此操作,然后将此配置文件推送到agent;执行后agent返回信息,包括执行的结果、受控制的机器以及资源分布信息;proxy将返回值解析后写入数据库。
8.根据权利要求7所述的一种软件自动部署方法,其特征在于所述proxy实现资源管理与控制系统,用户可手动提交配置文件至工程指定路径下,也可以通过提供的界面编写执行步骤配置文件。
9.一种软件自动部署装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至8任一所述的方法。
10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至8任一所述的方法。
CN202110978951.6A 2021-08-25 2021-08-25 一种软件自动部署方法 Active CN113805899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110978951.6A CN113805899B (zh) 2021-08-25 2021-08-25 一种软件自动部署方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110978951.6A CN113805899B (zh) 2021-08-25 2021-08-25 一种软件自动部署方法

Publications (2)

Publication Number Publication Date
CN113805899A true CN113805899A (zh) 2021-12-17
CN113805899B CN113805899B (zh) 2024-01-26

Family

ID=78941841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110978951.6A Active CN113805899B (zh) 2021-08-25 2021-08-25 一种软件自动部署方法

Country Status (1)

Country Link
CN (1) CN113805899B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124245A1 (en) * 2000-08-14 2002-09-05 Alvin Maddux Method and apparatus for advanced software deployment
CN105511872A (zh) * 2015-11-30 2016-04-20 国云科技股份有限公司 一种基于云计算平台的应用自动化部署方法
CN107896162A (zh) * 2017-11-08 2018-04-10 平安科技(深圳)有限公司 监控系统的部署方法、 装置、 计算机设备及存储介质
CN108023959A (zh) * 2017-12-08 2018-05-11 郑州云海信息技术有限公司 一种自动安装集群系统的方法及系统
CN108322490A (zh) * 2017-01-17 2018-07-24 阿里巴巴集团控股有限公司 虚拟机配置及部署分布式云服务系统的方法、装置和服务器
CN109754849A (zh) * 2018-12-24 2019-05-14 武汉大学 一种云计算环境中的个人健康流数据处理系统及方法
GB2568919A (en) * 2017-11-30 2019-06-05 Avecto Ltd Managing removal and modification of installed programs on a computer device
CN109981351A (zh) * 2019-03-06 2019-07-05 浪潮通用软件有限公司 一种私有云部署方法
US20200065300A1 (en) * 2018-08-24 2020-02-27 Oracle International Corporation Dag based methods and systems of transaction processing in a distributed ledger
CN111381835A (zh) * 2018-12-28 2020-07-07 中国移动通信集团江西有限公司 技术服务组件的注册与发现的方法、装置、设备及介质
CN113076115A (zh) * 2021-04-21 2021-07-06 扬州万方电子技术有限责任公司 基于国产平台的基础软件封装方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124245A1 (en) * 2000-08-14 2002-09-05 Alvin Maddux Method and apparatus for advanced software deployment
CN105511872A (zh) * 2015-11-30 2016-04-20 国云科技股份有限公司 一种基于云计算平台的应用自动化部署方法
CN108322490A (zh) * 2017-01-17 2018-07-24 阿里巴巴集团控股有限公司 虚拟机配置及部署分布式云服务系统的方法、装置和服务器
CN107896162A (zh) * 2017-11-08 2018-04-10 平安科技(深圳)有限公司 监控系统的部署方法、 装置、 计算机设备及存储介质
GB2568919A (en) * 2017-11-30 2019-06-05 Avecto Ltd Managing removal and modification of installed programs on a computer device
CN108023959A (zh) * 2017-12-08 2018-05-11 郑州云海信息技术有限公司 一种自动安装集群系统的方法及系统
US20200065300A1 (en) * 2018-08-24 2020-02-27 Oracle International Corporation Dag based methods and systems of transaction processing in a distributed ledger
CN109754849A (zh) * 2018-12-24 2019-05-14 武汉大学 一种云计算环境中的个人健康流数据处理系统及方法
CN111381835A (zh) * 2018-12-28 2020-07-07 中国移动通信集团江西有限公司 技术服务组件的注册与发现的方法、装置、设备及介质
CN109981351A (zh) * 2019-03-06 2019-07-05 浪潮通用软件有限公司 一种私有云部署方法
CN113076115A (zh) * 2021-04-21 2021-07-06 扬州万方电子技术有限责任公司 基于国产平台的基础软件封装方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JSMILES: "gossh 使用 go 语言开发的极度简洁的 ssh 工具", Retrieved from the Internet <URL:文江博客 https://www.wenjiangs.com/article/gossh.html> *
新兵蛋Z: "Zabbix——部署(agent和proxy安装)", Retrieved from the Internet <URL:博客园 https://www.cnblogs.com/xinbing/p/10570135.html> *
赵建平;鲍俊雷;程小林;吴学军;朱莉;赵建辉;: "一种自动化远程统一部署软件平台", 兵工自动化, no. 02, pages 67 - 79 *

Also Published As

Publication number Publication date
CN113805899B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
US10114637B1 (en) Automatically updating a shared project build platform
US10338907B2 (en) Cloud service framework for toolkit deployment
US8621419B2 (en) Automating the life cycle of a distributed computing application
US10579966B1 (en) Adapting a shared project build platform to a developer plugin
CN107506221B (zh) 应用程序升级方法、装置及设备
US10866803B2 (en) Generating interaction libraries
CN110968477B (zh) 一种获取备用bmc版本信息的方法、设备及介质
CN117170803A (zh) 生成信创操作系统流水线的方法、电子设备及存储介质
CN112363731A (zh) 一种应用自动化部署方法、装置和计算机可读存储介质
CN117707543A (zh) 一种应用安装包制作和安装方法、计算设备及存储介质
CN108304184B (zh) 编译方法及装置
CN113805899B (zh) 一种软件自动部署方法
CN109947407B (zh) 一种数据获取方法及装置
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
US11372627B2 (en) System and method for providing integrated development environment (IDE) for programmable software system
CN110058876B (zh) 扩展wireshark软件兼容性的方法、装置、服务器及存储介质
CN114816475A (zh) 一种嵌入式操作系统的更新方法、装置、设备和介质
CN113157329A (zh) 启动应用的方法、系统、服务器和存储介质
US12015528B2 (en) Multi-functional integrated network modal management system and management method for user-defined network modal
CN116991427B (zh) 一种应用编译方法、装置、计算设备及存储介质
CN115826958A (zh) 运行环境动态管理的在线算法开发方法、系统及设备
CN118170420A (zh) 一种代码管理方法、系统及计算设备
CN118012759A (zh) 一种可视化远程调试方法、环境搭建方法、装置及设备
CN117270856A (zh) 工程转换方法、装置、电子设备和计算机可读存储介质
Collins et al. Crossfire: multiprocess, cross-browser, open-web debugging protocol

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
GR01 Patent grant
GR01 Patent grant