CN111666081A - 基于Git的项目版本发布方法、装置、设备及介质 - Google Patents

基于Git的项目版本发布方法、装置、设备及介质 Download PDF

Info

Publication number
CN111666081A
CN111666081A CN202010366362.8A CN202010366362A CN111666081A CN 111666081 A CN111666081 A CN 111666081A CN 202010366362 A CN202010366362 A CN 202010366362A CN 111666081 A CN111666081 A CN 111666081A
Authority
CN
China
Prior art keywords
file
version
target server
initial
instruction
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
CN202010366362.8A
Other languages
English (en)
Other versions
CN111666081B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN202010366362.8A priority Critical patent/CN111666081B/zh
Priority to PCT/CN2020/099527 priority patent/WO2021217868A1/zh
Publication of CN111666081A publication Critical patent/CN111666081A/zh
Application granted granted Critical
Publication of CN111666081B publication Critical patent/CN111666081B/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/143Reconfiguring to eliminate the error with loss of software functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于Git的项目版本发布方法、装置、设备及介质,所述方法包括:接收到项目版本创建发布指令,获取创建发布文件包;创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;将初始版本文件存储至Git本地仓库和推送至Git中央仓库;向第一目标服务器发送含有初始版本号的版本初始指令;接收到第一目标服务器的第一拉取指令之后,通过Git中央仓库,按照第一传输方式向第一目标服务器传输初始版本文件;根据初始部署命令文件,将初始版本文件安装至第一目标服务器;接收到所有安装成功指令之后,确定创建发布文件包发布成功。本发明实现了基于Git分布式控制***自动配置目标服务器的环境,提高了效率,减少了成本。

Description

