CN107908421A - 软件代码版本管理与发布的方法及装置 - Google Patents

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

Info

Publication number
CN107908421A
CN107908421A CN201710969546.1A CN201710969546A CN107908421A CN 107908421 A CN107908421 A CN 107908421A CN 201710969546 A CN201710969546 A CN 201710969546A CN 107908421 A CN107908421 A CN 107908421A
Authority
CN
China
Prior art keywords
code
version
file
software version
software
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
CN201710969546.1A
Other languages
English (en)
Other versions
CN107908421B (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.)
Beijing Chuangxin Journey Network Technology Co Ltd
Original Assignee
Beijing Chuangxin Journey Network Technology 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 Beijing Chuangxin Journey Network Technology Co Ltd filed Critical Beijing Chuangxin Journey Network Technology Co Ltd
Priority to CN201710969546.1A priority Critical patent/CN107908421B/zh
Publication of CN107908421A publication Critical patent/CN107908421A/zh
Application granted granted Critical
Publication of CN107908421B publication Critical patent/CN107908421B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/65Updates

Abstract

本发明涉及一种软件代码版本管理与发布的方法及装置,所述方法包括:确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。本发明提供的方法及装置,可以极大地提升软件中代码部署的效率,减少由于代码部署造成的错误,降低运维和测试人力。

Description

