软件代码版本管理与发布的方法及装置与流程

文档序号:14175034阅读:1019来源:国知局
软件代码版本管理与发布的方法及装置与流程

本发明涉及计算机技术领域,具体涉及一种软件代码版本管理与发布的方法及装置。



背景技术:

在互联网行业中,做服务端开发的工程师将程序开发完后,需要将程序代或者编译结果部署到服务器上运行,才能间接的为用户提供服务,这个过程称为代码发布。现有技术中代码发布大多采用以下的方法实现:一,开发人员将代码提交到代码管理服务器,再由代码管理服务器分发到应用服务器,执行相应命令,使代码生效;二,接受发布指令,确定项目和版本号,从版本控制服务器中复制代码到本地,获取更新的内容,将需要更新的内容打包上传到目标服务器,在目标服务器解压安装。

现有技术的缺陷包括以下几点:

(1)目前现有的系统里面大多是一个项目对应一个服务器一个目录,而不能一对多或者多对一项目内容交叉,但对于多人多团队协作开发的软件,不同团队使用的代码管理服务器可能是不同的,即便是相同的代码管理服务器,不同团队可能使用不同的项目或者目录来管理自己团队的代码,那么要将这些不同来源的代码汇集起来发布就成为一个问题。

(2)在代码从提交到代码管理服务器到他发布到生产环境需要一系列的持续集成工作,比如:代码格式检查,代码编译,测试环境发布,灰度环境发布,生产环境发布,生产环境生效,每一个步骤都可能导致发布过程的回退。现有技术无法提供有效的方法,来确保上述过程可以让运维人员或者测试人员随时灵活操作。

(3)开发过程中可能面临各种环境,如生产环境、测试环境、灰度环境、开发环境、演示环境等,这些环境可能创建时间较短,存在一段时间就销毁,因此,在软件中,如果没有一个有效的方法来管理这些环境的代码版本,对人力的消耗无疑是巨大的。



技术实现要素:

针对现有技术中的缺陷,本发明提供的软件代码版本管理与发布的方法及装置,可以极大地提升软件中代码部署的效率,减少由于代码部署造成的错误,降低运维和测试人力。

第一方面,本发明提供了一种软件代码版本管理与发布的方法,包括:

确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;

根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;

生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;

根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。

优选地,还包括软件更新步骤:

根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;

将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;

从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。

优选地,还包括:定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。

优选地,还包括:定期合并多个补丁包并保存。

优选地,还包括:

将已有的初始化包安装到特殊环境的服务器上;

确定特殊环境需要的软件版本;

根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据特殊环境的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。

优选地,还包括:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。

第二方面,本发明提供了一种软件代码版本管理与发布的装置,包括:

版本确定模块,用于确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;

代码获取模块,用于根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;

安装包生成模块,用于生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;

软件安装模块,用于根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。

优选地,还包括软件更新模块,用于:

根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;

将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;

从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。

优选地,还包括合并模块,用于定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。

优选地,还包括合并模块,用于定期合并多个补丁包并保存。

优选地,还包括特殊环境安装模块,用于:

将已有的初始化包安装到特殊环境的服务器上;

确定特殊环境需要的软件版本;

根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据特殊环境的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。

优选地,还包括合并模块,用于:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。

本发明提供的软件代码版本管理与发布的方法及装置,通过创建一个支持多代码管理服务器,可以同时管理多项目、多环境的代码发布和部署系统,来确保代码在不同环境中保持正确,同时尽可能的减少人为干预代码的部署和发布,提升效率,减少出错。同时由于将整个软件安装过程抽象为初始化包的安装,以及初始化包到目标版本之间的补丁安装,那么不同的软件版本应用到不同的环境(生产环境,灰度环境,测试环境,开发环境,演示环境等)时,可以非常快速的进行代码部署,并对其进行管理和版本的升级。

附图说明

图1为本发明实施例所提供的软件代码版本管理与发布的方法的流程图;

图2为本发明实施例所提供的软件代码版本管理与发布的装置的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

如图1所示,本实施例提供了一种软件代码版本管理与发布的方法,包括:

步骤s1,确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本。

其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系。

其中,一个项目中所有的代码文件会部署在一个逻辑的代码服务器上,一个代码服务器使用一种版本控制工具,每个代码服务器可以根据项目需求选择不同的版本控制工具,常用的版本控制工具有svn、git等。

其中,多个项目通过配置上安装办法等信息,合在一起构成一个软件。

其中,软件版本和项目版本是一个一对多的关系,即一个软件版本包括多个项目版本。

步骤s2,根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地。

步骤s3,生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件。

其中,生成的初始化包即该软件版本的安装包。

其中,安装配置文件是根据自定义的项目聚合的策略生成的。

步骤s4,根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。

本实施例的方法在软件版本的发布和管理中,通过映射表将代码文件的变更映射成了每个项目的版本变更,进一步映射成了软件版本的变更,从而可以非常高效地通过对项目的版本设置生成软件版本。并且可以把不同项目中的代码文件和版本综合管理,也可以自己定义发布的策略和规则,从代码服务器中获取一个或多个项目的部分任意组合,做一个自定义的发布配置,以实现根据项目进展和实际需求将多个项目的重新聚合调整后进行发布。本实施例的方法可以极大地提升软件中代码部署的效率,减少由于代码部署造成的错误,降低运维和测试人力。

本实施例的方法还包括软件更新步骤:

步骤s501,根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本。

步骤s502,将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件。

其中,当前软件版本即带更新的服务器中当前安装的软件版本,每次在服务器中安装完软件后都会标记其对应的软件版本号。

其中,通过映射表获取新、旧软件版本包含的项目版本以及每个项目版本中的代码版本,通过比较代码版本号即可获知两个软件版本之间的版本差异,找到发生了变化的代码文件,这种变化可以是增加或删除了一个或多个代码文件,也可以是修改了一个或多个已有的代码文件,会给修改后的代码文件分配一个新的代码版本号,则本质上是用修改后的代码文件替换原来的代码文件。

步骤s503,从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件。

其中,安装指引文件规定了安装补丁包中的代码文件的操作顺序。例如,先删除或覆盖待更新服务器中原有的某个文件代码,然后安装补丁包中的文件代码等等操作流程。

步骤s504,根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。

通过上述方法,可以大幅度提高软件更新的效率。

基于上述的软件更新方法,本实施例的方法还包括:定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。该优选方法通过将多个补丁包合并到初始化包形成新版本的初始化包,合并过程中除了代码文件需要替换为最新的之外,还需要将安装配置文件也聚合为新版的。可定期执行初始化包与补丁包的合并,形成新版本的初始化,以降低新版本安装时的复杂度,加快新版本的安装速度。

基于上述的软件更新方法,本实施例提供的方法还包括:合并多个补丁包并保存。合并多个补丁包即将多个小补丁包合并为一个大补丁包,具体合并方法为:把多个补丁包里的代码文件和安装指引文件进行分析合并,例如,第一个补丁包是删除代码文件a,增加代码文件b,第二个补丁包为删除代码文件b,增加代码文件c,则合并后的上述两个补丁包合并后的结果为删除代码文件a,增加代码文件c,因此,合并后的补丁包中的代码文件和安装指引文件均发生了改变。通过合并补丁包的方法,把多次安装变成一次安装,一次只需安装一次补丁包就可以完成多次升级,提高了软件升级的效率。上述补丁包的合并可以定期进行,以减少补丁包的大小,降低版本更新的复杂度,提升更新过程的安装速度。

为更好的适应不同安装环境的需求,本实施例提供的方法还包括以下步骤:

步骤s601,将已有的初始化包安装到特殊环境的服务器上。

步骤s602,确定特殊环境需要的软件版本。

其中,特殊环境是指与已有的安装环境不同的安装环境,并不是特指具有某中特殊要求的环境,即某一软件已经根据环境a(即已有的安装环境)生成了初始化包,而现在需要将该软件安装在环境b中,这个环境b即称为特殊环境。

步骤s603,根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件。