基于Git的项目版本发布方法、装置、设备及介质
技术领域
本发明涉及分布式部署领域,尤其涉及一种基于Git的项目版本发布方法、装置、计算机设备及存储介质。
背景技术
目前,在项目开发领域,从项目测试到项目上线,项目开发人员或者项目委托方会针对项目提出不同的需求,因此,往往会出现多个项目版本,在现有技术中,通常基于svn(subversion,是一个开放源代码的版本控制***)单一主干集中式的发布***,以如下方式实现对多个项目版本的管理:所有开发人员在一个svn仓库的相同主干上进行开发,测试人员在同一个测试环境进行测试验证,最终手动将所修改的文件增量部署上线。现有技术方案的不足之处在于:首先,开发和测试阶段无法实现代码远程共享至多台目标服务器,且测试人员只能在同一个配置文件的环境下进行测试验证;其次,在将项目版本部署上线时,极容易出现文件漏发布和夹带发布问题,并且部署上线时只有代码进行了部署,而配置文件则需要人工对每台目标服务器进行部署;同时,部署上线后出现异常时回滚至历史版本的操作复杂。
发明内容
本发明提供一种基于Git的项目版本发布方法、装置、计算机设备及存储介质,实现了基于Git分布式控制***自动配置目标服务器的环境,提高了效率,大大较少了人工配置成本,减少了运营成本,极大缩短了项目版本发布时间。
一种基于Git的项目版本发布方法,包括:
接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;
将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;
向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;
接收到所述第一目标服务器反馈的针对所述版本初始指令包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;
根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;
接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
一种基于Git的项目版本发布装置,包括:
接收模块,用于接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;
存储模块,用于将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;
发送模块,用于向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;
传输模块,用于接收到所述第一目标服务器反馈的针对所述版本初始指令包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;
安装模块,用于根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;
确定模块,用于接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于Git的项目版本发布方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于Git的项目版本发布方法的步骤。
本发明通过获取创建发布文件包,将所述创建发布文件包中的所述初始版本文件存储至Git本地仓库,同时推送至Git中央仓库,向所有第一目标服务器发送含有初始版本号的版本初始指令,接收到所述第一目标服务器针对所述版本初始指令反馈的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输所述初始版本文件,在部署过程中,根据初始部署命令文件,通过非交互式对话方式将所述初始文件安装至所述第一目标服务器,接收到所有已反馈第一拉取指令的所述第一目标服务器发送的安装成功指令之后,从而确定所述创建发布文件包发布成功,实现了基于Git分布式控制***通过第一传输方式发布初始代码文件和初始配置文件,根据初始部署文件通过非交互式对话方式完成准确地传输至目标服务器的初始代码文件和初始配置文件的自动安装,从而实现基于Git分布式控制***自动配置目标服务器的环境,提高了效率,大大较少了人工配置成本,减少了运营成本,极大缩短了项目版本发布时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中基于Git的项目版本发布方法的应用环境示意图;
图2是本发明一实施例中基于Git的项目版本发布方法的流程图;
图3是本发明一实施例中基于Git的项目版本发布方法的步骤S60的流程图;
图4是本发明一实施例中基于Git的项目版本发布方法的步骤S120的流程图;
图5是本发明一实施例中基于Git的项目版本发布方法的步骤S40的流程图;
图6是本发明一实施例中基于Git的项目版本发布方法的步骤S100的流程图;
图7是本发明一实施例中基于Git的项目版本发布方法的步骤S110的流程图;
图8是本发明一实施例中基于Git的项目版本发布装置的原理框图;
图9是本发明一实施例中基于Git的项目版本发布装置中的确定模块16的原理框图;
图10是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的基于Git的项目版本发布方法,可应用在如图1的应用环境中,其中,客户端(计算机设备)通过网络与服务器进行通信。其中,客户端(计算机设备)包括但不限于为各种个人计算机、笔记本电脑、智能手机、平板电脑、摄像头和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种基于Git的项目版本发布方法,其技术方案主要包括以下步骤S10-S60:
S10,接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件。
可理解地,本发明的应用场景可以为网页上操作,也可以为在应用程序上操作,在一实施例中,通过应用网页界面,用户按照网页模板要求上传相关的文件,即按照设定的网页模板的顺序要求依次上传相关的文件,所述应用网页界面指通过网页实现应用操作的界面;在接收到已确定的所有与项目版本相关的文件之后,触发所述项目版本创建发布指令,所述项目版本为需要发布的项目对应的版本,从而将所有与所述项目版本相关的文件根据预设的初始模板进行合并,即将所有与所述项目版本相关的文件按照所述初始模板的要求进行拆分及合并,所述初始模板指第一次发布项目对应的模板,并且根据预设的初始压缩参数进行压缩生成所述创建发布文件包,所述初始压缩参数可以根据需求进行设定,比如所述初始压缩参数为转换成rar格式的参数,或者所述初始压缩参数为转换成zip格式的参数等等,以及将压缩之后的所述创建发布文件包上传至云端服务器;通过所述云端服务器接收到所述创建发布文件包之后,对所述创建发布文件包进行解压,从而获取所述创建发布文件包中包含的所述初始版本号、与所述初始版本号关联的所述初始版本文件和与所述初始版本号关联的初始部署作业文件,如此通过对所述创建发布文件包进行压缩上传至云端服务器,再解压获取所述创建发布文件包,能够通过云端服务器接收多个压缩的所述创建发布文件包,对多个压缩的所述创建发布文件包进行中转和备份,能够避免了获取多个所述创建发布文件包过程中丢失的风险。
其中,所述初始版本文件包含所述初始代码文件和所述初始配置文件,所述初始代码文件为项目初始版本的源代码文件,所述初始配置文件为运行所述初始代码文件所需配置的运行环境相关的文件,所述初始部署作业文件包含有所述第一IP地址集合和所述初始部署命令文件,所述第一IP地址集合为所有需要将所述初始版本文件发布至的目标服务器对应的IP地址的集合。
S20,将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库。
可理解地,所述Git本地仓库为基于Git分布式控制***进行设定的存储仓库,所述Git分布式控制***为基于Git建立的包括Git本地仓库和Git中央仓库的***,所述Git本地仓库可以接受用户上传或更新的项目版本文件和版本记录并进行存储,所述Git中央仓库为基于Git分布式控制***进行设定的暂存仓库,所述Git中央仓库为接收所述Git本地仓库推送过来的所述初始版本文件,并进行暂存。
S30,向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令。
可理解地,所述第一目标服务器为与所述第一IP地址一致的目标服务器,所述第一IP地址为所述第一IP地址集合中的元素,向所有所述第一目标服务器发送所述版本初始指令,所述版本初始指令为针对于发布初始版本文件的指令,所述版本初始指令可以根据需求进行设定,比如根据Docker容器管理工具提供的初始指令模板生成版本初始指令等,所述版本初始指令包括所述初始版本号。
S40,接收到所述第一目标服务器针对所述版本初始指令反馈的包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器。
可理解地,所述第一目标服务器接收到所述版本初始指令之后,所述第一目标服务器针对所述版本初始指令在所述第一目标服务器内部进行检测,在未检测出包含任何与所述初始版本号相关的文件时,所述第一目标服务器反馈所述第一拉取指令,表明所述第一目标服务器需要拉取所述初始版本文件,所述第一传输方式为直接推送文件至所述第一目标服务器,通过所述Git中央仓库,按照所述第一传输方式向所述第一目标服务器传输所述初始版本文件。
在一实施例中,如图5所示,所述步骤S40中,即所述通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件,包括:
S401,通过所述Git中央仓库向所述第一目标服务器传输所述初始版本文件。
可理解地,所述传输方式可以根据需求进行设定,比如通过SSH(Secure Shell,安全外壳协议)方式将所述Git中央仓库与所述第一目标服务器进行连接,连接之后向所述第一目标服务器传输所述初始版本文件,所述SSH方式为通过SSH协议,基于非对称加密方法生成公钥和私钥,通过密码认证或公钥认证建立通信连接,保证信息交互的安全和完整。
S402,接收到所述第一目标服务器创建与所述初始版本号关联的本地Git文件之后反馈的创建成功指令。
可理解地,通过所述Git中央仓库向所述第一目标服务器传输所述初始版本文件,所述第一目标服务器接收到所述初始版本文件后在本地创建与所述初始版本号关联的本地Git文件,标记所述第一目标服务器含有与所述初始版本号相关的文件,同时反馈所述创建成功指令。
S50,根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器。
可理解地,所述初始部署命令文件为所有执行部署流程中的根据所述第一目标服务器在部署过程中反馈的过程指令对应的指导命令指令的集合,所述非交互式对话方式为无需人工与目标服务器进行交互对话进行执行命令指令,直接自动根据一问一答的对应关系执行相应的命令指令,通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器,如此,无需人工在所述第一目标服务器进行手动配置,实现了自动安装初始配置文件和初始代码文件。
S60,接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
可理解地,已反馈所述第一拉取指令的所述第一目标服务器安装完成所述初始配置文件和初始代码文件之后触发所述安装成功指令,接收到所有已反馈所述第一拉取指令的所述第一目标服务器反馈的所述安装成功指令之后,确认所述创建发布文件包发布成功。
本发明通过接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;接收到所述第一目标服务器针对所述版本初始指令反馈的包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
如此,本发明实现了通过获取创建发布文件包,将所述创建发布文件包中的所述初始版本文件存储至Git本地仓库,同时推送至Git中央仓库,向所有第一目标服务器发送含有初始版本号的版本初始指令,接收到所述第一目标服务器针对所述版本初始指令反馈的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输所述初始版本文件,在部署过程中,根据初始部署命令文件,通过非交互式对话方式将所述初始文件安装至所述第一目标服务器,接收到所有已反馈第一拉取指令的所述第一目标服务器发送的安装成功指令之后,从而确定所述创建发布文件包发布成功,实现了基于Git分布式控制***通过第一传输方式发布初始代码文件和初始配置文件,根据初始部署文件通过非交互式对话方式完成准确地传输至目标服务器的初始代码文件和初始配置文件的自动安装,从而实现基于Git分布式控制***自动配置目标服务器的环境,提高了效率,大大较少了人工配置成本,减少了运营成本,极大缩短了项目版本发布时间。
在一实施例中,如图3所示,所述步骤S60之后,即所述确定所述创建发布文件包发布成功之后,包括:
S70,接收到项目版本更新发布指令,获取更新发布文件包;所述更新发布文件包中包括相互关联的更新版本号、分支版本文件和更新部署文件;所述分支版本文件包括更新代码文件和更新配置文件;所述更新部署文件中包含第二IP地址集合和更新部署命令文件。
可理解地,在项目开发过程中有更新的版本需要发布时,优先地,通过所述应用网页界面,用户按照网页模板要求上传相关的需更新的文件,即按照设定的网页模板的顺序要求依次上传相关的需更新的文件;在接收到已确定的所有与项目更新版本相关的文件之后,触发所述项目版本更新发布指令,所述项目更新版本为对发布的项目进行更新升级对应的版本,从而将所有与所述项目更新版本相关的文件根据预设的更新模板进行合并,即将所有与所述项目更新版本相关的文件按照所述更新模板的要求进行拆分及合并,所述更新模板指与更新升级已经发布过的项目进行对应的模板,并且根据预设的更新压缩参数进行压缩生成所述创建发布文件包,所述更新压缩参数可以根据需求进行设定,比如所述更新压缩参数为转换成rar格式的参数,或者所述更新压缩参数为转换成zip格式的参数等等,其中,所述更新压缩参数与所述初始压缩参数可以一致,亦可以不一致,以及将压缩之后的所述更新发布文件包上传至所述云端服务器;通过所述云端服务器接收到所述更新发布文件包之后,对所述更新发布文件包进行解压,从而获取所述更新发布文件包中包含的所述更新版本号、与所述更新版本号关联的所述分支版本文件和与所述更新版本号关联的更新部署文件,如此通过对所述更新发布文件包进行压缩上传至云端服务器,再解压获取所述更新发布文件包,能够通过云端服务器接收多个压缩的所述更新发布文件包,对多个压缩的所述更新发布文件包进行中转和备份,能够避免了获取多个所述更新发布文件包过程中丢失的风险。
其中,所述分支版本文件包含所述更新代码文件和所述更新配置文件,所述更新代码文件为所述项目更新版本对应的源代码文件,所述更新配置文件为运行所述更新代码文件所需配置的运行环境相关的文件,所述更新部署作业文件包含有所述第二IP地址集合和所述更新部署命令文件,所述第二IP地址集合为所有需要将所述分支版本文件发布至的目标服务器对应的IP地址的集合。
S80,将所述分支版本文件存储至所述Git本地仓库,同时将所述分支版本文件推送至所述Git中央仓库。
可理解地,所述Git本地仓库为基于Git分布式控制***进行设定的存储仓库,所述Git分布式控制***为基于Git建立的包括Git本地仓库和Git中央仓库的***,所述Git本地仓库可以接受用户上传或更新的项目版本文件和版本记录并进行存储,所述Git中央仓库为基于Git分布式控制***进行设定的暂存仓库,所述Git中央仓库为接收所述Git本地仓库推送过来的所述分支版本文件,并进行暂存。
S90,向所有与所述第二IP地址集合中的第二IP地址匹配的第二目标服务器发送含有所述分支版本号的版本更新指令。
可理解地,所述第二目标服务器为与所述第二IP地址一致的目标服务器,所述第二IP地址为所述第二IP地址集合中的元素,向所有所述第二目标服务器发送所述版本更新指令,所述版本更新指令为针对于发布分支版本文件的指令,所述版本更新指令可以根据需求进行设定,比如根据Docker容器管理工具提供的更新指令模板生成版本更新指令等,所述版本更新指令包括所述更新版本号,所述第二IP地址集合中可能存在与所述第二IP地址相同的第一IP地址,也可能存在与所述第一IP地址集合中的所有第一IP地址都不相同的第二IP地址。
S100,接收到所述第二目标服务器针对所述版本更新指令反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件;所述第二传输方式为根据所述第二拉取指令中与所述分支版本号关联的本地Git文件,确定与所述第二目标服务器对应的差异文件,并将与所述第二目标服务器对应的差异文件传输至所述第二目标服务器。
可理解地,所述第二目标服务器接收到所述版本更新指令之后,所述第二目标服务器针对所述版本更新指令在所述第二目标服务器内部进行检测,所述第二目标服务器反馈所述第二拉取指令,所述第二传输方式为根据所述第二拉取指令中与所述分支版本号关联的本地Git文件,所述与所述分支版本号关联的本地Git文件为存储在所述第二目标服务器内部的以体现各文件夹之间关联关系的Git文件夹目录格式记录的文件,确定与所述第二目标服务器对应的差异文件,并将与所述第二目标服务器对应的差异文件传输至所述第二目标服务器,即在所述第二目标服务器检测到未包含任何与所述分支版本号关联的本地Git文件,则反馈无与所述分支版本号关联的本地Git文件的第二拉取指令,根据所述第二拉取指令确定该第二目标服务器需要拉取整个所述分支版本文件,从而将所述分支版本文件发送至该第二目标服务器;在所述第二目标服务器检测到本地含有与所述分支版本号关联的本地Git文件与所述分支版本号关联的本地Git文件,即通过与所述分支版本号的匹配度确定出与所述分支版本号关联的本地Git文件,则反馈含有与所述分支版本号关联的本地Git文件的第二拉取指令,将接收到的所述与所述分支版本号关联的本地Git文件跟所述分支版本文件进行比对,获取所述与所述分支版本号关联的本地Git文件跟所述分支版本文件比对后的差异文件,从而确定为该第二目标服务器对应的差异文件,所述第二目标服务器对应的差异文件包括代码差异文件和配置差异文件,所述代码差异文件为所述与所述分支版本号关联的本地Git文件中的代码文件与所述分支版本文件中的更新代码文件之间的差异内容的文件,所述配置差异文件为所述与所述分支版本号关联的本地Git文件中的配置文件与所述分支版本文件中的更新配置文件之间的差异内容的文件,将该第二目标服务器对应的差异文件传输至该第二目标服务器。
在一实施例中,如图6所示,所述步骤S100中,即所述接收到所述第二目标服务器针对所述版本更新指令反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件,包括:
S1001,接收到所述第二目标服务器根据所述分支版本号而确定与所述分支版本号关联的本地Git文件之后发送的所述第二拉取指令;
可理解地,所述第二目标服务器根据所述分支版本号在本地进行查找与所述分支版本号匹配的相关的本地Git文件,根据查询结果确定所述第二拉取指令,即在所述第二目标服务器检测到未包含任何与所述分支版本号关联的本地Git文件,则反馈无与所述分支版本号关联的本地Git文件的第二拉取指令;在所述第二目标服务器检测到本地含有与所述分支版本号关联的本地Git文件,则反馈含有与所述分支版本号关联的本地Git文件的第二拉取指令。
S1002,通过所述Git中央仓库中的Git工具对所述本地Git文件与所述分支版本文件进行比对,得出与所述第二目标服务器对应的差异文件;
可理解地,所述Git工具为所述Git中央仓库中的一种针对Git文件的比对工具,将所述分支版本文件进行转换成与所述分支版本文件对应的Git文件,将所述本地Git文件与所述分支版本文件对应的Git文件输入所述Git工具进行比对,得出与所述第二目标服务器对应的所述差异文件,所述差异文件为所述本地Git文件与所述分支版本文件对应的Git文件之间存在差异内容的文件。
S1003,通过所述Git中央仓库将所述第二目标服务器对应的差异文件传输至所述第二目标服务器之后,接收到所述第二目标服务器更新所述初始版本号关联的本地Git文件之后反馈的更新成功指令。
可理解地,通过所述Git中央仓库将所述差异文件传输至所述第二目标服务器,在此之后,所述第二目标服务器将接收到的所述差异文件更新至与所述初始版本号关联的本地Git文件,即将所述差异文件中与所述初始版本号关联的所述本地Git文件相同名称的所述差异文件覆盖所述本地Git文件,将所述差异文件中与所述初始版本号关联的所述本地Git文件不同名称的所述差异文件直接存储至所述初始版本号关联的所述本地Git文件的存储路径下,所述第二目标服务器更新完成之后反馈所述更新成功指令,所述更新成功指令指所述第二目标服务器对所述差异文件更新完成之后触发的指令。
如此,本发明通过基于Git分布式控制***传输差异的文件内容,可以减少传输内容,提高传输效率,减少了信息丢失风险。
S110,根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器。
可理解地,所述更新部署命令文件为所有执行更新部署流程中的根据所述第二目标服务器在更新部署过程中反馈的更新过程指令对应的更新指导命令指令的集合,所述非交互式对话方式为无需人工与目标服务器进行交互对话进行执行命令指令,直接自动根据一问一答的对应关系执行相应的命令指令,通过非交互式对话方式将所述分支版本文件安装至所述第二目标服务器,如此,无需人工在所述第二目标服务器进行手动配置,实现了自动安装更新配置文件和更新代码文件。
在一实施例中,如图7所示,所述步骤S110中,即所述根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器,包括:
S1101,接收到所述第二目标服务器接收所述分支版本文件完成之后发出的传输完成指令,发送所述更新部署命令文件中的停止指令和部署指令至所述第二目标服务器。
可理解地,所述第二目标服务器确认接收完所述分支版本文件之后触发所述传输完成指令,接收到所述传输完成指令之后,向所述第二目标服务器顺次发送所述停止指令和所述部署指令,所述停止指令为所述更新部署命令文件中停止所述第二目标服务器中运行与所述初始版本号关联的所述本地Git文件的指令,所述部署指令为所述更新部署命令文件中执行所述分支版本文件在所述第二目标服务器中部署操作相关的指令。
S1102,在接收到所述第二目标服务器在执行所述停止指令和所述部署指令过程中反馈的异常指令时,自所述更新部署命令文件中查找与所述异常指令匹配的修复指令,并将所述修复指令发送至所述第二目标服务器以完成更新过程,直至接收到所述第二目标服务器反馈的完成指令。
可理解地,在所述第二目标服务器在执行所述停止指令和所述部署指令过程中存在异常情况时,比如异常情况为宕机,反馈与所述异常情况对应的所述异常指令,比如所述异常指令为与宕机对应的指令,接收到所述异常指令之后,从所述更新部署命令文件中查找与所述异常指令匹配的修复指令,将所述修复指令发送至所述第二目标服务器,比如所述修复指令为针对解决宕机对应的重启服务器的指令等等,所述更新过程指执行所述停止指令和所述部署指令的过程,直至接收到所述第二目标服务器反馈所述完成指令,所述完成指令为所述第二目标服务器完成更新过程之后触发的指令。
S1103,在接收到所述第二目标服务器完成所有所述部署指令之后反馈的完成指令时,发送所述更新部署命令文件中的启动指令至所述第二目标服务器,确认所述分支版本文件更新至所述第二目标服务器。
可理解地,在接收到所述第二目标服务器反馈的所述完成指令时,发送所述启动指令至所述第二目标服务器,所述启动指令为所述更新部署命令文件中与启动所述分支版本文件相关的指令,确定所述分支版本文件已经更新至所述第二目标服务器。
如此,本发明通过与所述第二目标服务器进行非交互式对话方式完成所述第二目标服务器在部署流程中无需人工进行手动配置,实现了自动更新所述分支版本文件中的所述更新代码文件和更新配置文件,大大减少了人工操作,提高了项目版本发布的效率,减少了运营成本。
S120,接收到所有已反馈所述第二拉取指令的所述第二目标服务器发送的更新成功指令之后,确定所述更新发布文件包发布成功。
可理解地,已反馈所述第二拉取指令的所述第二目标服务器安装完成所述分支版本文件之后触发所述更新成功指令,接收到所有已反馈所述第二拉取指令的所述第二目标服务器反馈的所述更新成功指令之后,确认所述更新发布文件包发布成功。
如此,本发明实现了通过获取更新发布文件包,将所述更新发布文件包中的所述分支版本文件存储至Git本地仓库,同时推送至Git中央仓库,向所有第二目标服务器发送含有更新版本号的版本更新指令,接收到所述第二目标服务器反馈的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输所述更新版本文件,在部署过程中,根据更新部署命令文件,通过非交互式对话方式将所述更新文件安装至所述第二目标服务器,接收到所有已反馈第二拉取指令的所述第二目标服务器发送的更新成功指令之后,从而确定所述更新发布文件包发布成功,实现了基于Git分布式控制***通过第二传输方式发布更新代码文件和更新配置文件,根据更新部署文件通过非交互式对话方式完成传输至多个目标服务器的更新代码文件和更新配置文件的自动更新,从而实现自动对目标服务器进行配置与更新版本号对应的环境,提高了效率,减少了运营成本,极大缩短了项目版本发布时间。
在一实施例中,如图4所示,所述步骤S120之后,即所述确定所述更新发布文件包发布成功之后,包括:
S130,接收到项目版本回滚发布指令,获取回滚发布文件包;所述回滚发布文件包中包括回滚版本号和回滚部署作业文件;所述回滚部署作业文件包含第三IP地址集合和回滚部署命令文件。
可理解地,在所述更新发布文件包发布成功之后发现运行过程中存在异常,需要回退到历史的某一个的版本号,或者根据需求需回退到历史的某一个的版本号,就需要在所述应用网页界面中在所有的历史的版本号中选取回滚版本号,所述回滚版本号为所述初始版本号和所有历史的所述更新版本号(即除当前的所述更新版本号以外)之中的其中一个,并输入回滚部署作业文件,所述回滚部署作业文件包含所述第三IP地址集合和回滚部署命令文件,所述第三IP地址集合可以根据需要进行设定,比如所述第三IP地址集合与所述第二IP地址集合相同。
S140,自所述Git本地仓库中查询并获取与所述回滚版本号一致的版本号关联的版本文件。
可理解地,所述Git本地仓库存储所有项目版本的版本号以及与版本号相关联的版本文件,所述版本号包括所述初始版本号和至少一个所述更新版本号,所述版本文件包括所述初始版本文件和至少一个所述更新版本文件,所述版本号与所述版本文件一一关联,即所述初始版本号与所述初始版本文件关联,所述更新版本号与所述更新版本文件关联。
S150,将与所述回滚版本号一致的版本号关联的版本文件推送至所述Git中央仓库。
可理解地,将获取的与所述回滚版本号一致的版本号关联的所述版本文件推送至所述Git中央仓库。
S160,向所有与所述第三IP地址集合中的第三IP地址匹配的第三目标服务器发送含有所述回滚版本号的版本回滚指令。
可理解地,所述第三目标服务器为与所述第三IP地址一致的目标服务器,所述第三IP地址为所述第三IP地址集合中的元素,向所有所述第三目标服务器发送所述版本回滚指令,所述版本回滚指令为对已经发布过的所述第二目标服务器发布回滚至历史的项目版本的指令,所述版本初始指令可以根据需求进行设定,比如根据Docker容器管理工具提供的回滚指令模板生成版本回滚指令等,所述版本初始指令包括所述回滚版本号,所述第三IP地址集合可以与所述第二IP地址集合相同。
S170,接收到所述第三目标服务器针对所述版本回滚指令反馈的包含有所述回滚版本号的第三拉取指令之后,通过所述Git中央仓库,按照第三传输方式向所述第三目标服务器传输与所述第三目标服务器对应的差异文件;所述第三传输方式还为根据所述第三拉取指令中与所述回滚版本号关联的本地Git文件,确定与所述第三目标服务器对应的差异文件,并将与所述第三目标服务器对应的差异文件传输至所述第三目标服务器。
可理解地,所述第三目标服务器接收到所述版本回滚指令之后,所述第三目标服务器针对所述版本回滚指令在所述第三目标服务器内部进行检测,所述第三目标服务器反馈所述第三拉取指令,所述第三传输方式为根据所述第三拉取指令中与所述回滚版本号关联的本地Git文件,所述与所述回滚版本号关联的本地Git文件为存储在所述第三目标服务器内部的以体现各文件夹之间关联关系的Git文件夹目录格式记录的文件,确定与所述第三目标服务器对应的差异文件,并将与所述第三目标服务器对应的差异文件传输至所述第三目标服务器,即在所述第三目标服务器检测到未包含任何与所述回滚版本号关联的本地Git文件,则反馈无与所述回滚版本号关联的本地Git文件的第三拉取指令,根据所述第三拉取指令确定该第三目标服务器需要拉取整个与所述回滚版本号一致的版本号关联的版本文件,从而将与所述回滚版本号一致的版本号关联的版本文件发送至该第三目标服务器;在所述第三目标服务器检测到本地含有与所述回滚版本号关联的本地Git文件,即通过与所述分支版本号的匹配度确定出与所述回滚版本号关联的本地Git文件,则反馈含有所述本地Git文件的第三拉取指令,将接收到的与所述回滚版本号关联的本地Git文件跟获取的所述版本文件件进行比对,获取与所述回滚版本号关联的本地Git文件跟获取的所述版本文件比对后的差异文件,从而确定为该第三目标服务器对应的差异文件,所述第三目标服务器对应的差异文件。
S180,根据所述回滚部署命令文件,与所述第三目标服务器通过非交互式对话方式将所述版本文件回滚至所述第三目标服务器。
可理解地,所述回滚部署命令文件为所有执行回滚部署流程中的根据所述第三目标服务器在回滚部署过程中反馈的回滚过程指令对应的回滚指导命令指令的集合,所述非交互式对话方式为无需人工与目标服务器进行交互对话进行执行命令指令,直接自动根据一问一答的对应关系执行相应的命令指令,通过非交互式对话方式将与所述回滚版本号一致的版本号关联的版本文件安装至所述第三目标服务器,如此,无需人工在所述第三目标服务器进行手动配置,实现了自动安装与所述回滚版本号一致的版本号关联的版本文件。
S190,接收到所有已反馈所述第三拉取指令的所述第三目标服务器发送的回滚成功指令之后,确定所述回滚发布文件包发布成功。
可理解地,已反馈所述第三拉取指令的所述第三目标服务器安装完成与所述回滚版本号一致的版本号关联的版本文件之后触发所述回滚成功指令,接收到所有已反馈所述第三拉取指令的所述第三目标服务器反馈的所述回滚成功指令之后,确认所述回滚发布文件包发布成功。
如此,本发明实现了通过获取回滚版本号自Git本地仓库查询并获取版本文件,基于Git分布式控制***通过第三传输方式发布与回滚版本号关联的版本文件,根据回滚部署文件通过非交互式对话方式完成传输至多个目标服务器的版本文件的自动回滚,从而实现自动对目标服务器进行配置与回滚版本号对应的环境,在项目版本发布后出现异常的情况下,快速回滚至历史版本,减少了运营成本。
在一实施例中,提供一种基于Git的项目版本发布装置,该基于Git的项目版本发布装置与上述实施例中基于Git的项目版本发布方法一一对应。如图8所示,该基于Git的项目版本发布装置包括接收模块11、存储模块12、发送模块13、传输模块14、安装模块15和确定模块16。各功能模块详细说明如下:
接收模块11,用于接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;
存储模块12,用于将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;
发送模块13,用于向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;
传输模块14,用于接收到所述第一目标服务器针对所述版本初始指令反馈的包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;
安装模块15,用于根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;
确定模块16,用于接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
在一实施例中,如图9所示,所述确定模块16包括:
接收单元61,用于接收到项目版本更新发布指令,获取更新发布文件包;所述更新发布文件包中包括相互关联的更新版本号、分支版本文件和更新部署文件;所述分支版本文件包括更新代码文件和更新配置文件;所述更新部署文件中包含第二IP地址集合和更新部署命令文件;
存储单元62,用于将所述分支版本文件存储至所述Git本地仓库,同时将所述分支版本文件推送至所述Git中央仓库;
发送单元63,用于向所有与所述第二IP地址集合中的第二IP地址匹配的第二目标服务器发送含有所述分支版本号的版本更新指令;
传输单元64,用于接收到所述第二目标服务器针对所述版本更新指令反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件;所述第二传输方式为根据所述第二拉取指令中与所述分支版本号关联的本地Git文件,确定与所述第二目标服务器对应的差异文件,并将与所述第二目标服务器对应的差异文件传输至所述第二目标服务器;
更新单元65,用于根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器;
确定单元66,用于接收到所有已反馈所述第二拉取指令的所述第二目标服务器发送的更新成功指令之后,确定所述更新发布文件包发布成功。
在一实施例中,所述确定单元66包括:
第一接收子单元,用于接收到项目版本回滚发布指令,获取回滚发布文件包;所述回滚发布文件包中包括回滚版本号和回滚部署作业文件;所述回滚部署作业文件包含第三IP地址集合和回滚部署命令文件;
查询子单元,用于自所述Git本地仓库中查询并获取与所述回滚版本号一致的版本号关联的版本文件;
推送子单元,用于将与所述回滚版本号一致的版本号关联的版本文件推送至所述Git中央仓库;
发送子单元,用于向所有与所述第三IP地址集合中的第三IP地址匹配的第三目标服务器发送含有所述回滚版本号的版本回滚指令;
第一传输子单元,用于接收到所述第三目标服务器针对所述版本回滚指令反馈的包含有所述回滚版本号的第三拉取指令之后,通过所述Git中央仓库,按照第三传输方式向所述第三目标服务器传输与所述第三目标服务器对应的差异文件;所述第三传输方式还为根据所述第三拉取指令中与所述回滚版本号关联的本地Git文件,确定与所述第三目标服务器对应的差异文件,并将与所述第三目标服务器对应的差异文件传输至所述第三目标服务器;
回滚子单元,用于根据所述回滚部署命令文件,与所述第三目标服务器通过非交互式对话方式将所述版本文件回滚至所述第三目标服务器;
确定子单元,用于接收到所有已反馈所述第三拉取指令的所述第三目标服务器发送的回滚成功指令之后,确定所述回滚发布文件包发布成功。在一实施例中,所述传输模块14包括:
传送单元,用于通过所述Git中央仓库向所述第一目标服务器传输所述初始版本文件;
反馈单元,用于接收到所述第一目标服务器创建与所述初始版本号关联的本地Git文件之后反馈的创建成功指令。
在一实施例中,所述传输单元64包括:
第二接收子单元,用于接收到所述第二目标服务器根据所述分支版本号而确定与所述分支版本相关的本地Git文件之后发送的所述第二拉取指令;
比对子单元,用于通过所述Git中央仓库中的Git工具对所述本地Git文件与所述分支版本文件进行比对,得出与所述第二目标服务器对应的差异文件;
第二传输子单元,用于通过所述Git中央仓库将所述第二目标服务器对应的差异文件传输至所述第二目标服务器之后,接收到所述第二目标服务器更新所述初始版本号关联的本地Git文件之后反馈的更新成功指令。
在一实施例中,所述更新单元65包括:
第三接收子单元,用于接收到所述第二目标服务器接收所述分支版本文件完成之后发出的传输完成指令,发送所述更新部署命令文件中的停止指令和部署指令至所述第二目标服务器;
执行更新子单元,用于在接收到所述第二目标服务器在执行所述停止指令和所述部署指令过程中反馈的异常指令时,自所述更新部署命令文件中查找与所述异常指令匹配的修复指令,并将所述修复指令发送至所述第二目标服务器以完成更新过程,直至接收到所述第二目标服务器反馈的完成指令;
完成更新子单元,用于在接收到所述第二目标服务器完成所有所述部署指令之后反馈的完成指令时,发送所述更新部署命令文件中的启动指令至所述第二目标服务器,确认所述分支版本文件更新至所述第二目标服务器。
关于基于Git的项目版本发布装置的具体限定可以参见上文中对于基于Git的项目版本发布方法的限定,在此不再赘述。上述基于Git的项目版本发布装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Git的项目版本发布方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中基于Git的项目版本发布方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中基于Git的项目版本发布方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于Git的项目版本发布方法,其特征在于,包括:
接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;
将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;
向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;
接收到所述第一目标服务器针对所述版本初始指令反馈的包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;
根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;
接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
2.如权利要求1所述的基于Git的项目版本发布方法,其特征在于,所述确定所述创建发布文件包发布成功之后,包括:
接收到项目版本更新发布指令,获取更新发布文件包;所述更新发布文件包中包括相互关联的更新版本号、分支版本文件和更新部署文件;所述分支版本文件包括更新代码文件和更新配置文件;所述更新部署文件中包含第二IP地址集合和更新部署命令文件;
将所述分支版本文件存储至所述Git本地仓库,同时将所述分支版本文件推送至所述Git中央仓库;
向所有与所述第二IP地址集合中的第二IP地址匹配的第二目标服务器发送含有所述分支版本号的版本更新指令;
接收到所述第二目标服务器针对所述版本更新指令反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件;所述第二传输方式为根据所述第二拉取指令中与所述分支版本号关联的本地Git文件,确定与所述第二目标服务器对应的差异文件,并将与所述第二目标服务器对应的差异文件传输至所述第二目标服务器;
根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器;
接收到所有已反馈所述第二拉取指令的所述第二目标服务器发送的更新成功指令之后,确定所述更新发布文件包发布成功。
3.如权利要求2所述的基于Git的项目版本发布方法,其特征在于,所述确定所述更新发布文件包发布成功之后,包括:
接收到项目版本回滚发布指令,获取回滚发布文件包;所述回滚发布文件包中包括回滚版本号和回滚部署作业文件;所述回滚部署作业文件包含第三IP地址集合和回滚部署命令文件;
自所述Git本地仓库中查询并获取与所述回滚版本号一致的版本号关联的版本文件;
将与所述回滚版本号一致的版本号关联的版本文件推送至所述Git中央仓库;
向所有与所述第三IP地址集合中的第三IP地址匹配的第三目标服务器发送含有所述回滚版本号的版本回滚指令;
接收到所述第三目标服务器针对所述版本回滚指令反馈的包含有所述回滚版本号的第三拉取指令之后,通过所述Git中央仓库,按照第三传输方式向所述第三目标服务器传输与所述第三目标服务器对应的差异文件;所述第三传输方式还为根据所述第三拉取指令中与所述回滚版本号关联的本地Git文件,确定与所述第三目标服务器对应的差异文件,并将与所述第三目标服务器对应的差异文件传输至所述第三目标服务器;
根据所述回滚部署命令文件,与所述第三目标服务器通过非交互式对话方式将所述版本文件回滚至所述第三目标服务器;
接收到所有已反馈所述第三拉取指令的所述第三目标服务器发送的回滚成功指令之后,确定所述回滚发布文件包发布成功。
4.如权利要求1所述的基于Git的项目版本发布方法,其特征在于,所述通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件,包括:
通过所述Git中央仓库向所述第一目标服务器传输所述初始版本文件;
接收到所述第一目标服务器创建与所述初始版本号关联的本地Git文件之后反馈的创建成功指令。
5.如权利要求2所述的基于Git的项目版本发布方法,其特征在于,所述接收到所述第二目标服务器反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件,包括:
接收到所述第二目标服务器根据所述分支版本号而确定与所述分支版本相关的本地Git文件之后发送的所述第二拉取指令;
通过所述Git中央仓库中的Git工具对所述本地Git文件与所述分支版本文件进行比对,得出与所述第二目标服务器对应的差异文件;
通过所述Git中央仓库将所述第二目标服务器对应的差异文件传输至所述第二目标服务器之后,接收到所述第二目标服务器更新所述初始版本号关联的本地Git文件之后反馈的更新成功指令。
6.如权利要求2所述的基于Git的项目版本发布方法,其特征在于,所述根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器,包括:
接收到所述第二目标服务器接收所述分支版本文件完成之后发出的传输完成指令,发送所述更新部署命令文件中的停止指令和部署指令至所述第二目标服务器;
在接收到所述第二目标服务器在执行所述停止指令和所述部署指令过程中反馈的异常指令时,自所述更新部署命令文件中查找与所述异常指令匹配的修复指令,并将所述修复指令发送至所述第二目标服务器以完成更新过程,直至接收到所述第二目标服务器反馈的完成指令;
在接收到所述第二目标服务器完成所有所述部署指令之后反馈的完成指令时,发送所述更新部署命令文件中的启动指令至所述第二目标服务器,确认所述分支版本文件更新至所述第二目标服务器。
7.一种基于Git的项目版本发布装置,其特征在于,包括:
接收模块,用于接收到项目版本创建发布指令,获取创建发布文件包;所述创建发布文件包中包括相互关联的初始版本号、初始版本文件和初始部署作业文件;所述初始版本文件包括初始代码文件和初始配置文件;所述初始部署作业文件中包含第一IP地址集合和初始部署命令文件;
存储模块,用于将所述初始版本文件存储至Git本地仓库,同时将所述初始版本文件推送至Git中央仓库;
发送模块,用于向所有与所述第一IP地址集合中的第一IP地址匹配的第一目标服务器发送含有所述初始版本号的版本初始指令;
传输模块,用于接收到所述第一目标服务器针对所述版本初始指令反馈的包含所述初始版本号的第一拉取指令之后,通过所述Git中央仓库,按照第一传输方式向所述第一目标服务器传输与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件;所述第一传输方式为将与所述第一拉取指令中包含的所述初始版本号关联的所述初始版本文件直接传输至所述第一目标服务器;
安装模块,用于根据所述初始部署命令文件,与所述第一目标服务器通过非交互式对话方式将所述初始版本文件安装至所述第一目标服务器;
确定模块,用于接收到所有已反馈所述第一拉取指令的所述第一目标服务器发送的安装成功指令之后,确定所述创建发布文件包发布成功。
8.如权利要求7所述的基于Git的项目版本发布装置,其特征在于,包括:
接收单元,用于接收到项目版本更新发布指令,获取更新发布文件包;所述更新发布文件包中包括相互关联的更新版本号、分支版本文件和更新部署文件;所述分支版本文件包括更新代码文件和更新配置文件;所述更新部署文件中包含第二IP地址集合和更新部署命令文件;
存储单元,用于将所述分支版本文件存储至所述Git本地仓库,同时将所述分支版本文件推送至所述Git中央仓库;
发送单元,用于向所有与所述第二IP地址集合中的第二IP地址匹配的第二目标服务器发送含有所述分支版本号的版本更新指令;
传输单元,用于接收到所述第二目标服务器针对所述版本更新指令反馈的包含所述分支版本号的第二拉取指令之后,通过所述Git中央仓库,按照第二传输方式向所述第二目标服务器传输与所述第二目标服务器对应的差异文件;所述第二传输方式为根据所述第二拉取指令中与所述分支版本号关联的本地Git文件,确定与所述第二目标服务器对应的差异文件,并将与所述第二目标服务器对应的差异文件传输至所述第二目标服务器;
更新单元,用于根据所述更新部署命令文件,与所述第二目标服务器通过非交互式对话方式将接收到的所述分支版本文件更新至所述第二目标服务器;
确定单元,用于接收到所有已反馈所述第二拉取指令的所述第二目标服务器发送的更新成功指令之后,确定所述更新发布文件包发布成功。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述基于Git的项目版本发布方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于Git的项目版本发布方法。
CN202010366362.8A 2020-04-30 2020-04-30 基于Git的项目版本发布方法、装置、设备及介质 Active CN111666081B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010366362.8A CN111666081B (zh) 2020-04-30 2020-04-30 基于Git的项目版本发布方法、装置、设备及介质
PCT/CN2020/099527 WO2021217868A1 (zh) 2020-04-30 2020-06-30 基于Git的项目版本发布方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010366362.8A CN111666081B (zh) 2020-04-30 2020-04-30 基于Git的项目版本发布方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN111666081A true CN111666081A (zh) 2020-09-15
CN111666081B CN111666081B (zh) 2024-04-05

