CN110727440A - 一种软件封装方法 - Google Patents

一种软件封装方法 Download PDF

Info

Publication number
CN110727440A
CN110727440A CN201910949745.5A CN201910949745A CN110727440A CN 110727440 A CN110727440 A CN 110727440A CN 201910949745 A CN201910949745 A CN 201910949745A CN 110727440 A CN110727440 A CN 110727440A
Authority
CN
China
Prior art keywords
software
configuration
container
information
installation
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
CN201910949745.5A
Other languages
English (en)
Other versions
CN110727440B (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.)
CETC 28 Research Institute
Original Assignee
CETC 28 Research Institute
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 CETC 28 Research Institute filed Critical CETC 28 Research Institute
Priority to CN201910949745.5A priority Critical patent/CN110727440B/zh
Publication of CN110727440A publication Critical patent/CN110727440A/zh
Application granted granted Critical
Publication of CN110727440B publication Critical patent/CN110727440B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/62Uninstallation

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

本发明公开了一种软件封装方法,包括:步骤1、软件类型选择;步骤2、软件段基本信息描述;步骤3、软件桌面快捷方式、程序栏快捷方式以及开机自启设置;步骤4、软件依赖关系描述;步骤5、软件对容器的支撑设置;步骤6、软件参数信息配置;步骤7、软件安装、卸载、启动、停止等脚本设置;步骤8、软件环境变量设置;步骤9、软件运行环境设置;步骤10、软件封装及一键安装包生成。本方法通过一种通用的软件封装描述,对软件的基本信息、参数信息、依赖信息、快捷方式、环境变量、自定义运行脚本、运行环境等各层面的规范性的描述,实现了软件统一描述和封装,能够支持软件独立安装部署和***集成部署的两种场景下对软件的统一管理和维护。

Description

