本发明涉及软件开发技术领域,具体涉及一种软件包管理方法、装置和系统。
背景技术:
常用的软件构建管理工具,例如jenkins、maven、cruisecontrol没有对软件包进行标准管理的方案,jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。maven是一套标准的项目构建和管理工具,使用统一规范的脚本进行项目构建,简单易用。cruisecontrol是持续集成工具,主要提供了基于版本管理工具感知变化或每天定时的持续集成,并提供持续集成报告。
因此,通常需要集成第三方的软件包管理系统,如java构建中常用的包管理系统nexus、artifactory等。java包管理系统不仅对于java包之外的其它类型的依赖库和发布包的管理不够友好,而且不适用某些应用场景,无法满足企业应用需求,导致用户体验较差。
另外,现有技术中还存在将软件包放在软件构建平台的本地进行管理的方案,随着软件包数量的增多,需要占用大量本地磁盘,当本地磁盘不足时导致无法及时有效的保存和管理软件包的问题。而且,当存在多个构建平台时,分散在各个构建平台中的软件包也无法集中管理,不能满足实际需求。
由上可知,亟需一种对软件包进行有效管理的技术方案。
技术实现要素:
本发明提供了一种软件包管理方法、装置和系统,用以解决现有技术软件包管理系统不友好,无法及时有效的保存软件包,用户体验差的问题。
根据本发明的一个方面,提供了一种软件包管理方法,方法包括:
获取一个或多个软件构建服务器编译的软件包;
将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理。
根据本发明的另一个方面,提供了一种软件包管理装置,装置包括:
软件包获取模块,用于获取一个或多个软件构建服务器编译的软件包;
软件包管理模块,用于将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理。
根据本发明的又一个方面,提供了一种软件包管理系统,系统包括一个或多个软件构建服务器以及构建包数据库服务器,
构建包数据库服务器中设置有如本发明另一个方面的软件包管理装置。
本发明的有益效果是:本发明的这种软件包管理方法、装置和系统,通过获取一个或多个软件构建服务器编译的软件包并将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理。从而提供了一个统一的集中管理软件包的构建包数据库,将获取到的软件包统一保存到创建的构建包数据库中,极大地方便了对软件包的集中管理,方便后续对软件包的下载、上传、查询和浏览等操作,满足了用户使用需求。
附图说明
图1是本发明一个实施例的一种软件包管理方法的流程示意图;
图2是本发明一个实施例的一种软件包管理装置的结构示意图;
图3是本发明一个实施例的一种软件包管理系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的设计构思在于:针对现有技术中软件包管理存在的问题,通过创建一个统一的、集中管理软件包的构建包数据库,然后将获取到的软件包统一保存到创建的构建包数据库中,极大地方便了对软件包的集中管理,方便后续对软件包的下载、上传、查询和浏览等操作。
实施例一
图1是本发明一个实施例的一种软件包管理方法的流程示意图,参见图1,本实施例的软件包管理方法包括如下步骤:
步骤s101,获取一个或多个软件构建服务器编译的软件包;
步骤s102,将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理。
由图1所示可知,本实施例的软件包管理方法通过获取软件包,并将软件包统一保存到创建的构建包数据库中,从而方便后续对软件包进行集中管理,解决了现有技术中常用的软件构建管理工具不具有对软件包进行标准管理的问题,并且本实施例的软件包管理方法独立于软件构建管理工具本地,将软件包的开发编译和保存隔离开,保证了数据的安全性。另外,与java包管理系统相比,没有平台的限制,可以适用于任何软件构建服务器编译的软件包,拓宽了应用范围。
在本发明的一个实施例中,图1所示方法还包括:接收软件构建服务器通过调用构建包数据库提供的服务访问接口发送的软件包操作请求;根据软件包操作请求,在构建包数据库中进行相应的操作并返回操作结果至调用的软件构建服务器。
在本发明的一个实施例中,图1所示方法还包括:在将获取到的软件包统一保存到创建的构建包数据库中之前,在物理上与软件构建服务器相独立的环境中,创建一个根文件夹作为构建包数据库的后台存储目录。
在本发明的一个实施例中,步骤s102中的对软件包进行集中管理包括:
按照软件包所属的软件项目对软件包进行分类保存;在每个软件项目类别下,按照软件包的构建版本对软件包进行排序。
在本发明的一个实施例中,接收软件构建服务器通过调用构建包数据库提供的服务访问接口发送的软件包操作请求包括:
接收软件构建服务器通过调用构建包数据库提供的如下接口中的一种或多种发送的软件包操作请求:软件包查询服务访问接口,软件包下载服务访问接口,软件包上传服务访问接口。
在本发明的一个实施例中,图1所示方法还包括:接收构建包浏览展示服务器通过调用构建包数据库提供的浏览展示服务访问接口发送的软件包浏览展示请求;根据软件包浏览展示请求,返回浏览展示页面至调用的构建包浏览展示服务器。
本实施例中,构建包数据库通过提供浏览展示服务访问接口,方便外部使用者检索和浏览构建包数据库中保存的软件包以及软件包的信息。
在本发明的一个实施例中,步骤s101获取一个或多个软件构建服务器编译的软件包包括:获取每个软件构建服务器编译的具有依赖关系的软件包,或者,获取每个软件构建服务器编译的能够直接发布的软件包。
本实施例中,步骤s101获取的软件包可以是具有依赖关系的软件包。具体的,具有依赖关系的软件包也称构建依赖。举例而言,软件构建服务器在构建一个大型软件的过程中,先编译了一个组件a,然后将组件a发送到了构建包数据库中存储。后续在编译组件b过程中需要用到组件a,则此时组件a即为组件b的构建依赖。那么软件构建服务器,即可通过调用构建包数据库提供的软件包下载服务访问接口下载组件a到软件构建服务器中,以便完成组件b的编译。
本实施例中,步骤s101获取的软件包也可以是能够直接进行发布的软件包。例如,应用开发工具包。
另外,需要强调的是,本实施例中构建包数据库提供的服务访问接口是使用restapi开发程序为构建包数据库实现的,是一种构建包数据库restapi服务。
应用程序编程接口api,即applicationprogramminginterface,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码。表述性状态转移rest(representationalstatetransfer),是从资源的角度来观察整个网络,分布在各处的资源由uri确定,而客户端的应用通过uri来获取资源的表示方式。rest风格的api具有如下优点:简洁,统一,性能,可扩展性等等。
本实施例的这种软件包管理方法应用在自动化软件构建过程中。通过提供标准访问接口,使得软件构建平台可以使用统一的方法,实现依赖下载和构建生成物上传。其中,构建生成物是既可以作为目标软件直接进行发布,又可以作为构建依赖供其它软件构建过程中使用的软件包。构建生成物的一个具体示例是sdk。sdk(软件开发工具包,英文softwaredevelopmentkit)是指一些用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
由此可见,本实施例的软件包管理方法统一了构建依赖和软件发布包的管理接口,极大地方便了对构建依赖和构建生成物的集中管理,同时提供了对构建包数据库中软件包的浏览和查询检索服务。
实施例二
图2是本发明一个实施例的一种软件包管理装置的结构示意图,参见图2,本实施例的软件包管理装置20包括:
软件包获取模块201,用于获取一个或多个软件构建服务器编译的软件包;
软件包管理模块202,用于将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理。
在本发明的一个实施例中,软件包管理模块202还用于接收软件构建服务器通过调用构建包数据库提供的服务访问接口发送的软件包操作请求;根据软件包操作请求,在构建包数据库中进行相应的操作并返回操作结果至调用的软件构建服务器。
在本发明的一个实施例中,软件包管理模块202在将获取到的软件包统一保存到创建的构建包数据库中之前,还用于在物理上与软件构建服务器相独立的环境中,创建一个根文件夹作为构建包数据库的后台存储目录。
在本发明的一个实施例中,软件包管理模块202,具体用于对软件包进行如下集中管理按照软件包所属的软件项目对软件包进行分类保存;在每个软件项目类别下,按照软件包的构建版本对软件包进行排序。
软件包管理模块202具体用于接收软件构建服务器通过调用构建包数据库提供的如下接口中的一种或多种发送的软件包操作请求:软件包查询服务访问接口,软件包下载服务访问接口,软件包上传服务访问接口。
在本发明的一个实施例中,软件包管理模块202,还用于接收构建包浏览展示服务器通过调用构建包数据库提供的浏览展示服务访问接口发送的软件包浏览展示请求;根据软件包浏览展示请求,返回浏览展示页面至调用的构建包浏览展示服务器。
在本发明的一个实施例中,软件包获取模块201具体用于获取每个软件构建服务器编译的具有依赖关系的软件包,或者,获取每个软件构建服务器编译的能够直接发布的软件包。
需要说明的是,本实例的软件包管理装置的工作过程是和前述软件包管理方法的实现步骤相对应的,因此本实施例中没有描述的内容可参见前述实施例的说明,这里不再赘述。
实施例三
图3是本发明一个实施例的一种软件包管理系统的结构示意图,参见图3,本发明实施例的软件包管理系统30包括:一个或多个软件构建服务器301以及构建包数据库服务器302,
构建包数据库服务器302中设置有如实施例二描述的软件包管理装置。
注:图3中示意了三个软件构建服务器,在本发明的其他实施例中可以根据实际应用需求进行数量增减,对此不作限制。
实际应用中,三个软件构建服务器可以分别是:源代码版本管理系统,可视化软件构建平台以及软件包浏览和检索系统,源代码版本管理系统将更新代码发送给可视化软件构建平台,供可视化软件构建平台生成软件包,并将生成的软件包通过调用构建包数据库提供的服务访问接口发送到软件包管理装置。另外,可视化软件构建平台还可以从软件包管理装置中下载构建依赖。构建包浏览和检索系统主要是通过调用构建包数据库提供的服务访问接口对软件包管理装置管理的软件包进行浏览或检索,由于对软件包进行了集中管理,所以大大方便了对软件包的浏览和检索服务。
另外,本实施例中,由于设置了构建包数据库服务器,构建包数据库服务器中设置有软件包管理装置,从而能够从软件构建服务器获取编译的软件包并将获取到的软件包统一保存到构建包数据库中,以对软件包进行集中管理。
并且,由于本实施例的构建包数据库服务器提供了标准访问接口供软件构建服务器调用,实现构建依赖(即,具有依赖关系的关键包)下载和构建生成物(例如,可直接发布的软件包)上传等操作,极大地方便了对构建依赖和构建生成物的统一管理和集中管理。并且,突破了地域限制,各个软件构建服务器可分布在不同的地区,与在软件构建服务器本地进行软件包管理的现有技术相比,将软件包的编译和保存管理隔离开,提高了数据的安全性。
本实施例的软件包管理系统的工作过程是:
首先,软件构建服务器(即,可视化软件构建平台)从源代码版本管理系统中更新软件源代码,进行编译得到软件包。这里的可视化软件构建平台可以理解为是一个调用构建脚本的外壳系统。该外壳系统可以采用比较常用的jenkins、cruisecontrol、quickbuild系统,也可以根据应用需求自行开发实现。
然后,在物理上与可视化软件构建平台相独立的环境中,创建一个根文件夹用作构建包数据库的后台存储目录。同时,使用restapi开发程序,为构建包数据库实现一套restapi调用接口,即,构建包数据库restapi服务。
最后,可视化软件构建平台通过访问构建包数据库restapi服务来下载构建依赖,然后根据构建依赖进行编译、打包后,再通过访问构建包数据库restapi服务来上传编译完成的构建包(即,软件包)。
另外,本实施例的软件包管理系统通过提供浏览展示服务访问接口供构建包浏览展示服务器(即,构建包检索和浏览系统)调用,也为外部使用者提供集中的软件包中信息(例如版本信息)检索和浏览界面。
综上可知,本发明实施例的这种软件包管理方法、装置和系统,通过获取一个或多个软件构建服务器编译的软件包并将获取到的软件包统一保存到创建的构建包数据库中,以对软件包进行集中管理,从而提供一个统一的集中管理软件包的构建包数据库,将获取到的软件包统一保存到创建的构建包数据库中,极大地方便了对软件包的集中管理,方便后续对软件包的下载、上传、查询和软件包信息的浏览等操作,满足了用户使用需求。
需要说明的是:
本发明的各个部件实施例可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本发明的软件包管理系统传统上包括处理器和以存储器形式的计算机程序产品或者计算机可读介质。存储器可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器具有用于执行上述方法中的任何方法步骤的程序代码的存储空间。例如,用于程序代码的存储空间可以包括分别用于实现上面的方法中的各种步骤的各个程序代码。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括用于执行根据本发明的方法步骤的计算机可读代码,即可以由处理器读取的代码,这些代码被运行时,导致该装置执行上面所描述的方法中的各个步骤。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包括”不排除存在未列在权利要求中的组件或步骤。本发明可以借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个软件项来具体体现。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围以权利要求的保护范围为准。