软件代码版本管理与发布的方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种软件代码版本管理与发布的方法及装置。
背景技术
在互联网行业中,做服务端开发的工程师将程序开发完后,需要将程序代或者编译结果部署到服务器上运行,才能间接的为用户提供服务,这个过程称为代码发布。现有技术中代码发布大多采用以下的方法实现:一,开发人员将代码提交到代码管理服务器,再由代码管理服务器分发到应用服务器,执行相应命令,使代码生效;二,接受发布指令,确定项目和版本号,从版本控制服务器中复制代码到本地,获取更新的内容,将需要更新的内容打包上传到目标服务器,在目标服务器解压安装。
现有技术的缺陷包括以下几点:
(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所示,基于与上述软件代码版本管理与发布的方法相同的发明构思,本实施例还提供了一种软件代码版本管理与发布的装置,包括:
版本确定模块,用于确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;
代码获取模块,用于根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;
安装包生成模块,用于生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;
软件安装模块,用于根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。
本实施例的装置在软件版本的发布和管理中,通过映射表将代码文件的变更映射成了每个项目的版本变更,进一步映射成了软件版本的变更,从而可以非常高效地通过对项目的版本设置生成软件版本。并且可以把不同项目中的代码文件和版本综合管理,也可以自己定义发布的策略和规则,从代码服务器中获取一个或多个项目的部分任意组合,做一个自定义的发布配置,以实现根据项目进展和实际需求将多个项目的重新聚合调整后进行发布。本实施例的装置可以极大地提升软件中代码部署的效率,减少由于代码部署造成的错误,降低运维和测试人力。
优选地,还包括软件更新模块,用于:
根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;
将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;
从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;
根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。
通过上述更新模块,可以大幅度提高软件更新的效率。
优选地,还包括合并模块,用于定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。通过合并模块,可定期执行初始化包与补丁包的合并,形成新版本的初始化,以降低新版本安装时的复杂度,加快新版本的安装速度。
优选地,还包括合并模块,用于定期合并多个补丁包并保存。通过该合并模块,可以定期合并补丁包,以减少补丁包的大小,降低版本更新的复杂度,提升更新过程的安装速度。
优选地,还包括特殊环境安装模块,用于:
将已有的初始化包安装到特殊环境的服务器上;
确定特殊环境需要的软件版本;
根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;
根据特殊环境的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。
优选地,还包括合并模块,用于:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。该合并模块可以定期进行,或者根据特殊环境的安装软件的次数决定是否需要进行合并操作。如果需要,可以保存多个特殊环境的初始化包,每个初始化包对应唯一的版本号,以备不同环境和场景的需要,加快安装速度。
本实施例的软件代码版本管理与发布的装置,创建一个支持多代码管理服务器,可以同时管理多项目、多环境的代码发布和部署系统,来确保代码在不同环境中保持正确,同时尽可能的减少人为干预代码的部署和发布,提升效率,减少出错。同时由于将整个软件安装过程抽象为初始化包的安装,以及初始化包到目标版本之间的补丁安装,那么不同的软件版本应用到不同的环境(生产环境,灰度环境,测试环境,开发环境,演示环境等)时,可以非常快速的进行代码部署,并对其进行管理和版本的升级。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (10)

1.一种软件代码版本管理与发布的方法,其特征在于,包括:
确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;
根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;
生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;
根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。
2.根据权利要求1所述的方法,其特征在于,还包括软件更新步骤:
根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;
将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;
从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;
根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。
3.根据权利要求2所述的方法,其特征在于,还包括:定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。
4.根据权利要求2所述的方法,其特征在于,还包括:定期合并多个补丁包并保存。
5.根据权利要求1所述的方法,其特征在于,还包括:
将已有的初始化包安装到特殊环境的服务器上;
确定特殊环境需要的软件版本;
根据特殊环境的软件版本与初始化包对应的软件版本之间的文件差异,生成特殊环境的补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;
根据特殊环境的补丁包中的安装配置文件,将特殊环境的补丁包安装到特殊环境对应的服务器上。
6.根据权利要求5所述的方法,其特征在于,还包括:合并所述初始化包和特殊环境的补丁包,形成特殊环境的初始化包并保存。
7.一种软件代码版本管理与发布的装置,其特征在于,包括:
版本确定模块,用于确定待发布的软件版本,根据映射表获取所述软件版本对应的每个项目版本,并确定每个项目中的代码版本,其中,一个软件版本对应一个软件版本号,一个项目版本对应一个项目版本号,一个代码版本对应一个代码版本号,所述映射表存储有软件版本号、项目版本号和代码版本号之间的关系;
代码获取模块,用于根据每个项目中的每个代码版本号以及对应的代码文件存储位置,从代码服务器中获取对应的代码文件下载到本地;
安装包生成模块,用于生成初始化包,所述初始化包包括下载到本地的代码文件以及安装配置文件;
软件安装模块,用于根据所述初始化包的安装配置文件,将所述初始化包安装到指定环境的服务器上。
8.根据权利要求7所述的装置,其特征在于,还包括软件更新模块,用于:
根据所述映射表获取新的软件版本对应的每个项目版本,并确定每个项目中的代码版本;
将当前软件版本和新的软件版本的项目版本及每个项目中的代码版本一一比对,确定当前软件版本与新的软件版本之间存在版本差异的代码文件;
从代码服务器获取需要更新的有差异的代码文件,并生成补丁包,所述补丁包包括有差异的代码文件以及对应的安装指引文件;
根据所述补丁包的安装配置文件,将所述补丁包安装到指定环境的服务器上,同时更新服务器的软件版本号。
9.根据权利要求8所述的装置,其特征在于,还包括合并模块,用于定期将所述补丁包合并到所述初始化包中,形成所述新的软件版本的初始化包并保存。
10.根据权利要求8所述的装置,其特征在于,还包括合并模块,用于定期合并多个补丁包并保存。
CN201710969546.1A 2017-09-29 2017-09-29 软件代码版本管理与发布的方法及装置 Active CN107908421B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710969546.1A CN107908421B (zh) 2017-09-29 2017-09-29 软件代码版本管理与发布的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710969546.1A CN107908421B (zh) 2017-09-29 2017-09-29 软件代码版本管理与发布的方法及装置

Publications (2)

Publication Number Publication Date
CN107908421A true CN107908421A (zh) 2018-04-13
CN107908421B CN107908421B (zh) 2022-06-24

Family

ID=61841397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710969546.1A Active CN107908421B (zh) 2017-09-29 2017-09-29 软件代码版本管理与发布的方法及装置

Country Status (1)

Country Link
CN (1) CN107908421B (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032592A (zh) * 2018-08-23 2018-12-18 常熟市盛铭信息技术有限公司 一种软件代码互相共享的方法
CN109086362A (zh) * 2018-07-19 2018-12-25 北京首汽智行科技有限公司 多模块项目的管理方法
CN109101267A (zh) * 2018-07-31 2018-12-28 上海携程金融信息服务有限公司 应用发布管理方法、装置、电子设备、存储介质
CN109144548A (zh) * 2018-08-27 2019-01-04 杭州安恒信息技术股份有限公司 一种基于git实现的多组件软件升级方法、装置及服务器
CN109189400A (zh) * 2018-08-07 2019-01-11 北京趣拿软件科技有限公司 程序发布方法及装置、存储介质、处理器
CN109254778A (zh) * 2018-08-31 2019-01-22 百度在线网络技术(北京)有限公司 用于部署信息流系统的方法和装置
CN109298880A (zh) * 2018-08-09 2019-02-01 恒生电子股份有限公司 多版本代码生成方法、设备及电子设备
CN109558121A (zh) * 2018-11-26 2019-04-02 上海达梦数据库有限公司 接口驱动程序的开发方法、装置、设备及存储介质
CN110209396A (zh) * 2019-05-29 2019-09-06 惠州Tcl移动通信有限公司 一对多的软件版本控制系统及方法
CN110321254A (zh) * 2019-07-09 2019-10-11 西安点告网络科技有限公司 软件版本回滚方法、装置、服务器及存储介质
CN110348219A (zh) * 2019-06-13 2019-10-18 晶晨半导体(上海)股份有限公司 版本比对方法、系统、计算机设备及可读存储介质
CN110377334A (zh) * 2019-07-25 2019-10-25 北京奇艺世纪科技有限公司 持续集成方法及设备
CN110389773A (zh) * 2018-04-23 2019-10-29 比亚迪股份有限公司 软件发布及部署方法、装置及系统
CN110413299A (zh) * 2019-07-26 2019-11-05 成都天锐星通科技有限公司 一种fpga内置代码版本加载方法及电子设备
CN110968507A (zh) * 2019-11-20 2020-04-07 北京创鑫旅程网络技术有限公司 覆盖率统计方法及装置
CN111078256A (zh) * 2019-12-20 2020-04-28 广州品唯软件有限公司 自动化测试环境的升级方法、终端及可读存储介质
CN111628938A (zh) * 2020-05-26 2020-09-04 北京字节跳动网络技术有限公司 分支合并的方法、装置、电子设备及计算机存储介质
CN111782239A (zh) * 2020-06-03 2020-10-16 中移(杭州)信息技术有限公司 软件打包和源码版本信息获取方法、装置及存储介质
CN112148272A (zh) * 2020-09-25 2020-12-29 百度在线网络技术(北京)有限公司 工程组件化开发中配置共享的方法、装置、设备及介质
CN113448614A (zh) * 2021-06-29 2021-09-28 北京金山云网络技术有限公司 软件项目代码管理方法、装置、存储介质和电子设备
CN113535219A (zh) * 2020-04-15 2021-10-22 武汉斗鱼鱼乐网络科技有限公司 一种app信息发布方法、装置、介质及计算机设备
CN113900680A (zh) * 2020-07-06 2022-01-07 中国移动通信集团重庆有限公司 代码管理方法、装置及计算设备
CN114217847A (zh) * 2021-12-23 2022-03-22 四川启睿克科技有限公司 一种同一环境中多版本的配置添加保存方法
CN114706611A (zh) * 2022-04-19 2022-07-05 广域铭岛数字科技有限公司 一种版本管理方法、系统、电子设备及介质
CN115599399A (zh) * 2022-11-30 2023-01-13 广东省科技基础条件平台中心(Cn) 一种应用程序部署方法、装置及存储介质
TWI828181B (zh) * 2022-04-12 2024-01-01 大陸商鼎捷軟件股份有限公司 版本管理系統以及版本管理方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070113225A1 (en) * 2005-10-11 2007-05-17 Bea Systems, Inc. Patch management system
CN101042645A (zh) * 2007-01-17 2007-09-26 北京立通无限科技有限公司 统一软件开发环境的方法、设备及系统
CN103677876A (zh) * 2012-09-12 2014-03-26 中兴通讯股份有限公司 一种软件安装包制作安装方法、设备及系统
EP2784665A1 (en) * 2013-03-28 2014-10-01 Fujitsu Limited Program and version control method
CN105094851A (zh) * 2015-09-06 2015-11-25 浪潮软件股份有限公司 一种基于Git随时发布代码的实现方法
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
CN106484447A (zh) * 2015-08-28 2017-03-08 中兴通讯股份有限公司 一种更新数据包的制作方法及装置
CN106547548A (zh) * 2016-10-19 2017-03-29 青岛海信电器股份有限公司 一种软件版本的编译方法和装置
CN106815052A (zh) * 2017-01-10 2017-06-09 南威软件股份有限公司 一种适配多环境配置的快速部署系统的方法
CN106886410A (zh) * 2017-01-06 2017-06-23 深圳云天励飞技术有限公司 一种软件版本管理系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070113225A1 (en) * 2005-10-11 2007-05-17 Bea Systems, Inc. Patch management system
CN101042645A (zh) * 2007-01-17 2007-09-26 北京立通无限科技有限公司 统一软件开发环境的方法、设备及系统
CN103677876A (zh) * 2012-09-12 2014-03-26 中兴通讯股份有限公司 一种软件安装包制作安装方法、设备及系统
EP2784665A1 (en) * 2013-03-28 2014-10-01 Fujitsu Limited Program and version control method
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
CN106484447A (zh) * 2015-08-28 2017-03-08 中兴通讯股份有限公司 一种更新数据包的制作方法及装置
CN105094851A (zh) * 2015-09-06 2015-11-25 浪潮软件股份有限公司 一种基于Git随时发布代码的实现方法
CN106547548A (zh) * 2016-10-19 2017-03-29 青岛海信电器股份有限公司 一种软件版本的编译方法和装置
CN106886410A (zh) * 2017-01-06 2017-06-23 深圳云天励飞技术有限公司 一种软件版本管理系统
CN106815052A (zh) * 2017-01-10 2017-06-09 南威软件股份有限公司 一种适配多环境配置的快速部署系统的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
IRENA TRAJKOVSKA等: ""SDN-based service function chaining mechanism and service prototype implementation in NFV scenario"", 《COMPUTER STANDARDS & INTERFACES》, vol. 54, 20 January 2017 (2017-01-20), pages 247 - 265, XP085017923, DOI: 10.1016/j.csi.2017.01.002 *
王星: ""兼容OVAL规范的多平台补丁管理系统的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》, no. 08, 15 August 2008 (2008-08-15), pages 138 - 236 *
王飞: ""基于Docker的研发部署管理平台的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》, no. 09, 15 September 2015 (2015-09-15), pages 138 - 291 *
赖建华 等: ""IaaS环境下云主机安全配置基线设计"", 《情报探索》, no. 01, 15 January 2017 (2017-01-15), pages 88 - 92 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389773A (zh) * 2018-04-23 2019-10-29 比亚迪股份有限公司 软件发布及部署方法、装置及系统
CN109086362A (zh) * 2018-07-19 2018-12-25 北京首汽智行科技有限公司 多模块项目的管理方法
CN109101267A (zh) * 2018-07-31 2018-12-28 上海携程金融信息服务有限公司 应用发布管理方法、装置、电子设备、存储介质
CN109189400A (zh) * 2018-08-07 2019-01-11 北京趣拿软件科技有限公司 程序发布方法及装置、存储介质、处理器
CN109298880A (zh) * 2018-08-09 2019-02-01 恒生电子股份有限公司 多版本代码生成方法、设备及电子设备
CN109032592A (zh) * 2018-08-23 2018-12-18 常熟市盛铭信息技术有限公司 一种软件代码互相共享的方法
CN109144548A (zh) * 2018-08-27 2019-01-04 杭州安恒信息技术股份有限公司 一种基于git实现的多组件软件升级方法、装置及服务器
CN109254778A (zh) * 2018-08-31 2019-01-22 百度在线网络技术(北京)有限公司 用于部署信息流系统的方法和装置
CN109254778B (zh) * 2018-08-31 2020-06-16 百度在线网络技术(北京)有限公司 用于部署信息流系统的方法和装置
CN109558121B (zh) * 2018-11-26 2022-03-11 上海达梦数据库有限公司 接口驱动程序的开发方法、装置、设备及存储介质
CN109558121A (zh) * 2018-11-26 2019-04-02 上海达梦数据库有限公司 接口驱动程序的开发方法、装置、设备及存储介质
CN110209396A (zh) * 2019-05-29 2019-09-06 惠州Tcl移动通信有限公司 一对多的软件版本控制系统及方法
CN110209396B (zh) * 2019-05-29 2023-07-18 惠州Tcl移动通信有限公司 一对多的软件版本控制系统及方法
CN110348219A (zh) * 2019-06-13 2019-10-18 晶晨半导体(上海)股份有限公司 版本比对方法、系统、计算机设备及可读存储介质
CN110321254A (zh) * 2019-07-09 2019-10-11 西安点告网络科技有限公司 软件版本回滚方法、装置、服务器及存储介质
CN110321254B (zh) * 2019-07-09 2021-09-17 西安点告网络科技有限公司 软件版本回滚方法、装置、服务器及存储介质
CN110377334A (zh) * 2019-07-25 2019-10-25 北京奇艺世纪科技有限公司 持续集成方法及设备
CN110413299A (zh) * 2019-07-26 2019-11-05 成都天锐星通科技有限公司 一种fpga内置代码版本加载方法及电子设备
CN110968507A (zh) * 2019-11-20 2020-04-07 北京创鑫旅程网络技术有限公司 覆盖率统计方法及装置
CN110968507B (zh) * 2019-11-20 2023-07-25 北京创鑫旅程网络技术有限公司 覆盖率统计方法及装置
CN111078256A (zh) * 2019-12-20 2020-04-28 广州品唯软件有限公司 自动化测试环境的升级方法、终端及可读存储介质
CN111078256B (zh) * 2019-12-20 2024-02-02 广州品唯软件有限公司 自动化测试环境的升级方法、终端及可读存储介质
CN113535219A (zh) * 2020-04-15 2021-10-22 武汉斗鱼鱼乐网络科技有限公司 一种app信息发布方法、装置、介质及计算机设备
CN113535219B (zh) * 2020-04-15 2023-12-01 北京世标认证中心有限公司 一种app信息发布方法、装置、介质及计算机设备
CN111628938A (zh) * 2020-05-26 2020-09-04 北京字节跳动网络技术有限公司 分支合并的方法、装置、电子设备及计算机存储介质
CN111782239B (zh) * 2020-06-03 2023-07-11 中移(杭州)信息技术有限公司 软件打包和源码版本信息获取方法、装置及存储介质
CN111782239A (zh) * 2020-06-03 2020-10-16 中移(杭州)信息技术有限公司 软件打包和源码版本信息获取方法、装置及存储介质
CN113900680A (zh) * 2020-07-06 2022-01-07 中国移动通信集团重庆有限公司 代码管理方法、装置及计算设备
CN112148272A (zh) * 2020-09-25 2020-12-29 百度在线网络技术(北京)有限公司 工程组件化开发中配置共享的方法、装置、设备及介质
CN113448614A (zh) * 2021-06-29 2021-09-28 北京金山云网络技术有限公司 软件项目代码管理方法、装置、存储介质和电子设备
CN114217847A (zh) * 2021-12-23 2022-03-22 四川启睿克科技有限公司 一种同一环境中多版本的配置添加保存方法
TWI828181B (zh) * 2022-04-12 2024-01-01 大陸商鼎捷軟件股份有限公司 版本管理系統以及版本管理方法
CN114706611A (zh) * 2022-04-19 2022-07-05 广域铭岛数字科技有限公司 一种版本管理方法、系统、电子设备及介质
CN115599399A (zh) * 2022-11-30 2023-01-13 广东省科技基础条件平台中心(Cn) 一种应用程序部署方法、装置及存储介质

Also Published As

Publication number Publication date
CN107908421B (zh) 2022-06-24

Similar Documents

Publication Publication Date Title
CN107908421A (zh) 软件代码版本管理与发布的方法及装置
US7127712B1 (en) System and method for providing a java code release infrastructure with granular code patching
CN103955363B (zh) 一种程序升级安装包的制作方法
CN105893094B (zh) 应用程序插件化的实现方法和装置
US8365164B1 (en) Portable software applications
CN105867978B (zh) Ogg版本部署方法和系统
US9483284B2 (en) Version compatibility determination
JP5663006B2 (ja) ランタイム環境を構築するためのシステムおよび方法
US9542175B2 (en) Continuous deployment
CN106250178A (zh) 通过多语言云编译实现系统动态功能在线拦截扩展的方法
CN108614701B (zh) 一种Linux操作系统定制方法及装置
EP2107458A1 (en) Modelling software appliance
CN106293808A (zh) 多语言云编译实现系统功能动态拦截扩展的方法及系统
CN106302753A (zh) 客户端程序增量更新的方法及系统
CN108388445B (zh) 一种基于“平台+应用”模式的持续集成方法
US20070250575A1 (en) Deployment
US9442708B1 (en) System and method for installing, updating and uninstalling applications
CN106293863A (zh) 多语言云编译实现系统功能动态扩展替换的方法及系统
CN104918114B (zh) 一种操作系统升级方法及装置
CN102929716B (zh) 一种启动多进程的方法
CN107515766A (zh) 数据库部署文件的生成方法、部署安装方法及装置
CN104133699B (zh) 设备系统软件升级方法与系统
US10621524B2 (en) Exporting hierarchical data from a source code management (SCM) system to a product lifecycle management (PLM) system
US11226812B2 (en) Managing an update of a software module in a layered filesystem
CN105389187A (zh) 一种系统更新的方法

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