其中,安装指引文件规定了安装补丁包中的代码文件的操作顺序。例如,先删除或覆盖待更新服务器中原有的某个文件代码,然后安装补丁包中的文件代码等等操作流程。

步骤s604,根据特殊环境的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。

当需要在特殊环境下安装软件时,可以采用步骤s601-s604,首先进行初始化包的安装,再根据特殊环境需要的软件版本,创建一个特殊环境与目标版本之间差异的补丁包,再安装补丁包,这样可以最大程度复用初始化包。通过上述方法,提高了软件代码的移植性和环境配置的灵活性,能够迅速生成一个需要的环境(如生产环境、测试环境、灰度环境、开发环境、演示环境等),还可以在不同环境下构建不同软件版本,降低了环境的生成的难度,开发过程中会遇到多种环境,如生产环境、测试环境、灰度环境、开发环境、演示环境等,这些环境可能创建时间较短,存在一段时间就销毁,通过上述方法可以在软件中有效地管理这些环境的代码版本,节省了大量的人力资源。

本实施例提供的方法还包括:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。该合并步骤可以定期进行,或者根据特殊环境的安装软件的次数决定是否需要进行合并操作。如果需要,可以保存多个特殊环境的初始化包,每个初始化包对应唯一的版本号,以备不同环境和场景的需要,加快安装速度。

针对不同的软件运行环境需要不同的安装配置文件,而手动调整配置文件的工作重复度很高。因此,本实施例提供的方法还包括:记录不同环境下安装配置文件,所述安装配置文件包括多个配置文件;通过比较不同环境的安装配置文件提取所有环境都具有的配置文件作为共享配置文件存入配置库中,提取每个环境所具备的不同的配置文件作为每个环境对应的可变配置文件,将可变配置文件与对应的环境关联存储到配置库中,且每个环境的可变配置文件分开存储。在生成安装配置文件时,检测当前项目需要运行的环境时,获取与运行环境对应的可变配置文件,结合共享配置文件,生成该运行环境对应的安装配置文件。通过上述方法,系统能够根据不同的运行环境,自动、快速生成对应的安装配置文件,并且降低了系统存储量。

随着软件版本的升级,安装配置文件也需要进行升级,系统自动给安装配置文件、固定配置文件、可变配置文件分配版本号,通过版本控制工具实现对配置文件的版本管理。当对固定配置文件/可变配置文件进行升级时,给升级后的固定配置文件/可变配置文件分配新的版本号,并记录每个固定配置文件/可变配置文件对应的升级时间。

其中,各个环境与固定配置文件的版本号、可变配置文件的版本号、安装配置文件的版本号的关系均存储在关系表中。

在进行软件发布时,通过以下步骤生成安装配置文件:

步骤s701,获取项目的运行环境,根据关系表从配置库中获取查找到所述运行环境对应的安装配置文件的版本号;

步骤s702,根据获取到的安装配置文件的版本号,提取对应的固定配置文件的版本号、可变配置文件的版本号;

步骤s703,根据提取到的固定配置文件的版本号、可变配置文件的版本号,在配置库中查找是否存在最新的可固定配置文件和/或可变配置文件;若存在,则根据查找的最新的固定配置文件和可变配置文件生成安装配置文件,并生成对应的版本号,将生成的安装配置文件的版本号与对应的环境关联存储,并记录版本升级时间;若不存在,则直接使用原有的安装配置文件。

通过将关系表将环境、安装配置文件、固定配置文件和可变配置文件关联起来,在软件升级过程中能够生成最新的安装配置文件。

若系统检测到软件版本更新,则获取可能运行的环境,其中,获取可能运行的环境包括:获取目前项目所处阶段,根据目前项目所处阶段确定可能使用的运行环境,或者,将最近频繁使用的运行环境作为可能运行的环境。在关系表中获取与可能运行的环境对应的安装配置文件,计算安装配置文件的升级时间与系统当前时间的时间差值,若时间差值超过预设的时间间隔,则生成配置更新通知,提醒工作人员检查是否需要更新项目相关的配置文件。其中,预设的时间间隔可根据项目进行自行设置。另外,也可以通过获取固定配置文件,或与可能运行的环境对应的可变配置文件的升级时间,来判断是否需要生成配置更行通知。