Family

ID=72383134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010366362.8A Active CN111666081B (zh) 2020-04-30 2020-04-30 基于Git的项目版本发布方法、装置、设备及介质

Country Status (2)

Country Link
CN (1) CN111666081B (zh)
WO (1) WO2021217868A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650724A (zh) * 2020-12-25 2021-04-13 中国工商银行股份有限公司 文档文件的处理方法、***、计算设备和介质
CN112882747A (zh) * 2021-01-29 2021-06-01 北京思特奇信息技术股份有限公司 一种界面化发布程序的方法及***
CN113672277A (zh) * 2021-07-27 2021-11-19 上海浦东发展银行股份有限公司 代码同步方法、***、计算机设备和存储介质
CN114385759A (zh) * 2022-01-13 2022-04-22 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质
CN114416109A (zh) * 2021-12-15 2022-04-29 广州市玄武无线科技股份有限公司 程序部署方法及其装置、计算机设备、存储介质
CN115390912A (zh) * 2022-10-26 2022-11-25 深圳高灯计算机科技有限公司 资源发现方法、装置、计算机设备和存储介质
CN115795485A (zh) * 2023-02-07 2023-03-14 山东可信云信息技术研究院 可信云环境下安全交付软件方法、***、设备及存储介质
CN117055947A (zh) * 2023-08-17 2023-11-14 广东科伺智能科技有限公司 二进制项目文件的版本控制方法、装置、存储介质及设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114465887B (zh) * 2021-12-23 2024-01-23 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置
CN115408047B (zh) * 2022-08-11 2023-07-25 北京大氪信息科技有限公司 一种版本发布方法、装置及电子设备
CN115421775A (zh) * 2022-09-06 2022-12-02 中国建设银行股份有限公司 数据处理方法、装置及电子设备、存储介质
CN115576573B (zh) * 2022-10-26 2024-03-12 杭州谐云科技有限公司 一种基于信创环境的交付方法及***
CN116192878B (zh) * 2023-04-27 2023-07-18 北京微吼时代科技有限公司 一种基于Git的配置同步方法及***
CN117270943A (zh) * 2023-09-15 2023-12-22 上海子虔科技有限公司 一种基于元数据的云端应用文件版本管理***及方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103067484A (zh) * 2012-12-25 2013-04-24 深圳市天维尔通讯技术有限公司 一种自动升级应用程序的方法和***
CN105094851A (zh) * 2015-09-06 2015-11-25 浪潮软件股份有限公司 一种基于Git随时发布代码的实现方法
CN106445488A (zh) * 2016-07-01 2017-02-22 厦门易名科技股份有限公司 一种代码发布及回退的方法
CN106708509A (zh) * 2016-11-28 2017-05-24 上海宝尊电子商务有限公司 自动化软件项目开发全链路配置管理***
CN107404520A (zh) * 2017-07-20 2017-11-28 郑州云海信息技术有限公司 一种基于云管理平台的管理方法及***
CN108170469A (zh) * 2017-12-20 2018-06-15 南京邮电大学 一种基于代码提交历史的Git仓库相似性检测方法
CN109086071A (zh) * 2018-08-22 2018-12-25 平安普惠企业管理有限公司 一种管理软件版本信息的方法及服务器
CN109144548A (zh) * 2018-08-27 2019-01-04 杭州安恒信息技术股份有限公司 一种基于git实现的多组件软件升级方法、装置及服务器
CN109522025A (zh) * 2018-10-30 2019-03-26 深圳市小赢信息技术有限责任公司 一种基于git的代码发布***
CN109683951A (zh) * 2018-12-21 2019-04-26 北京量子保科技有限公司 一种代码自动发布方法、***、介质和电子设备
CN109684203A (zh) * 2018-11-27 2019-04-26 平安科技(深圳)有限公司 程序运行参数配置方法、装置、计算机设备及存储介质
CN109725911A (zh) * 2017-10-31 2019-05-07 北京国双科技有限公司 一种多环境项目部署方法、装置、存储介质及处理器
US20190227794A1 (en) * 2018-01-25 2019-07-25 Walmart Apollo, Llc Systems and methods for real time version control for integrating updated web-based components with a native application

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103067484A (zh) * 2012-12-25 2013-04-24 深圳市天维尔通讯技术有限公司 一种自动升级应用程序的方法和***
CN105094851A (zh) * 2015-09-06 2015-11-25 浪潮软件股份有限公司 一种基于Git随时发布代码的实现方法
CN106445488A (zh) * 2016-07-01 2017-02-22 厦门易名科技股份有限公司 一种代码发布及回退的方法
CN106708509A (zh) * 2016-11-28 2017-05-24 上海宝尊电子商务有限公司 自动化软件项目开发全链路配置管理***
CN107404520A (zh) * 2017-07-20 2017-11-28 郑州云海信息技术有限公司 一种基于云管理平台的管理方法及***
CN109725911A (zh) * 2017-10-31 2019-05-07 北京国双科技有限公司 一种多环境项目部署方法、装置、存储介质及处理器
CN108170469A (zh) * 2017-12-20 2018-06-15 南京邮电大学 一种基于代码提交历史的Git仓库相似性检测方法
US20190227794A1 (en) * 2018-01-25 2019-07-25 Walmart Apollo, Llc Systems and methods for real time version control for integrating updated web-based components with a native application
CN109086071A (zh) * 2018-08-22 2018-12-25 平安普惠企业管理有限公司 一种管理软件版本信息的方法及服务器
CN109144548A (zh) * 2018-08-27 2019-01-04 杭州安恒信息技术股份有限公司 一种基于git实现的多组件软件升级方法、装置及服务器
CN109522025A (zh) * 2018-10-30 2019-03-26 深圳市小赢信息技术有限责任公司 一种基于git的代码发布***
CN109684203A (zh) * 2018-11-27 2019-04-26 平安科技(深圳)有限公司 程序运行参数配置方法、装置、计算机设备及存储介质
CN109683951A (zh) * 2018-12-21 2019-04-26 北京量子保科技有限公司 一种代码自动发布方法、***、介质和电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
侯效永;李良伟;孙召;宋春雨;杨昊;韩霄松;: "基于Git的代码托管平台JLUCODE", 计算机时代, no. 12, 15 December 2016 (2016-12-15), pages 36 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650724A (zh) * 2020-12-25 2021-04-13 中国工商银行股份有限公司 文档文件的处理方法、***、计算设备和介质
CN112882747A (zh) * 2021-01-29 2021-06-01 北京思特奇信息技术股份有限公司 一种界面化发布程序的方法及***
CN112882747B (zh) * 2021-01-29 2024-04-05 北京思特奇信息技术股份有限公司 一种界面化发布程序的方法及***
CN113672277A (zh) * 2021-07-27 2021-11-19 上海浦东发展银行股份有限公司 代码同步方法、***、计算机设备和存储介质
CN113672277B (zh) * 2021-07-27 2024-04-30 上海浦东发展银行股份有限公司 代码同步方法、***、计算机设备和存储介质
CN114416109A (zh) * 2021-12-15 2022-04-29 广州市玄武无线科技股份有限公司 程序部署方法及其装置、计算机设备、存储介质
CN114385759A (zh) * 2022-01-13 2022-04-22 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质
CN114385759B (zh) * 2022-01-13 2024-04-16 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质
CN115390912A (zh) * 2022-10-26 2022-11-25 深圳高灯计算机科技有限公司 资源发现方法、装置、计算机设备和存储介质
CN115795485A (zh) * 2023-02-07 2023-03-14 山东可信云信息技术研究院 可信云环境下安全交付软件方法、***、设备及存储介质
CN117055947A (zh) * 2023-08-17 2023-11-14 广东科伺智能科技有限公司 二进制项目文件的版本控制方法、装置、存储介质及设备

