CN112379918B - 代码发布方法、装置、计算机设备和存储介质 - Google Patents
代码发布方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112379918B CN112379918B CN202011401246.1A CN202011401246A CN112379918B CN 112379918 B CN112379918 B CN 112379918B CN 202011401246 A CN202011401246 A CN 202011401246A CN 112379918 B CN112379918 B CN 112379918B
- Authority
- CN
- China
- Prior art keywords
- branch
- online
- release
- code
- executable
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000004806 packaging method and process Methods 0.000 claims abstract description 19
- 238000010276 construction Methods 0.000 claims description 94
- 238000012795 verification Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 26
- 238000011161 development Methods 0.000 claims description 22
- 230000001960 triggered effect Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种代码发布方法、装置、计算机设备和存储介质。所述方法包括:构建待发布的上线分支;对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码;根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布;获取预发布的预发布状态;当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。该方法提高上线代码安全性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种代码发布方法、装置、计算机设备和存储介质。
背景技术
互联网的发展过程中,单独一套部署环境已满足不了用户的需求,例如除了正式的线上环境外,需要有小流量的灰度、提供给业务和产品验收的UAT环境(用户验收测试)等。同时结合互联网快速、多版本的迭代,就需要有安全稳定的分支管理和上线校验方案,确保线上代码的稳定性和不被覆盖。
在现有情况下,只能实现单独的线上代码的校验和分支管理,涉及到多套环境时,只能依靠规范和人工来实现,存在很高的不确定性和易错性,导致上线代码的安全性低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高上线代码安全性的代码发布方法、装置、计算机设备和存储介质。
一种代码发布方法,所述方法包括:
构建待发布的上线分支;
对所述上线分支进行校验,当校验通过时,对所述上线分支进行编译,得到可执行的分支代码;
根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取所述预发布的预发布状态;
当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
在其中一个实施例中,所述构建待发布的上线分支,包括:
接收构建界面触发的构建指令;所述构建指令携带构建分支标识和上线类型;
根据所述构建分支标识和上线类型构建待发布的上线分支。
在其中一个实施例中,所述对所述上线分支进行校验,包括:
获取上次构建的历史分支的历史发布状态;
当所述历史发布状态为已发布状态时,检测所述构建分支标识对应的构建分支是否为所述上线类型对应的主干分支;
若是,更新所述上线分支的状态为受保护状态,则校验通过。
在其中一个实施例中,所述根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布,包括:
获取所述上线分支的上线类型和在时间窗口上的上线时间;
当所述上线类型为预设类型时,根据所述上线时间检测所述上线分支是否落后对应的主干;
当所述上线分支不落后对应的主干时,检测所述可执行的分支代码是否被更新;
当所述可执行的分支代码未被更新时,对所述可执行的分支代码进行打包完成预发布。
在其中一个实施例中,所述方法还包括:
当所述上线类型为预设类型且所述分支落后对应的主干时,将所述上线分支的分支代码与所述主干的主干代码进行合并,执行所述构建预发布的分支代码步骤。
在其中一个实施例中,所述方法还包括:
当所述上线类型不为预设类型时,根据所述上线时间检测所述上线分支是否落后对应的主干分支;
当所述上线分支不落后所述主干分支且不落后于对应的主干时,执行所述检测所述可执行的分支代码是否被更新步骤。
在其中一个实施例中,所述方法还包括:
删除所述分支代码,并生成所述分支代码的标签。
一种代码发布装置,所述装置包括:
构建模块,用于构建待发布的上线分支;
校验模块,用于对所述上线分支进行校验,当校验通过时,对所述上线分支进行编译,得到可执行的分支代码;
预发布模块,用于根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取模块,用于获取所述预发布的预发布状态;
发布模块,用于当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
构建待发布的上线分支;
对所述上线分支进行校验,当校验通过时,对所述上线分支进行编译,得到可执行的分支代码;
根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取所述预发布的预发布状态;
当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
构建待发布的上线分支;
对所述上线分支进行校验,当校验通过时,对所述上线分支进行编译,得到可执行的分支代码;
根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取所述预发布的预发布状态;
当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
上述代码发布方法、装置、计算机设备和存储介质,通过构建待上线分支的分支代码,对分支代码进行校验后进行编译得到可执行的分支代码;通过根据分支代码的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布,根据预发布的预发布状态,将可执行的分支代码合并到对应的主干代码中,完成分支代码的发布;即通过构建、预发布、发布,依次进行构建前校验、构建发布产物、分支校验、发布完成后进行分支准确性校验和分支合并,提高了上线代码的安全性。
附图说明
图1为一个实施例中代码发布方法的应用环境图;
图2为一个实施例中分支构建方法的流程示意图;
图3为一个实施例上线分支预发布的流程示意图;
图4为一个实施例中上线分支发布的流程示意图;
图5为另一个实施例中代码发布方法的流程示意图;
图6为一个实施例中代码发布的示意图;
图7为一个实施例中代码发布装置的结构框图;
图8为另一个实施例中代码发布装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种代码发布方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的***,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤102,构建待发布的上线分支。
其中,上线分支是指产品或***业务功能在正式发布之前,在上线***的开发分支进行开发创建得到的分支。上线分支存在对的分支标识和上线类型,上线类型是在构建时,根据开发环境决定的。
具体地,终端接收构建分支界面触发的构建指令,当接收到构建指令时,检测上线***中上次构建的历史分支是否已经发布且将历史分支代码合并到对应主干中,若上次构建的历史分支已经发布且历史分支的分支代码已合并至对应得主干中,根据构建指令携带的上线类型和分支标识对应的构建分支构建待发布的上线分支,得到上线分支的代码;若上次构建的历史分支未发布,则使接收的构建指令为无效的构建指令。
步骤104,对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码。
具体地,根据构建指令携带的分支标识和上线类型,检测分支标识对应的构建分支的类型是否为上线类型对应的主干分支,当选择的构建分支的类型为上线类型的主干分支时,则将构建预发布的上线分支属性状态设置为保护状态,并确定该上线分支的上线方式为采用主干分支进行上线;对上线分支的代码进行编译,得到部署产物(例如,可执行的分支代码、可执行代码块等,其中,编译可以通过编译环境中的编译脚本(例如,php、go、C++、java等多种语言的编译环境)进行编译;可执行代码块可以但不仅限于是exe文件和jar文件)。
步骤106,根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布。
具体地,对上线分支进行编译,得到可执行的分支代码;通过上线***内部API接口获取构建状态,当构建状态为构建成功状态时,获取上线分支的上线类型;根据上线类型确定待发布的上线分支的类型为普通类型时,检测上线分支的上线时间是否落后该上线类型对应的主干,若不落后该上线类型对应的主干时,且提交的可执行代码与未编译之前的代码相同时,则确认该上线分支可以进行预发布,选取构建得到可执行的分支代码进行部署,即上线完成,其中,对应的主干可以是用户验收测试(例如,uat环境),对应的主干分支为uat-master,主干分支uat-master的代码和uat主干部署的代码完全一致。
步骤108,获取预发布的预发布状态。
具体地,检测到可执行的分支代码上线完成之后,接收终端发布界面触发的发布指令并获取可执行的分支代码的预发布状态,检测可执行的分支代码的预发布是否成功。
步骤110,当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。
具体地,根据获取的预发布状态,确定可执行的分支代码上线成功,在发布可执行的分支代码时,对比发布时和构建时的代码没有相同,即不存在新分支,将可执行的分支代码合并至对应的主干中,完成上线分支的发布并删除开发分支以及生成开发分支的标签,将生成的标签存储在数据库中;当接收到查询指令时,根据查询指令携带的标签可以对已发布的上线分支的开发分支进行查询。
上述代码发布方法中,通过构建待上线分支的分支代码,对分支代码进行校验后进行编译得到可执行的分支代码;通过根据分支代码的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布,根据预发布的预发布状态,将可执行的分支代码合并到对应的主干代码中,完成分支代码的发布;即通过构建、预发布、发布,依次进行构建前校验、构建发布产物、分支校验、发布完成后进行分支准确性校验和分支合并,提高了上线代码的安全性。
在一个实施例中,如图2所示,提供了一种分支构建方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,接收构建界面触发的构建指令;构建指令携带构建的分支标识和上线类型。
步骤204,根据构建分支标识和上线类型构建待发布的上线分支。
步骤206,获取上次构建的历史分支的历史发布状态。
步骤208,当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支。
步骤210,若是,更新上线分支的状态为受保护状态,则校验通过,对上线分支进行编译,得到可执行的分支代码。
上述分支构建方法中,通过构建指令携带构建分支标识和上线类型,根据构建分支标识和上线类型构建待发布的上线分支;获取上次构建的历史分支的历史发布状态;当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支进行校验,当校验通过,对上线分支进行编译,得到可执行的分支代码;即根据选择的不同上线类型进行不同校验,对待发布的不同上线分支进行校验,校验通过之后进行预发布,确保线上代码的稳定性和不被覆盖。
在一个实施例中,如图3所示,提供了一种上线分支预发布方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤302,获取上线分支的上线类型和在时间窗口上的上线时间。
步骤304,判断上线类型是否为预设类型,若是,执行步骤306,否则执行步骤308。
其中,预设类型为普通上线类型。
具体地,终端检测到上线分支进行编译,得到可执行的分支代码,通过上线***内部API接口获取构建状态,当构建状态为构建成功状态时,获取上线分支的上线类型;检测待发布的上线分支的上线类型是是否为普通类型,如果为普通类型,获取上线分支的上线类型和在时间窗口上的上线时间,根据上线类型和上线时间判断待发布的上线分支是否落后该上线类型对应的主干master。若待发布的上线分支的上线类型不为普通类型时,检测待发布的上线分支的上线时间是否落后于对应的主干分支。
步骤306,根据上线时间检测上线分支是否落后对应的主干,若否,执行步骤310。
步骤308,检测上线分支是否落后对应的主干分支,若否,执行步骤306。
其中,当待发布的上线分支的上线时间是不落后于对应的主干分支时,根据上线时间检测上线分支是否落后对应的主干,当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新;否则结束。
步骤310,当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新。
可选地,在一个实施例中,当上线代码的上线类型为预设类型且上线分支的上线时间落后对应的主干时,将上线分支的分支代码与主干的主干代码进行合并,并接收构建界面触发的构建指令;构建指令携带构建分支标识和上线类型;根据构建分支标识和上线类型构建待发布的上线分支,进行重新构建,当构建成功之后,对得到的可执行的分支代码进行预发布。
步骤312,当可执行的分支代码未被更新时,对可执行的分支代码进行打包完成预发布。
上述上线分支预发布方式中,在待发布的上线分支构建成功之后,通过判断上线类型是否为普通上线类型,对于不同类型的上线分支进行是否落后于对对应的主干进行检测,当不落后与对应的主干时,即线上最新的功能在对应的环境中不缺失,通过检测可执行的分支代码是否被更新,确保预发布的可执行分支代码与构建时的上线分支的分支代码一致,完成上线分支的分支代码上线。
在一个实施例中,如图4所示,提供了一种上线分支发布方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤402,获取预发布的预发布状态。
具体地,接收终端发布界面触发的发布指令并获取可执行的分支代码的预发布状态,对预发布的上线分支的上线状态进行检测,检测可执行的分支代码的预发布是否成功。
步骤404,当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干中,完成上线分支的发布。
具体地,当预发布的上线分支上线成功后,对比发布时和构建时的代码是否发生改变,若没有发生改变,则根据构建时确定上线类型判断此时发布的上线分支的类型是否为普通上线,若是,将分支代码通过gitlab api合并到对应主干master中,即完成上线分支的发布。
步骤406,删除上线分支对应的开发分支,并生成开发分支的分支标签。
上述上线分支发布方法中,在发布前通过上线***会回调构建系上上线状态,当上线成功后,通过确定当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干中,完成上线分支的发布,并删除上线分支对应的开发分支,并生成开发分支的分支标签,便于上线***回滚,实现历史数据查询。
在另一个实施例中,如图5所示,提供了一种代码发布方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤502,接收构建界面触发的构建指令;构建指令携带构建分支标识和上线类型。
步骤504,获取上次构建的历史分支的历史发布状态。
步骤506,当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支。
步骤508,若是,根据构建分支标识和上线类型构建待发布的上线分支。
步骤510,对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码。
步骤512,根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布。
具体地,获取上线分支的上线类型和在时间窗口上的上线时间;当上线类型为预设类型时,根据上线时间检测上线分支是否落后对应的主干;当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新;当可执行的分支代码未被更新时,对可执行的分支代码进行打包完成预发布。当上线类型为预设类型且上线分支落后对应的主干时,将上线分支的分支代码与主干的主干代码进行合并,执行构建预发布的分支代码步骤;当上线类型不为预设类型时,根据上线时间检测上线分支是否落后对应的主干分支;当上线分支不落后主干分支且不落后于对应的主干时,执行检测可执行的分支代码是否被更新步骤。
步骤514,获取预发布的预发布状态。
步骤516,当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。
步骤518,删除上线分支对应的开发分支,并生成开发分支的分支标签。
以下为一个实施例中,如图6所示,代码发布的应用场景图,现在有一个新的迭代产品D,需要先上线到uat环境中;待业务和产品验收通过后,再上线到生产,其代码发布过程包括图6中A、B两部分。
在dev中使用的分支D_B的开发分支进行开发,在开发完成后现在上线uat前,依据D_B分支创建上线uat分支D_B_uat(保留D_B用来上生产),在构建平台使用其分支D_B_uat,并且选择uat类型进行构建,构建时如果发现上一次构建预发布后,没有进行发布,需要先发布上一次构建,再重新打包。
构建完成后,选择本次构建,选择预发布,此时会将分支D_B_uat上的代码与uat对应的主干分支以及master进行比较,如果发现落后任意一个,都需要合并uat对应的主干分支或者master的代码到D_B_uat分支上,重新构建预发布;如果构建后,在分支D_B_uat上又有了新的提交,也会预发布失败,需要确认新的提交可以上线,重新构建然后预发布;构建失败也不允许预发布通过。
预发布完成后,在上线***选择待上线的版本号,上线完成后,回调构建发布***,通知上线完成,此时用户可以在该上线版本执行发布,此时保证发布时D_B_uat分支的提交与构建时一致,会将代码合并到uat的对应主干上、根据D_B_uat分支创建上线tag,并且删除上线分支D_B_uat。
上述代码发布方法中,通过获取上次构建的历史分支的历史发布状态,对上次构建的上线分支的历史发布状态进行检测,当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支为上线类型对应的主干分支时,根据构建分支标识和上线类型构建待发布的上线分支,对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码;对可执行的分支代码进行打包完成预发布,根据预发布的预发布状态,将可执行的分支代码合并到对应的主干代码中,完成分支代码的发布;即通过构建、预发布、发布,依次进行构建前校验、构建发布产物、分支校验、发布完成后进行分支准确性校验和分支合并,提高了上线代码的安全性。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种代码发布装置,包括:构建模块702、校验模块704、预发布模块706、获取模块708和发布模块710,其中:
构建模块702,用于构建待发布的上线分支。
校验模块704,用于对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码。
预发布模块706,用于根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布。
获取模块708,用于获取预发布的预发布状态。
发布模块710,用于当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。
上述代码发布装置中,通过构建待上线分支的分支代码,对分支代码进行校验后进行编译得到可执行的分支代码;通过根据分支代码的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布,根据预发布的预发布状态,将可执行的分支代码合并到对应的主干代码中,完成分支代码的发布;即通过构建、预发布、发布,依次进行构建前校验、构建发布产物、分支校验、发布完成后进行分支准确性校验和分支合并,提高了上线代码的安全性。
在另一个实施例中,如图7所示,提供了一种代码发布装置,除包括构建模块702、校验模块704、预发布模块706、获取模块708和发布模块710之外,还包括:接收模块712、检测模块714、合并模块716和删除模块718,其中:
接收模块712,用于接收构建界面触发的构建指令;构建指令携带构建分支标识和上线类型。
构建模块702还用于根据构建分支标识和上线类型构建待发布的上线分支。
获取模块708还用于获取上次构建的历史分支的历史发布状态。
检测模块714,用于对历史发布状态进行检测。
校验模块704还用于当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支;若是,更新上线分支的状态为受保护状态,则校验通过。
获取模块708还用于获取上线分支的上线类型和在时间窗口上的上线时间;
检测模块714还用于当上线类型为预设类型时,根据上线时间检测上线分支是否落后对应的主干;当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新。
预发布模块706还用于当可执行的分支代码未被更新时,对可执行的分支代码进行打包完成预发布。
合并模块716,用于当上线类型为预设类型且上线分支落后对应的主干时,将上线分支的分支代码与主干的主干代码进行合并,执行构建预发布的分支代码步骤。
检测模块714还用于当上线类型不为预设类型时,根据上线时间检测上线分支是否落后对应的主干分支;当上线分支不落后主干分支且不落后于对应的主干时,执行检测可执行的分支代码是否被更新步骤。
删除模块718,用于删除上线分支对应的开发分支,并生成开发分支的分支标签。
在一个实施例中,通过获取上次构建的历史分支的历史发布状态,对上次构建的上线分支的历史发布状态进行检测,当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支为上线类型对应的主干分支时,根据构建分支标识和上线类型构建待发布的上线分支,对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码;对可执行的分支代码进行打包完成预发布,根据预发布的预发布状态,将可执行的分支代码合并到对应的主干代码中,完成分支代码的发布;即通过构建、预发布、发布,依次进行构建前校验、构建发布产物、分支校验、发布完成后进行分支准确性校验和分支合并,提高了上线代码的安全性。
关于代码发布装置的具体限定可以参见上文中对于代码发布方法的限定,在此不再赘述。上述代码发布装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种代码方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
构建待发布的上线分支;
对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码;
根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布;
获取预发布的预发布状态;
当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收构建界面触发的构建指令;构建指令携带构建分支标识和上线类型;
根据构建分支标识和上线类型构建待发布的上线分支。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取上次构建的历史分支的历史发布状态;
对历史发布状态进行检测;
对上线分支进行校验,包括:
当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支;
若是,更新上线分支的状态为受保护状态,则校验通过。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取上线分支的上线类型和在时间窗口上的上线时间;
当上线类型为预设类型时,根据上线时间检测上线分支是否落后对应的主干;
当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新;
当可执行的分支代码未被更新时,对可执行的分支代码进行打包完成预发布。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当上线类型为预设类型且上线分支落后对应的主干时,将上线分支的分支代码与主干的主干代码进行合并,执行构建预发布的分支代码步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当上线类型不为预设类型时,根据上线时间检测上线分支是否落后对应的主干分支;
当上线分支不落后主干分支且不落后于对应的主干时,执行检测可执行的分支代码是否被更新步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
删除上线分支对应的开发分支,并生成开发分支的分支标签。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
构建待发布的上线分支;
对上线分支进行校验,当校验通过时,对上线分支进行编译,得到可执行的分支代码;
根据上线分支的上线类型和在时间窗口中的上线时间,对可执行的分支代码进行打包完成预发布;
获取预发布的预发布状态;
当预发布状态为预设发布状态时且不存在新分支,将可执行的分支代码合并到对应的主干代码中,完成上线分支的发布。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收构建界面触发的构建指令;构建指令携带构建分支标识和上线类型;
根据构建分支标识和上线类型构建待发布的上线分支。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取上次构建的历史分支的历史发布状态;
对历史发布状态进行检测;
对上线分支进行校验,包括:
当历史发布状态为已发布状态时,检测构建分支标识对应的构建分支是否为上线类型对应的主干分支;
若是,更新上线分支的状态为受保护状态,则校验通过。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取上线分支的上线类型和在时间窗口上的上线时间;
当上线类型为预设类型时,根据上线时间检测上线分支是否落后对应的主干;
当上线分支不落后对应的主干时,检测可执行的分支代码是否被更新;
当可执行的分支代码未被更新时,对可执行的分支代码进行打包完成预发布。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当上线类型为预设类型且上线分支落后对应的主干时,将上线分支的分支代码与主干的主干代码进行合并,执行构建预发布的分支代码步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当上线类型不为预设类型时,根据上线时间检测上线分支是否落后对应的主干分支;
当上线分支不落后主干分支且不落后于对应的主干时,执行检测可执行的分支代码是否被更新步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
删除上线分支对应的开发分支,并生成开发分支的分支标签。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种代码发布方法,其特征在于,所述方法包括:
根据构建指令携带的构建分支标识和上线类型,构建待发布的上线分支;
当上次构建的历史分支的历史发布状态为已发布状态时,检测所述构建分支标识对应的构建分支是否为所述上线类型对应的主干分支;若是,更新所述上线分支的状态为受保护状态,确定校验通过,对所述上线分支进行编译,得到可执行的分支代码;
根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取所述预发布的预发布状态;
当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
2.根据权利要求1所述的方法,其特征在于,在所述根据构建指令携带的构建分支标识和上线类型,构建待发布的上线分支之前,所述方法还包括:
接收构建界面触发的构建指令。
3.根据权利要求1所述的方法,其特征在于,在根据构建指令携带的构建分支标识和上线类型,构建待发布的上线分支之前,所述方法还包括:
获取上次构建的历史分支的历史发布状态;
对所述历史发布状态进行检测。
4.根据权利要求1所述的方法,其特征在于,所述根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布,包括:
获取所述上线分支的上线类型和在时间窗口上的上线时间;
当所述上线类型为预设类型时,根据所述上线时间检测所述上线分支是否落后对应的主干;
当所述上线分支不落后对应的主干时,检测所述可执行的分支代码是否被更新;
当所述可执行的分支代码未被更新时,对所述可执行的分支代码进行打包完成预发布。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述上线类型为预设类型且所述上线分支落后对应的主干时,将所述上线分支的分支代码与所述主干的主干代码进行合并,执行构建预发布的分支代码步骤。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述上线类型不为预设类型时,根据所述上线时间检测所述上线分支是否落后对应的主干分支;
当所述上线分支不落后所述主干分支且不落后于对应的主干时,执行所述检测所述可执行的分支代码是否被更新步骤。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
删除所述上线分支对应的开发分支,并生成所述开发分支的分支标签。
8.一种代码发布装置,其特征在于,所述装置包括:
构建模块,用于根据构建指令携带的构建分支标识和上线类型,构建待发布的上线分支;
校验模块,用于当上次构建的历史分支的历史发布状态为已发布状态时,检测所述构建分支标识对应的构建分支是否为所述上线类型对应的主干分支;若是,更新所述上线分支的状态为受保护状态,确定校验通过,对所述上线分支进行编译,得到可执行的分支代码;
预发布模块,用于根据所述上线分支的上线类型和在时间窗口中的上线时间,对所述可执行的分支代码进行打包完成预发布;
获取模块,用于获取所述预发布的预发布状态;
发布模块,用于当所述预发布状态为预设发布状态时且不存在新分支,将所述可执行的分支代码合并到对应的主干代码中,完成所述上线分支的发布。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011401246.1A CN112379918B (zh) | 2020-12-04 | 2020-12-04 | 代码发布方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011401246.1A CN112379918B (zh) | 2020-12-04 | 2020-12-04 | 代码发布方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379918A CN112379918A (zh) | 2021-02-19 |
CN112379918B true CN112379918B (zh) | 2024-04-19 |
Family
ID=74590947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011401246.1A Active CN112379918B (zh) | 2020-12-04 | 2020-12-04 | 代码发布方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379918B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471647A (zh) * | 2018-11-06 | 2019-03-15 | 北京字节跳动网络技术有限公司 | 一种数据的更新方法、装置、电子设备及可读介质 |
CN109522025A (zh) * | 2018-10-30 | 2019-03-26 | 深圳市小赢信息技术有限责任公司 | 一种基于git的代码发布*** |
CN109683912A (zh) * | 2018-12-29 | 2019-04-26 | 有米科技股份有限公司 | 软件集成与部署的方法、装置、服务器及存储介质 |
CN109814873A (zh) * | 2019-02-14 | 2019-05-28 | 北京顺丰同城科技有限公司 | 一种代码发布方法及装置 |
CN109905463A (zh) * | 2019-01-29 | 2019-06-18 | 北京海杭通讯科技有限公司 | 基于web应用多服务器自动发布的方法 |
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、***及装置 |
CN110413314A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 一种文件发布方法、装置、设备及存储介质 |
CN110865806A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、服务器及存储介质 |
CN111694599A (zh) * | 2020-06-11 | 2020-09-22 | 北京首汽智行科技有限公司 | 一种产品发布方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10025701B2 (en) * | 2016-05-16 | 2018-07-17 | Google Llc | Application pre-release report |
-
2020
- 2020-12-04 CN CN202011401246.1A patent/CN112379918B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522025A (zh) * | 2018-10-30 | 2019-03-26 | 深圳市小赢信息技术有限责任公司 | 一种基于git的代码发布*** |
CN109471647A (zh) * | 2018-11-06 | 2019-03-15 | 北京字节跳动网络技术有限公司 | 一种数据的更新方法、装置、电子设备及可读介质 |
CN109683912A (zh) * | 2018-12-29 | 2019-04-26 | 有米科技股份有限公司 | 软件集成与部署的方法、装置、服务器及存储介质 |
CN109905463A (zh) * | 2019-01-29 | 2019-06-18 | 北京海杭通讯科技有限公司 | 基于web应用多服务器自动发布的方法 |
CN109814873A (zh) * | 2019-02-14 | 2019-05-28 | 北京顺丰同城科技有限公司 | 一种代码发布方法及装置 |
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、***及装置 |
CN110413314A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 一种文件发布方法、装置、设备及存储介质 |
CN110865806A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、服务器及存储介质 |
CN111694599A (zh) * | 2020-06-11 | 2020-09-22 | 北京首汽智行科技有限公司 | 一种产品发布方法 |
Non-Patent Citations (1)
Title |
---|
基于Jenkins的持续集成***的设计与实现;黄创杰;《中国优秀硕士学位论文全文数据库信息科技辑》;20190115(第01期);I138-1388 * |
Also Published As
Publication number | Publication date |
---|---|
CN112379918A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10019256B2 (en) | Systems and methods for incremental software development | |
CN110058873B (zh) | 应用页面更新方法、装置、设备和存储介质 | |
CN112256558B (zh) | 一种测试用例的生成方法、装置、计算机设备及存储介质 | |
JP5398824B2 (ja) | セキュア処理システムのアプリケーション空間において信頼性を実現するための一時的pcr利用 | |
US9384020B2 (en) | Domain scripting language framework for service and system integration | |
CN105138347A (zh) | 一种差分升级包生成方法、软件升级方法及相应装置 | |
US20140208169A1 (en) | Domain scripting language framework for service and system integration | |
CN112559354A (zh) | 前端代码规范检测方法、装置、计算机设备及存储介质 | |
CN110825399B (zh) | 一种应用程序的部署方法及装置 | |
CN110727575B (zh) | 一种信息处理方法、***、装置、以及存储介质 | |
CN113032398B (zh) | 多类型业务的业务处理方法、计算机设备和存储介质 | |
CN112558946A (zh) | 一种生成代码的方法、装置、设备和计算机可读存储介质 | |
CN111984228A (zh) | 一种接口文档的处理方法、装置、计算机设备和存储介质 | |
CN111273943A (zh) | 应用文件的生成方法、装置及电子设备 | |
CN113157315A (zh) | 一种软件不同版本的差异信息识别方法、装置、设备及介质 | |
CN115080060A (zh) | 应用程序发布方法、装置、设备、存储介质和程序产品 | |
CN111857860A (zh) | 一种安全加载插件的实现方法及*** | |
US11099837B2 (en) | Providing build avoidance without requiring local source code | |
CN115237422A (zh) | 代码编译方法、装置、计算机设备和存储介质 | |
CN112379918B (zh) | 代码发布方法、装置、计算机设备和存储介质 | |
CN112445514B (zh) | 一种代码评审方法及相关产品 | |
CN114391136A (zh) | 增强的虚拟机镜像管理*** | |
CN114116664B (zh) | 数据库建表语句处理方法、装置、计算机设备和存储介质 | |
CN113535182B (zh) | 项目工程的构建方法、装置、计算机设备和存储介质 | |
CN114003250A (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 |