一种软件封装方法
技术领域
本发明涉及***集成领域,尤其涉及一种软件封装方法。
背景技术
在***集成时,由于涉及到的软件众多,安装、卸载、维护等操作和过程较为复杂,开发人员水平良莠不齐,若没有一个标准的规范从软件的基本信息、技术体质、软件形态、运行环境设置等方面来约束软件的描述,软件较难纳入统一的管理,并且,例如对环境变量的设置,各开发人员实现方式不一,无法对***环境进行统一的管理和控制,从***集成运维的角度来说是一个巨大的灾难,***运维人员的工作量会因软件数量的上升而成指数倍增长。
发明内容
本发明目的在于解决***集成领域下,为了实现对软件的统一管理和维护,对软件可集成性和规范性约束而产生的特殊需求。该方法能够支持软件的跨平台封装,通过对软件的基本信息、参数信息、依赖信息、快捷方式、环境变量、自定义运行脚本、运行环境等各层面的规范性的描述,实现了软件统一封装,支持对软件的统一管理和维护,同时,针对DevOps理念,支持对软件容器化的描述,以及对配置中心的扩展,具有一定的通用性。
本发明的技术方案为一种通用的软件封装方法,包括如下步骤:
步骤1,创建软件封装工程,描述软件基本信息,上传软件图标和软件安装许可,进行步骤2;
步骤2,选择应用类型,软件支持的应用类型包含:软件基本包、Web应用包、数据库包、插件包和移动App等多种类型。根据不同的应用类型,展现不同的软件描述选项,例如对于数据库包,需要设置数据库包安装时的***用户名密码、数据库端口、数据库SID、表空间、需要创建的用户信息等;同时软件安装时根据不同的软件包类型,实现不同的安装过程,例如对于Web应用包,在安装部署时会根据当前环境的实际情况自行安装部署到环境中已有的Web应用容器中,比如Tomcat、金蝶等。进行步骤3;
步骤3,导入软件实体,实体类型支持文件夹或文件类型;进行步骤4;
步骤4,选择软件实体中的一个文件,创建快捷方式,设置快捷方式的名称和自定义图标,快捷方式包含开机自启快捷方式、桌面快捷方式以及程序栏快捷方式,进行步骤5;
步骤5,根据软件依赖的需求,配置软件依赖信息,依赖信息包含,依赖的软件段的前缀、名称、版本范围,依赖类型和依赖场景等信息,依赖信息的描述用于指定软件之间的依赖关系,例如A软件的运行需要在本地安装B软件,对于该使用场景,即可在软件A封装时添加依赖描述,依赖于B软件,指定依赖的版本范围,设置依赖类型为本地依赖,依赖场景为安装依赖,利用依赖信息的描述,可在软件集成时做软件层面的环境检测,提升软件部署的效率。进行步骤6;
步骤6,根据应用类型,判断是否是数据库包,如果是,进行步骤7;否则,跳转步骤8;
步骤7,设置需要将数据库包装置的目的数据库的数据库端口号、数据库SID、***用户名和***用户名密码,这些参数在实际的安装部署中可根据实际环境修改相应的值,配置表空间和临时表空间,设置用户信息,用户信息包含要导入的用户名、用户名密码、数据库权限以及和表空间、临时表空间之间的关系;跳转步骤13;
步骤8,配置软件参数信息,通过对结构化的文件的结构展现、非结构化的用户自定义以及手动添加的方式对软件在安装部署的过程中需要修改的参数信息予以配置,设定参数所属的配置类型并配置所属的来源,进行步骤9;
步骤9,设置软件是否支持容器化部署,如果是,进行步骤10,否则,跳转步骤11;
步骤10,设置容器支撑的能力,包含对容器的扩容、自动扩容、以及特权模式的支撑能力的设置,支持构建容器镜像所必需的如容器基础镜像地址、软件包在基础镜像中的存放路径、启动命令、编译命令、安装依赖命令以及编译过程环境变量等信息的设置能力,同时对容器运行时的CPU、内存大小、副本数、源端口:目的端口的映射情况、主机卷:容器卷的映射情况以及CPU最大占百分比等运行态的信息予以描述,容器的支撑设置提供了一种标准化的容器安装态和运行态的描述,对于软件开发人员来说无需编写繁琐的DockFile文件,仅需通过图形化界面配置的方式即可实现对软件容器化的描述,提升便捷性的同时也降低了人为编写DockFile的错误率。进行步骤11;
步骤11,设置环境变量,环境变量包含用户自定义的环境变量以及***环境变量,例如PATH、LD_LIBRARY_PATH等,进行步骤12;
步骤12,设置自定义的安装、卸载、启动、停止脚本,自定义脚本用于各软件的特定操作,支持用户的个性化的行为和操作,例如可以在自定义脚本中拷贝一些自定义库到***库目录中等,进行步骤13;
步骤13,选择构建的目标硬件架构和操作***(例如windows、CentOS7.2、x86银河麒麟、飞腾银河麒麟、龙芯中标麒麟、兆芯湖南麒麟等各种软硬件环境),开始封装软件,生成封装后的描述文件,根据目标硬件架构和操作***,将相应环境下的一键安装包、软件实体和描述文件压缩成一个可执行程序,软件安装时,通过自解压技术,执行一键安装包的可执行程序,根据封装后的描述文件,对软件包进行安装。
步骤1中,所述软件基本信息包括软件前缀、软件名称、软件版本号、软件描述、开发者信息和软件运行环境,所述软件前缀即软件标识,所述软件运行环境包括CPU、内存、磁盘和操作***位数需求,根据软件所需运行的环境的描述,在软件安装前能够对目的机器的运行环境进行检测,能够对于不满足运行环境的机器进行提示。
步骤2中,所述应用类型包括:软件基本包、Web应用包、数据库包、插件包和移动App,所述软件基本包指的是能够完成特定功能的文件或文件集合,例如某个文件夹下的所有的文件构成了某个特定功能所需的所有文件的集合,即可将该文件夹作为基本包导入;Web应用包指的是使用Java开发的war包;数据库包指的是通过数据库导出的数据库DMP文件;插件包不能独立运行,必须依托于特定平台运行,例如火狐浏览器插件;移动App指手持终端应用。
步骤4中,所述快捷方式包含三种类型,即桌面快捷方式、开机自启和程序栏快捷方式。
步骤5中,所述设置软件依赖信息,包括设置依赖软件的软件前缀、软件名称和依赖软件的版本范围,设置依赖类型和依赖场景,并说明依赖的必要性;所述依赖类型包括本地依赖和网络依赖,所述依赖场景包括安装依赖和运行依赖。
步骤8中,所述配置类型包括一般配置、通用配置和依赖配置;一般配置指的是各软件自己内部自定义的参数,无通用性,例如,某软件配置文件中的某配置项表示的是安装软件完整功能还是典型功能选项,在软件安装时根据用户的需求按需的选择,该参数无通用性,仅是该软件的特定行为。通用配置包含包含两个部分,一个部分是例如IP地址、软件安装路径、数据库***用户名、数据库***用户名密码、数据库SID等,在向目的机器部署时能够通过后台计算直接获取到的信息,另一部分例如Web访问端口、Web关闭端口、TCP端口、UDP端口等,在软件封装时将其暴露出来,在软件集成时可做例如端口冲突检测等能力。依赖配置指的是该配置项是依赖于依赖软件的某些特定的参数,结合上述依赖配置,例如A软件网络依赖于B软件,A软件的某个参数表示的是B软件所在的IP地址,因此该参数可描述成依赖配置,依赖项为B软件,依赖于B软件的IP地址。
所述所属的来源包括本地配置和配置中心,本地配置和配置中心的区别在于,设置成本地配置的参数仅用于安装态的修改,当软件安装完成后其配置信息即为静态的数据,不再受配置中心的管理,而所属来源设置成配置中心的参数,在软件安装完成后,该配置项信息在安装完成后依然接受配置中心的统一管理,支持通过配置中心对该参数进行动态的变更,支持配置的热生效。
步骤10包括:配置是否支持容器的扩容、自动扩容、以及特权模式,容器的扩容是指该软件部署在容器中后,是否能够利用容器的弹性伸缩的能力,手动的支持对容器实例的动态扩容,在支持扩容的基础上,自动扩容描述的是软件是否能够支持容器自动做负载均衡,充分利用容器的特点,支持软件峰值自动扩容,闲时自动缩容的能力,特权模式是指是否支持采用特权模式运行容器的所有功能。设置容器基础镜像地址(比如http://IP:PORT/tomcat-7z:latest)、软件包在基础镜像中的存放路径(比如/usr/local/tomcat/webapps/)、启动命令(比如catalina.sh run)、编译命令(比如cd/usr/local/tomcat/webapps/ROOT&&rm-rf*&&cp-R/usr/local/tomcat/webapps/yanshi/*/usr/local/tomcat/webapps/ROOT/)、安装依赖命令(比如cp-rf/usr/share/zoneinfo/Asia/Shanghai/ect/localtime)以及编译过程环境变量信息(比如ENV NGINX_VERSION1.14.0),依据上述信息,自动生成DockFile,同时对容器运行时的CPU(比如0.5个)、内存(比如300M)、副本数(比如2个)、源端口:目的端口的映射(比如8080:40094)、主机卷:容器卷的映射(例/opt/tomcat:/opt/docker/tomcat)、CPU最大占百分比(比如5%)、副本数范围(比如1-3)自动添加到步骤8中的参数配置中,类型为一般配置,支持对容器运行前的参数配置。
步骤11包括:支持各操作***下的自定义环境变量,根据用户的需求,支持用户自定义的环境变量生成,在windows操作***下,修改注册表,添加用户自定义环境变量的项和值,在linux操作***下,将用户自定义变量写入/etc/profile下;支持PATH、LD_LIBRARY_PATH环境变量的追加,对于PATH环境变量,在windows操作***下,写入***的注册表中,追加PATH项的环境变量值为用户自定义添加的值,在linux操作***下,为了满足所有操作***用户均可读取到该环境变量,将追加的环境变量写入/etc/profile文件中,对于LD_LIBRARY_PATH环境变量,采用在/etc/ld.so.con.d文件夹下,新建.conf文件,采用ldconfig命令使库文件立即生效;支持自定义环境变量的引用,例如用户新增自定义环境变量SOFT_PATH指向软件的安装路径,同时需要在PATH中将该软件的可执行文件加入,即可在windows下描述PATH=%SOFT_PATH%/bin,linux下描述export PATH=$SOFT_PATH/bin:$PATH的方式对PATH环境变量进行追加。当环境变量同实际的安装路径有关时,能够通过占位符代表安装路径,实际安装过程中将占位符替换成实际的安装路径。
步骤12中,支持两个以上脚本的按需执行。
本发明中所述的软件封装是指将用户导入的软件实体,通过一系列的描述,按照统一的规范和标准予以封装,将各种类型的软件封装成可执行软件包安装文件,该文件既可用于软件的独立部署,同时也支持***集成场景下,对软件的统一管理维护。通过软件封装提升软件的规范性和可集成性,降低IT运维成本。
所述支持跨平台的软件封装:对软件进行信息描述与软件运行的硬件架构和操作***无关,软件描述仅为静态的信息项,信息项包含基本信息(应用前缀、应用名称、应用版本号、应用类型、软件图标、应用描述、单位名称、安装许可说明、对CPU、内存等硬件资源需求)、依赖关系描述、参数信息描述、快捷方式描述、安装/卸载/启动/停止自定义脚本描述、环境变量描述等,对于应用的数据库来说还包含了数据库端口、数据库SID、***用户名、***用户名密码、表空间、临时表空间、用户信息等相关元素。描述完成后,在软件封装的最后阶段,根据软件运行时所需的硬件架构和操作***环境可以生成对应环境下的一键安装包,一键安装包独立编译运行,将软件实体、规范性描述文件以及一键安装包的可执行环境压缩为同一个文件,当软件独立以安装包的形式部署时,通过自解压技术,将软件实体、规范性描述文件以及一键安装包解压到临时文件夹,执行一键安装包的可执行程序,可执行程序通过读取规范性的描述文件,对软件按照设定好的参数、脚本、环境变量、快捷方式等进行安装和卸载。
所述支持对软件容器化的封装:软件容器化的封装指的是当软件支持在容器中运行时,对容器环境的描述包含:(1)构建所需要的基础镜像地址,该地址可提供一系列基础镜像列表供选择;(2)软件包存放路径,即应用在基础镜像中存放的路径;(3)启动命令(软件在容器启动后执行的命令),编译命令(软件安装的命令),安装依赖命令(安装软件的一些依赖包);(4)编译过程环境变量,即安装软件过程中所需要的环境变量。通过上述信息描述,即可生成相应的DockFile,支撑软件在容器中的运行。同时,还支持对扩容、自动扩容、特权模式的设置描述,支持在容器部署时的按需扩、缩容。对容器运行时所需的参数(CPU、内存、副本数、源端口:目的端口的映射、主机卷:容器卷的映射、CPU最大占百分比、副本数范围)进行配置,支持容器实例启动之前参数的动态修改。容器包在经过软件封装后,连接容器云平台,获取基础镜像,根据基础镜像以及上述的配置描述生成镜像,该镜像可以在容器云平台上运行。
所述支持软件各类型的配置文件的参数信息描述:封装时支持软件包在安装部署的过程中将需要修改的配置文件参数抽取出来,在独立安装部署软件包时可根据用户输入或者在***集成时根据自动计算结果来修改配置文件的值。参数配置支持三种配置方式,第一种是对xml,ini,properties,cfg等常见的结构化数据导入;第二种,对于参数保存在非结构化格式的文本文件中需要配置的,将需要修改的值通过占位符来替代,该占位符称为用户自定义变量;第三种,手动输入参数配置,该配置是和软件实体以及软件的配置文件是无关的,例如上述支持对软件容器化封装中的CPU、内存、副本数等信息采用一般配置。参数的配置也分为三类,分别是一般配置、通用配置和依赖配置。一般配置是普通的配置,表明该参数并不是和***计算出来的结果有关联的,该参数安装部署时最终的实际的值是通过用户输入来确定的;通用配置是一些固定配置,例如软件安装路径、IP地址、Web应用端口等,其使用场景为***集成,***集成时可根据实际情况自动计算通用配置相关值,不需要人工修改,降低软件集成部署中的配置错误率。依赖配置是该软件依赖于其他软件的配置,包括依赖软件的IP地址,安装路径,数据库端口,数据库SID,Web应用端口,Web应用名称等,其使用场景也是用于***集成时,支持对软件依赖关系的自动处理和配置。依赖信息的描述参见下述第4条。参数的配置来源分为两类,分别是本地配置和配置中心,来源为本地配置的参数,多用于软件独立部署的场景,软件安装部署完成之后,如果产生新的需求需要变更参数的值,需手动在本地机器上修改配置文件中对应参数的值。同时,在DevOps的理念下,为了支持微服务+容器+统一配置的模式,封装时支持对参数来源为配置中心的描述。
所述支持软件的依赖信息描述:软件依赖指一个软件的功能实现依赖于另一个软件的功能,其使用场景为软件无法独立运行,需要其他软件的支撑。依赖的信息描述包含软件的依赖类型和软件的依赖场景。从依赖类型上可以分为本地依赖或网络依赖。本地依赖指软件A和软件B需要安装在同一操作***实例中,软件A在本机访问软件B。网络依赖指软件A和软件B可以安装在局域网中的不同操作***实例中,软件A通过网络访问软件B。从依赖场景上可以分为安装依赖或运行依赖。安装依赖指软件A的安装需要软件B支持,即安装软件A前必须安装软件B,但是对两个软件的启动顺序没有要求。运行依赖指软件A的运行依赖软件B,启动软件A前应该先启动软件B。依赖信息可用于软件独立安装时的环境检测以及***集成时的软件编配管理。
有益效果:本发明提供了一种通用的软件封装的方法,所述方法通过对软件的基本信息、参数信息、依赖信息、快捷方式、环境变量、自定义运行脚本、运行环境等各层面的规范性的描述,实现了软件统一封装,支持对软件的统一管理和维护,支持基于封装描述文件的软件独立部署以及软件与软件管理应用(例如软件商店)的集成适配两种使用模式和场景。本发明支持跨平台的软件封装、支持对软件容器化的封装、支持软件各类型的配置文件的参数信息描述、支持软件的依赖信息描述。
本发明方法同时支持对软件容器化的封装描述,支持软件配置信息向配置中心的迁移扩展,具有一定的通用性。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1本发明所述通用的软件封装方法流程图;
图2是本发明方法架构图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
实施例
如图1和图2所示,本发明提供了一种软件封装方法。
软件封装具体实施步骤:以某个支持容器部署的基本包A为例,其网络依赖于软件包B,描述其软件封装过程,所述具体步骤如下:
步骤1,创建软件封装工程A,描述软件基本信息,软件前缀(例AppA)、软件名称(例应用A)、软件版本号(例0.0.0.1)、软件描述、开发者信息、软件运行环境(CPU、内存、磁盘、操作***位数等需求),上传软件图标和软件安装许可;进行步骤2;
步骤2,选择应用类型为基本包;进行步骤3;
步骤3,选择软件实体所在路径,导入软件实体;进行步骤4;
步骤4,选择软件实体中的某个文件F,根据需求创建桌面、开机自启和程序栏快捷方式,设置快捷方式的名称和自定义图标;进行步骤5;
步骤5,配置软件依赖信息,添加依赖信息,依赖软件前缀AppB,依赖软件名称应用B,选择依赖类型为网络依赖,依赖场景为安装依赖;进行步骤6;
步骤6,配置软件参数信息,采用自定义变量的方式,对A软件中的配置文件Config.cfg,其有IPADDRESS选项代表的是本地IP地址,首先将IPADDRESS对应的值用占位符,例如$LOCAL_IP$代替,在软件封装时,设置用户自定义变量$LOCAL_IP$,并从软件实体的列表中,将Config.cfg同自定义变量$LOCAL_IP$做关联,;进行步骤7;
步骤7,描述软件包支持容器化部署,配置支持容器的扩容、自动扩容、以及特权模式,配置容器基础镜像地址(例http://IP:PORT/tomcat-7z:latest)、软件包在基础镜像中的存放路径(例/usr/local/tomcat/webapps/)、启动命令(例catalina.sh run)、编译命令(例cd/usr/local/tomcat/webapps/ROOT&&rm-rf*&&cp-R/usr/local/tomcat/webapps/yanshi/*/usr/local/tomcat/webapps/ROOT/)、安装依赖命令(例)以及编译过程环境变量(例)等信息,依据上述信息,自动生成DockFile,同时对容器运行时的CPU、内存(例300MB)、副本数(例2个)、源端口:目的端口的映射(例8080:40094)、主机卷:容器卷的映射、CPU最大占百分比、副本数范围等参数添加到参数配置中,类型为一般配置,支持对容器运行前的参数配置;
步骤8,设置环境变量,新增覆盖APP_HOME环境变量,该变量为软件包的安装地址即$$(InstallDir),追加PATH环境变量,引用APP_HOME变量,$$(InstallDir)/bin;进行步骤9;
步骤9,设置软件包A的安装脚本为实体中的Install.sh文件、卸载脚本为实体中的UnInstall.sh文件、启动脚本为实体中的Start.sh文件、停止脚本为实体中的Stop.sh文件;进行步骤10;
步骤10,选择构建的目标硬件架构和操作***CentOS7.2,开始封装软件,生成封装后的描述文件,将CentOS7.2下的一键安装包、软件A的实体文件和描述文件压缩成一个可执行程序AppASetUp,完成软件封装。
对于软件封装后的使用场景,从独立部署和集成部署两个场景来描述:
场景一:封装后独立部署场景,所述具体步骤如下:
步骤1,将可执行程序AppASetUp拷贝到某个CentOS7.2的操作***上,双击运行AppASetUp;进行步骤2;
步骤2,AppASetUp进行自解压,将CentOS下的一键安装程序、描述文件以及软件实体释放到临时文件夹下,运行一键安装程序;进行步骤3;
步骤3,一键安装程序读取描述文件,首先做判断,AppA依赖于AppB,对于本地依赖,监测本机是否已装依赖软件,是,进行步骤4,否,跳转步骤14;对于网络依赖,给出依赖信息提示后,进行步骤4;
步骤4,根据描述文件中的应用前缀、应用名称、应用版本、应用描述、单位名称等,生成应用介绍;进行步骤5;
步骤5,根据描述文件中的安装许可文件信息,读取应用安装许可文件,生成安装许可;进行步骤6;
步骤6,提供软件自定义安装路径选择;进行步骤7;
步骤7,根据描述文件中应用对参数的配置,提供参数修改机制,支持软件安装前的参数录入;进行步骤8;
步骤8,开始对应用进行安装,将应用释放到用户选择的安装路径下;进行步骤9;
步骤9,应用释放完毕后,根据安装前的参数配置结果,修改软件实体中的参数值;进行
步骤10,根据描述文件中的安装自定义脚本信息,执行应用安装自定义脚本,判断脚本执行是否正确,是,进行步骤11,否,跳转步骤14;
步骤11,根据描述文件中的环境变量的配置信息,设置***环境变量,并使环境变量生效;进行步骤12;
步骤12,根据描述文件中的快捷方式配置信息,依据封装时的自定义图标和快捷方式名称,按需在桌面、开机自启以及程序栏上生成快捷方式;进行步骤13;
步骤13,根据封装时描述的启动脚本,可实现应用安装完后立即运行;进行步骤14;
步骤14,软件独立部署结束,对遇到的错误进行错误提示。
场景二:封装后集成部署场景,以***安装部署软件为例,所述具体步骤如下:
步骤1,将封装完的AppA上传到***安装部署软件下的软件仓库;进行步骤2;
步骤2,***安装部署软件抽取封装后的描述文件,获取软件的应用前缀、应用名称、应用版本、应用描述、单位名称等信息;进行步骤3;
步骤3,获取AppA的依赖关系,如仓库中暂不存在AppB,则可生成提示,缺少AppB;进行步骤4;
步骤4,对***安装部署时分为容器部署和普通部署;容器部署,进行步骤5;普通部署,进行步骤8;
步骤5,依据封装时对基础镜像的描述,可根据实际需求,修改基础镜像地址,连接容器云平台,选择基础镜像,进行构建,形成AppA的镜像;进行步骤6;
步骤6,依据AppA的镜像启动AppA的实例,在部署前对CPU、内存、副本数、源端口:目的端口的映射、主机卷:容器卷的映射、CPU最大占百分比、副本数范围等参数进行配置;进行步骤7;
步骤7,完成部署后,依据是否支持扩容、自动扩容等配置,支持容器按需扩容;跳转步骤12;
步骤8,当***安装部署软件往某IP地址部署AppA时,先根据其依赖关系,判断***中有无机器安装AppB,否,进行步骤9,是,进行步骤10;
步骤9,提示缺少依赖,部署AppA时必须先部署AppB,将AppB部署到***的任意一台机器上;进行步骤10;
步骤10,将AppA软件推送到所要部署的机器上;进行步骤11;
步骤11,进行场景一中的步骤7到步骤13;进行步骤12;
步骤12,完成***集成环境下的软件AppA的部署。
本发明提供了一种软件封装方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (9)

1.一种软件封装方法,其特征在于,包括如下步骤:
步骤1,创建软件封装工程,描述软件基本信息,上传软件图标和软件安装许可,进行步骤2;
步骤2,选择应用类型,根据不同的应用类型,展现不同的软件描述选项,进行步骤3;
步骤3,导入软件实体,实体类型支持文件夹或文件类型;进行步骤4;
步骤4,选择软件实体中的一个文件,创建快捷方式,设置快捷方式的名称和自定义图标,进行步骤5;
步骤5,根据软件依赖的需求,配置软件依赖信息,进行步骤6;
步骤6,根据应用类型,判断是否是数据库包,如果是,进行步骤7;否则,跳转步骤8;
步骤7,设置需要将数据库包装置的目的数据库的数据库端口号、数据库SID、***用户名和***用户名密码,配置表空间和临时表空间,设置用户信息,用户信息包含要导入的用户名、用户名密码、数据库权限以及和表空间、临时表空间之间的关系;跳转步骤13;
步骤8,配置软件参数信息,通过对结构化的文件的结构展现、非结构化的用户自定义以及手动添加的方式对软件在安装部署的过程中需要修改的参数信息予以配置,设定参数所属的配置类型并配置所属的来源,进行步骤9;
步骤9,设置软件是否支持容器化部署,如果是,进行步骤10,否则,跳转步骤11;
步骤10,设置容器支撑的能力,包含对容器的扩容、自动扩容、以及特权模式的支撑能力的设置,进行步骤11;
步骤11,设置环境变量,环境变量包含用户自定义的环境变量以及***环境变量,进行步骤12;
步骤12,设置自定义的安装、卸载、启动、停止脚本,自定义脚本用于各软件的特定操作,支持用户的个性化的行为和操作,进行步骤13;
步骤13,选择构建的目标硬件架构和操作***,开始封装软件,生成封装后的描述文件,根据目标硬件架构和操作***,将相应环境下的一键安装包、软件实体和描述文件压缩成一个可执行程序,软件安装时,通过自解压技术,执行一键安装包的可执行程序,根据封装后的描述文件,对软件包进行安装。
2.根据权利要求1所述的方法,其特征在于,步骤1中,所述软件基本信息包括软件前缀、软件名称、软件版本号、软件描述、开发者信息和软件运行环境,所述软件前缀即软件标识,所述软件运行环境包括CPU、内存、磁盘和操作***位数需求,根据软件所需运行的环境的描述,在软件安装前能够对目的机器的运行环境进行检测,能够对于不满足运行环境的机器进行提示。
3.根据权利要求2所述的方法,其特征在于,步骤2中,所述应用类型包括:软件基本包、Web应用包、数据库包、插件包和移动App,所述软件基本包指的是能够完成特定功能的文件或文件集合;Web应用包指的是使用Java开发的war包;数据库包指的是通过数据库导出的数据库DMP文件;插件包不能独立运行,必须依托于特定平台运行;移动App指手持终端应用。
4.根据权利要求3所述的方法,其特征在于,步骤4中,所述快捷方式包含三种类型,即桌面快捷方式、开机自启和程序栏快捷方式。
5.根据权利要求4所述的方法,其特征在于,步骤5中,所述设置软件依赖信息,包括设置依赖软件的软件前缀、软件名称和依赖软件的版本范围,设置依赖类型和依赖场景,并说明依赖的必要性;所述依赖类型包括本地依赖和网络依赖,所述依赖场景包括安装依赖和运行依赖。
6.根据权利要求5所述的方法,其特征在于,步骤8中,所述配置类型包括一般配置、通用配置和依赖配置,一般配置指的是各软件自己内部自定义的参数;通用配置包括IP地址、软件安装路径、数据库***用户名、数据库***用户名密码、数据库SID,以及Web访问端口、Web关闭端口、TCP端口、UDP端口;依赖配置指的是该配置项是依赖于依赖软件的特定的参数;
所述所属的来源包括本地配置和配置中心,本地配置和配置中心的区别在于,设置成本地配置的参数仅用于安装态的修改,当软件安装完成后其配置信息即为静态的数据,不再受配置中心的管理,而所属来源设置成配置中心的参数,在软件安装完成后,该配置项信息在安装完成后依然接受配置中心的统一管理,支持通过配置中心对该参数进行动态的变更,支持配置的热生效。
7.根据权利要求6所述的方法,其特征在于,步骤10包括:配置是否支持容器的扩容、自动扩容、以及特权模式,容器的扩容是指该软件部署在容器中后,是否能够利用容器的弹性伸缩的能力,手动的支持对容器实例的动态扩容,在支持扩容的基础上,自动扩容描述的是软件是否能够支持容器自动做负载均衡,充分利用容器的特点,支持软件峰值自动扩容,闲时自动缩容的能力,特权模式是指是否支持采用特权模式运行容器的所有功能;设置容器基础镜像地址、软件包在基础镜像中的存放路径、启动命令、编译命令、安装依赖命令以及编译过程环境变量信息,依据上述信息,自动生成DockFile,同时对容器运行时的CPU、内存、副本数、源端口:目的端口的映射、主机卷:容器卷的映射、CPU最大占百分比、副本数范围自动添加到步骤8中的参数配置中,类型为一般配置,支持对容器运行前的参数配置。
8.根据权利要求7所述的方法,其特征在于,步骤11包括:支持各操作***下的自定义环境变量,根据用户的需求,支持用户自定义的环境变量生成,在windows操作***下,修改注册表,添加用户自定义环境变量的项和值,在linux操作***下,将用户自定义变量写入/etc/profile下;支持PATH、LD_LIBRARY_PATH环境变量的追加,对于PATH环境变量,在windows操作***下,写入***的注册表中,追加PATH项的环境变量值为用户自定义添加的值,在linux操作***下,将追加的环境变量写入/etc/profile文件中,对于LD_LIBRARY_PATH环境变量,采用在/etc/ld.so.con.d文件夹下,新建.conf文件,采用ldconfig命令使库文件立即生效;支持自定义环境变量的引用,当环境变量同实际的安装路径有关时,能够通过占位符代表安装路径,实际安装过程中将占位符替换成实际的安装路径。
9.根据权利要求8所述的方法,其特征在于,步骤12中,支持两个以上脚本的按需执行。
CN201910949745.5A 2019-10-08 2019-10-08 一种软件封装方法 Active CN110727440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910949745.5A CN110727440B (zh) 2019-10-08 2019-10-08 一种软件封装方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910949745.5A CN110727440B (zh) 2019-10-08 2019-10-08 一种软件封装方法

Publications (2)

Publication Number Publication Date
CN110727440A true CN110727440A (zh) 2020-01-24
CN110727440B CN110727440B (zh) 2022-10-04

Family

ID=69220726

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910949745.5A Active CN110727440B (zh) 2019-10-08 2019-10-08 一种软件封装方法

Country Status (1)

Country Link
CN (1) CN110727440B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099814A (zh) * 2020-09-24 2020-12-18 智道网络科技(天津)有限公司 车机应用软件安装环境管理***及方法
CN112558930A (zh) * 2020-12-09 2021-03-26 中国科学院电子学研究所苏州研究院 一种面向容器服务的软件生成***及方法
CN112732277A (zh) * 2020-12-31 2021-04-30 罗普特科技集团股份有限公司 一种java多服务应用自动安装部署的集成方法与***
CN112860277A (zh) * 2021-02-04 2021-05-28 江苏云从曦和人工智能有限公司 软件部署方法、装置以及计算机可读存储介质
CN112860645A (zh) * 2021-02-09 2021-05-28 恒安嘉新(北京)科技股份公司 一种离线压缩文件的处理方法、装置、计算机设备及介质
CN113076115A (zh) * 2021-04-21 2021-07-06 扬州万方电子技术有限责任公司 基于国产平台的基础软件封装方法
CN113467790A (zh) * 2021-06-22 2021-10-01 龙芯中科(太原)技术有限公司 软件打包方法、装置及可读存储介质
CN116149689A (zh) * 2023-04-24 2023-05-23 上海观安信息技术股份有限公司 软件安装方法、装置、存储介质及计算机设备
CN116775048A (zh) * 2023-08-24 2023-09-19 浪潮通用软件有限公司 一种基于软件交付的快速部署方法、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425512A (zh) * 2013-08-19 2013-12-04 曙光信息产业股份有限公司 一种软件包管理方法及***
WO2015039413A1 (zh) * 2013-09-18 2015-03-26 国云科技股份有限公司 大型Linux软件包的发布方法
WO2016000623A1 (zh) * 2014-07-01 2016-01-07 北京奇虎科技有限公司 初始化智能终端设备的方法、装置及***
CN108052333A (zh) * 2017-12-11 2018-05-18 北京紫优能源科技有限公司 一种电力调度集控***标准化自动化部署方法及架构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425512A (zh) * 2013-08-19 2013-12-04 曙光信息产业股份有限公司 一种软件包管理方法及***
WO2015039413A1 (zh) * 2013-09-18 2015-03-26 国云科技股份有限公司 大型Linux软件包的发布方法
WO2016000623A1 (zh) * 2014-07-01 2016-01-07 北京奇虎科技有限公司 初始化智能终端设备的方法、装置及***
CN108052333A (zh) * 2017-12-11 2018-05-18 北京紫优能源科技有限公司 一种电力调度集控***标准化自动化部署方法及架构

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099814A (zh) * 2020-09-24 2020-12-18 智道网络科技(天津)有限公司 车机应用软件安装环境管理***及方法
CN112099814B (zh) * 2020-09-24 2023-04-11 智道网络科技(天津)有限公司 车机应用软件安装环境管理***及方法
CN112558930A (zh) * 2020-12-09 2021-03-26 中国科学院电子学研究所苏州研究院 一种面向容器服务的软件生成***及方法
CN112732277A (zh) * 2020-12-31 2021-04-30 罗普特科技集团股份有限公司 一种java多服务应用自动安装部署的集成方法与***
CN112732277B (zh) * 2020-12-31 2022-06-14 罗普特科技集团股份有限公司 一种java多服务应用自动安装部署的集成方法与***
CN112860277A (zh) * 2021-02-04 2021-05-28 江苏云从曦和人工智能有限公司 软件部署方法、装置以及计算机可读存储介质
CN112860645A (zh) * 2021-02-09 2021-05-28 恒安嘉新(北京)科技股份公司 一种离线压缩文件的处理方法、装置、计算机设备及介质
CN113076115B (zh) * 2021-04-21 2023-12-26 扬州万方科技股份有限公司 基于国产平台的基础软件封装方法
CN113076115A (zh) * 2021-04-21 2021-07-06 扬州万方电子技术有限责任公司 基于国产平台的基础软件封装方法
CN113467790A (zh) * 2021-06-22 2021-10-01 龙芯中科(太原)技术有限公司 软件打包方法、装置及可读存储介质
CN116149689A (zh) * 2023-04-24 2023-05-23 上海观安信息技术股份有限公司 软件安装方法、装置、存储介质及计算机设备
CN116775048A (zh) * 2023-08-24 2023-09-19 浪潮通用软件有限公司 一种基于软件交付的快速部署方法、设备及介质
CN116775048B (zh) * 2023-08-24 2024-01-16 浪潮通用软件有限公司 一种基于软件交付的快速部署方法、设备及介质

Also Published As

Publication number Publication date
CN110727440B (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
CN110727440B (zh) 一种软件封装方法
KR101831430B1 (ko) 인프라의 설치와 구성을 자동화하는 장치 및 그 방법
CN112416524A (zh) 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置
CN105657191B (zh) 一种基于Android***的应用增量升级方法及***
US7774762B2 (en) System including run-time software to enable a software application to execute on an incompatible computer platform
EP2932374B1 (en) Systems, methods, and computer program products for a software build and load process using a compilation and deployment service
US6571388B1 (en) Building a custom software environment including pre-loaded classes
US20070283344A1 (en) Programming model generic application deployment
US20040221268A1 (en) Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device
US20140196022A1 (en) Cloud Based Application Packaging
CN101470621A (zh) 虚拟机配置***
US20080222160A1 (en) Method and system for providing a program for execution without requiring installation
CN111399840B (zh) 一种模块开发方法及装置
US20040088397A1 (en) System and method for management of software applications
US20070282801A1 (en) Dynamically creating and executing an application lifecycle management operation
CN106294113B (zh) 一种基于可编程式测试服务的创建方法及装置
EP3137989A1 (en) Fast deployment across cloud platforms
WO2012000759A1 (en) Runtime dynamic selection of an application server classloader
US9747091B1 (en) Isolated software installation
CN111475227B (zh) 业务插件加载实现方法、装置和终端设备
CN105302563A (zh) 移动应用服务的插件化方法及***
CN102541609B (zh) 安装程序制作方法、装置及网络设备
CN112286504B (zh) 移动APP中基于ReactNative实现小程序开发并加载的方法
CN110888655A (zh) 一种应用发布方法及装置
CN105516154A (zh) 应用于SEAndroid***的安全策略配置方法及装置

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
CB02 Change of applicant information

Address after: No.1 Lingshan South Road, Qixia District, Nanjing, Jiangsu Province, 210000

Applicant after: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp.

Address before: 210007 No. 1 East Street, alfalfa garden, Jiangsu, Nanjing

Applicant before: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp.

GR01 Patent grant
GR01 Patent grant