Also Published As

Publication number Publication date
CN111666081B (zh) 2024-04-05
WO2021217868A1 (zh) 2021-11-04

Similar Documents

Publication Publication Date Title
CN111666081B (zh) 基于Git的项目版本发布方法、装置、设备及介质
CN109032611B (zh) 脚本部署方法、装置、计算机设备及存储介质
CN107562513B (zh) 一种基于java的智能合约生命周期的管理方法
US9021462B2 (en) Systems and methods for provisioning equipment
CN111198744A (zh) 自动化应用程序容器化和镜像备份发布的方法
CN109542767B (zh) 基于区块链的自动化测试方法、装置、计算机设备和存储介质
CN111666080A (zh) 微服务集群部署方法、装置、计算机设备及存储介质
CN111866149A (zh) 集群部署方法、装置、计算机设备及存储介质
CN110633160A (zh) 接口调用方法、装置、计算机设备和存储介质
CN113590169B (zh) 应用部署方法、应用部署***和计算机可读存储介质
CN112631614A (zh) 应用部署方法、装置、计算机设备和存储介质
CN112860778A (zh) 桌面应用程序的数据库管理方法、装置、设备和介质
CN113835713A (zh) 源码包下载方法、装置、计算机设备和存储介质
CN115269399A (zh) 设备稳定性测试方法、装置和计算机设备和存储介质
CN111580927A (zh) 通信的方法及容器通信***
EP4130982A1 (en) Network-based solution module deployment platform
CN112685102B (zh) 一种网关插件热加载方法、装置、设备及介质
CN112181785B (zh) 一种自动添加监控设备的方法、终端及存储介质
CN114003486A (zh) 一种插件调试方法、客户端、服务器及存储介质
CN114077458A (zh) 应用程序内业务模块启动方法、装置、设备和存储介质
CN112711430A (zh) 基于adb的非网络设备升级方法、***及可读存储介质
CN113315795A (zh) 云主机镜像的同步方法、装置和存储介质
CN111930411A (zh) 代码升级方法、装置、计算机设备和存储介质
CN112698855A (zh) 线上自动化部署服务器升级方法
CN112463304A (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