本实施例提供的方法还包括:在对代码管理器中的代码文件进行修改后,自动记录代码文件的更改记录,所述更改记录包括代码文件中发生修改的代码;相应地,软件更新的优选实施方法包括以下步骤:

步骤s801,根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本。

步骤s802,将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件。

其中,版本差异包括以下情况:增加代码文件,删除代码文件或修改代码文件,上述三种情况可在一次版本变化中任意组合发生。

步骤s803,对于增加代码文件和删除代码文件的情况,从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;针对修改代码文件的情况,从代码服务器中获取被修改代码文件对应的更改记录;若更改记录的存储量大于等于预设阈值,则从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;若更改记录的存储量小于阈值,则生成包含更改记录和安装指引文件的补丁包。

步骤s804,根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。

通过上述步骤,对于更改内容较少的代码文件不必完整下载,而只需要下载对应的更改记录即可在本地完成相应更改。

本实施例的软件代码版本管理与发布的方法,通过创建一个支持多代码管理服务器,可以同时管理多项目、多环境的代码发布和部署系统,来确保代码在不同环境中保持正确,同时尽可能的减少人为干预代码的部署和发布,提升效率,减少出错。同时由于将整个软件安装过程抽象为初始化包的安装,以及初始化包到目标版本之间的补丁安装,那么不同的软件版本应用到不同的环境(生产环境,灰度环境,测试环境,开发环境,演示环境等)时,可以非常快速的进行代码部署,并对其进行管理和版本的升级。

如图2所示,基于与上述软件代码版本管理与发布的方法相同的发明构思,本实施例还提供了一种软件代码版本管理与发布的装置,包括:

版本确定模块,用于确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;

代码获取模块,用于根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;

安装包生成模块,用于生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;

软件安装模块,用于根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。

本实施例的装置在软件版本的发布和管理中,通过映射表将代码文件的变更映射成了每个项目的版本变更,进一步映射成了软件版本的变更,从而可以非常高效地通过对项目的版本设置生成软件版本。并且可以把不同项目中的代码文件和版本综合管理,也可以自己定义发布的策略和规则,从代码服务器中获取一个或多个项目的部分任意组合,做一个自定义的发布配置,以实现根据项目进展和实际需求将多个项目的重新聚合调整后进行发布。本实施例的装置可以极大地提升软件中代码部署的效率,减少由于代码部署造成的错误,降低运维和测试人力。

优选地,还包括软件更新模块,用于:

根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;

将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;

从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。

通过上述更新模块,可以大幅度提高软件更新的效率。

优选地,还包括合并模块,用于定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。通过合并模块,可定期执行初始化包与补丁包的合并,形成新版本的初始化,以降低新版本安装时的复杂度,加快新版本的安装速度。

优选地,还包括合并模块,用于定期合并多个补丁包并保存。通过该合并模块,可以定期合并补丁包,以减少补丁包的大小,降低版本更新的复杂度,提升更新过程的安装速度。

优选地,还包括特殊环境安装模块,用于:

将已有的初始化包安装到特殊环境的服务器上;

确定特殊环境需要的软件版本;

根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;

根据特殊环境的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。

优选地,还包括合并模块,用于:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。该合并模块可以定期进行,或者根据特殊环境的安装软件的次数决定是否需要进行合并操作。如果需要,可以保存多个特殊环境的初始化包,每个初始化包对应唯一的版本号,以备不同环境和场景的需要,加快安装速度。

本实施例的软件代码版本管理与发布的装置,创建一个支持多代码管理服务器,可以同时管理多项目、多环境的代码发布和部署系统,来确保代码在不同环境中保持正确,同时尽可能的减少人为干预代码的部署和发布,提升效率,减少出错。同时由于将整个软件安装过程抽象为初始化包的安装,以及初始化包到目标版本之间的补丁安装,那么不同的软件版本应用到不同的环境(生产环境,灰度环境,测试环境,开发环境,演示环境等)时,可以非常快速的进行代码部署,并对其进行管理和版本的升级。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1