CN115080376A - 一种代码发布方法及相关装置 - Google Patents

一种代码发布方法及相关装置 Download PDF

Info

Publication number
CN115080376A
CN115080376A CN202110271372.8A CN202110271372A CN115080376A CN 115080376 A CN115080376 A CN 115080376A CN 202110271372 A CN202110271372 A CN 202110271372A CN 115080376 A CN115080376 A CN 115080376A
Authority
CN
China
Prior art keywords
task
code
issued
node
task node
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.)
Pending
Application number
CN202110271372.8A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110271372.8A priority Critical patent/CN115080376A/zh
Publication of CN115080376A publication Critical patent/CN115080376A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Abstract

本申请公开一种代码发布方法及相关装置,构建包括多个任务节点的迭代流水线,当需要进行代码发布时,响应于第一用户的触发操作,触发多个任务节点对待发布代码依次进行处理。在处理过程中,收集多个任务节点的任务进度情况,若根据任务进度情况监测到第一任务节点完成针对待发布代码的任务,向第二任务节点提交处理后的待发布代码,以便第二任务节点完成针对待发布代码的任务,第二任务节点是第一任务节点在迭代流水线上的下一个任务节点,直到每个任务节点完成其针对待发布代码的任务,从而将待发布代码发布至对应的服务器上。该方法使得不同任务节点所对应的研发部门之间实现信息共享,从而提升沟通效率,缩短开发、测试到运维的发布迭代周期。

Description

一种代码发布方法及相关装置
技术领域
本申请涉及软件开发领域,特别是涉及一种代码发布方法及相关装置。
背景技术
随着移动互联网的普及和迅速发展,衍生产品和场景应用更趋于多样化和复杂化,产品应用提供各种功能以满足用户的需求。
为了使得产品应用可以提供各种功能,需要由研发人员开发功能,研发人员在开发完功能后,将实现该功能的代码手动打包、提交测试,进而手动上线,以完成该功能的发布。
然而,这种发布过程比较原始,发布过程中的不同人员之间难以共享信息,沟通效率低下,进而导致开发、测试到运维的发布迭代周期较长。
发明内容
为了解决上述技术问题,本申请提供了一种代码发布方法及相关装置,使得不同任务节点所对应的研发部门之间实现信息共享,从而提升沟通效率,缩短开发、测试到运维的发布迭代周期。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例提供一种代码发布方法,构建包括多个任务节点的迭代流水线,所述方法包括:
响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
第二方面,本申请实施例提供一种代码发布装置,构建包括多个任务节点的迭代流水线,所述装置包括启动单元、收集单元和发布单元:
所述启动单元,用于响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
所述收集单元,用于在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
所述发布单元,用于若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
第三方面,本申请实施例提供一种用于代码发布的电子设备,所述电子设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面所述的方法。
由上述技术方案可以看出,预先构建包括多个任务节点的迭代流水线,当需要进行代码发布时,响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;在多个任务节点对待发布代码依次进行处理的过程中,收集多个任务节点的任务进度情况。若根据任务进度情况监测到多个任务节点中第一任务节点完成针对待发布代码的任务,向第二任务节点提交处理后的待发布代码,以便第二任务节点完成其针对待发布代码的任务,第二任务节点是第一任务节点在所述迭代流水线上的下一个任务节点,直到每个任务节点完成其针对待发布代码的任务,从而将待发布代码发布至对应的服务器上。该方法通过流水线的概念,实时收集各个任务节点的任务进度情况,触发任务节点及时执行任务,从而使得不同任务节点所对应的研发部门之间实现信息共享,从而提升沟通效率,缩短开发、测试到运维的发布迭代周期。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术成员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种代码发布方法的系统架构示意图;
图2为本申请实施例提供的一种代码发布方法的流程图;
图3为本申请实施例提供的一种代码发布方法的用户交互示例图;
图4为本申请实施例提供的一种代码发布流程示意图;
图5为本申请实施例提供的一种构建机器的构建方法示例图;
图6为本申请实施例提供的一种测试环境的部署及测试方法示例图;
图7为本申请实施例提供的一种灰度发布示意图;
图8为本申请实施例提供的一种代码发布方法的系统架构示意图;
图9为本申请实施例提供的一种代码发布方法的流程图;
图10为本申请实施例提供的一种代码发布装置的结构图;
图11为本申请实施例提供的一种终端的结构图;
图12为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
相关技术中提供的代码发布方法,发布过程比较原始,发布过程中的不同人员之间难以共享信息,沟通效率低下,进而导致开发、测试到运维的发布迭代周期较长。
为了解决上述技术问题,本申请实施例提供一种代码发布方法,该方法通过流水线的概念,实时收集各个任务节点的任务进度情况,触发个任务节点及时执行任务,从而使得不同任务节点所对应的研发部门之间实现信息共享,从而提升沟通效率,缩短开发、测试到运维的发布迭代周期。
参见图1,图1为本申请实施例提供的代码发布方法的系统架构示意图。该系统架构中包括代码发布系统101和服务器102,其中代码发布系统101上构建有包括多个任务节点的迭代流水线,每个任务节点可以是研发过程中所涉及到的各个用户对应的终端。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器,本申请在此不做限制。
当需要进行代码发布时,第一用户可以通过其对应的终端执行触发操作,以触发代码发布系统101上的迭代流水线中的多个任务节点对待发布代码依次进行处理。其中,多个任务节点按照代码发布流程和其所能实现的处理功能依次对待发布代码进行处理形成迭代流水线,多个任务节点例如图1所示的任务节点1、任务节点2、……任务节点N。
在多个任务节点对待发布代码依次进行处理的过程中,收集多个任务节点的任务进度情况。若第二任务节点(例如图1中任务节点2)是第一任务节点(例如图1中任务节点1)在迭代流水线上的下一个任务节点,当根据任务进度情况监测到多个任务节点中第一任务节点完成针对待发布代码的任务时,则向第二任务节点提交处理后的待发布代码,以便第二任务节点完成其针对待发布代码的任务,直到每个任务节点完成其针对待发布代码的任务,从而将待发布代码发布至对应的服务器上。
接下来,将结合附图对本申请实施例提供的代码发布方法进行详细介绍。
参见图2,图2示出了一种代码发布方法的流程图,所述方法包括:
S201、响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理。
代码发布系统上构建有包括多个任务节点的迭代流水线,其中代码发布系统可以是基于DevOps(Development和Operations的组合词)搭建的,DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障部门之间的沟通、协作与整合。
当需要发布新功能时,第一用户可以在其对应的终端上执行触发操作,以触发迭代流水线中的多个任务节点对待发布代码依次进行处理。
通常情况下,第一用户可以是研发人员,即研发人员根据需求进行研发触发迭代流水线;第一用户也可以是产品经理,即产品经理基于用户反馈提出需求触发迭代流水线。
为了快速、高效,且使用户把更多的精力放在开发上,同时兼顾非开发用户(比如产品经理、项目管理等)的使用。本实施例从设计上就遵循了简单的原则,对于普通的第一用户而言,第一用户可以通过其对应终端显示的控件(即代码发布系统的前端)手动点击触发迭代流水线;若第一用户为懂技术的开发人员也可以通过Git命令行(即代码发布系统的后台)的形式触发迭代流水线。
参见图3所示,第一用户可以通过代码发布系统101的前端手动触发迭代流水线,也可以通过代码发布系统101的后台利用Git命令行触发迭代流水线。在触发迭代流水线后,代码发布系统101对待发布代码进行处理,从而将待发布代码发布至对应的服务器上。
需要说明的是,多个任务节点按照代码发布流程和其所能实现的处理功能依次对待发布代码进行处理形成迭代流水线。例如,代码发布流程通常可以按照图4所示的流程所示,包括提交代码(S401)、代码检查(S402)、编译(S403)、测试(S404)、发布评审(S405)、发布(S406)等过程,发布后还可以包括线上监控(S407)和线上跟踪(S408)等过程。其中,测试可以包括自动化测试和人工测试。
图4所示的代码发布流程仅是一种示例,在该过程中还可以根据需求增加其他步骤,例如在提交代码之前增加提出研发需求(例如S409)。另外,检查代码(S402)可以在提交代码(S401)之后执行,也可以是在提交代码(S401)之前执行,即用户在触发提交代码时,先检查代码,在检查通过后,在提交代码,本申请实施例对代码发布流程不做限定。
S202、在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况。
在本实施例中,可以实时收集多个任务节点的任务进度情况,从而根据任务节点的任务进度情况确定何时向下一个任务节点提交处理后的待发布代码。另外,当某个用户例如第二用户触发查询请求以希望了解代码发布的进展情况,则可以响应于第二用户的查询请求,向第二用户展示任务进度情况。从而方便的实现各个部门之间的信息共享,提高沟通效率。
S203、若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上。
其中,第二任务节点是所述第一任务节点在迭代流水线上的下一个任务节点。例如第一任务节点是图4所示用于提交代码的任务节点,那么,第二任务节点可以是下一个任务节点,即图4中所示的用于代码检查的任务节点。
需要说明的是,为了使得第二任务节点的用户知晓需要第二任务节点对待发布代码进行处理,可以通过第二任务节点向其对应的用户发出提示,以便在需要该用户参与处理的情况下,该用户可以及时参与对待发布代码的处理,提高发布效率。
在本实施中,不同任务节点由于其所实现的功能可能不同,故不同任务节点对待发布代码的处理方式不同。
若第一任务节点为用于提交代码的节点,第二任务节点为用于代码检查的节点,那么第二任务节点在完成代码检查后,若第二任务节点对待发布代码进行检查得到的检查结果表示待发布代码不通过,例如待发布代码出现错误或者不符合规范,则可以向第一任务节点发送代码修改提示,从而提示研发人员对待发布代码进行一次修改。
若第一任务节点为用于编译的节点,第一任务节点完成针对待发布代码的任务的方式可以是根据业务类型构建多个构建机器,利用构建机器对待发布代码进行打包得到产物包,并将产物包存放到目标仓库中。目标仓库例如可以是Ceph仓库,用于存储产物包。
其中,构建机器可以是在一个实体设备上构建的虚拟环境,从而将不同业务类型的待发布代码进行隔离,实现并发构建。
具体的,可以参见图5所示,可以通过代码发布平台中的构建机调度器进行构建,通过Docker镜像源拉取对应的编译镜像,并启动;通过工蜂系统拉取大数据系统涉及到多个代码库到Docker容器里,进行构建,得到多个构建机器,例如构建机器1、构建机器2……、构建机器M;通过软件开发工具包(Software Development Kit,SDK)将构建情况反馈到代码发布系统的后台;将构建的产物包按一定的规则存放到Ceph仓库中。
由于大数据系统涉及到多个服务,每一个服务会涉及到多次提交,每一次提交都被编译,由于编译资源有限,需要使用Docker来达到并发构建,这里的每一个Docker环境都包含代码发布系统的SDK,同时从工蜂系统拉取大数据系统涉及到的所有服务的代码进行构建,其中工蜂系统是一种代码托管系统,用于存储各种代码。假如大数据系统包含后台服务、子服务1、子服务2、子服务3,那么构建环境需要拉取这四个服务的代码,但构建时会判断这四个代码库,哪些有变动,如果有变动则需要重新构建。这样保障了资源有限的情况下,实现快速的构建。
在第一任务节点是用于编译的节点基础上,若第二任务节点为用于测试的节点,则第二任务节点完成其针对所述待发布代码的任务的方式可以是从镜像仓库中拉取对应的镜像到测试机器上,从目标仓库中拉取待发布代码的产物包到所述测试机器上,根据镜像运行所述待发布代码,对待发布代码进行测试,并将测试结果存储到日志(log)仓库机中。
例如参见图6所示,代码发布系统的后台通过调度触发测试环境的部署及测试过程。由于Docker可以将一个代码正常运行所需的一系列东西打包成一个镜像,在执行的时候,可以基于这个镜像运行代码。因此在本实施例中,可以从镜像仓库中拉取对应的镜像到测试机器上,并从目标仓库(例如Ceph仓库)中拉取待发布代码的产物包到测试机器上,进而根据该镜像运行待发布代码,以对待发布代码进行测试,并将测试结果存储到日志(log)仓库机中。
其中,测试机器可以是在一个实体设备上构建的虚拟环境,从而将不同业务类型的待发布代码进行隔离(例如图6中测试机器1、……测试机器N),实现多服务并发测试。
大数据系统涉及到的各个子服务,每个服务的变动,都需要单独的环境进行测试,并发部署到多个环境让测试人员方便的进行测试或者自动化测试用例的执行,加快了测试的效率。通过一定策略,并发从镜像仓库中拉取对应的镜像以启动多个部署环境,同时从Ceph仓库拉取产物包进行测试环境的部署,然后将测试结果上报。
若第一任务节点为用于测试的节点,第二任务节点为用于权限审核的节点,则第二任务节点完成其针对待发布代码的任务的方式可以是根据预设评价指标确定待发布代码是否达到发布要求,预设评价指标至少包括测试通过率,若待发布代码达到发布要求,确定待发布代码审核通过,则可以将待发布代码发布至服务器上。通过发布评审,在快速迭代的同时,保证整个产品的安全与健壮。
例如,若预设评价指标为测试通过率,测试通过率达到98%可以认为达到发布要求,则当确定测试通过率达到98%及以上,则确定审核通过,可以将待发布代码发布至服务器上。
预设评价指标还可以包括代码规范程度,即若待发布代码的代码规范程度符合发布要求,则确定待发布代码审核通过。
另外,还可以结合审核人员的人工审核,发布评审是作为对整个代码发布过程的一个权限审核,审核人员包括产品经理、开发组长、总监等,可以根据业务灵活配置。审核人员可以对前面各任务节点的处理进行人工判,来确定是否进行一次发布。
在确定将待发布代码发布至对应的服务器上后,可以通过Zookeeper(Zookeeper一个为分布式应用提供一致性服务的软件)进行并发发布调度,从Ceph仓库拉取对应的产物包发布到对应的服务器上,并将发布结果反馈到代码发布系统的前端,例如向多个任务节点分别发送代码发布成功通知。
在一些情况下,产品升级(例如发布新功能)时可能会存在一些问题,为了及早获得用户的意见反馈,完善产品功能,提升产品质量,让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围,可以采用灰度发布的方式。灰度发布即让一部分用户继续用产品的功能A,一部分用户开始用产品的功能B(例如待发布代码所表征的功能),如果用户对功能B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到功能B上来。
在这种情况下,将待发布代码发布至对应的服务器上的一种可能实现方式可以是按照预设比例从多个服务器中选择目标服务器,进而将待发布代码发布至目标服务器上,从而实现灰度发布(即分批发布)。
由于服务器部署在多个地方,假设部署在A地、B地、C地,则灰度发布的时候需要对各个地方服务器都要灰度,参见图7所示,例如从A地的服务器中选择100台服务器作为目标服务器,将待发布代码发布至该100台服务器上;从B地的服务器中选择50台服务器作为目标服务器,将待发布代码发布至该50台服务器上;从C地的服务器中选择150台服务器作为目标服务器,将待发布代码发布至该150台服务器上。
其中,在按照预设比例(例如百分比)从多个服务器中选择目标服务器时,由于比例的选择可能出现目标服务器的台数出现非整数,在不足一台时向上取整。例如A地150台服务器,预设比例是15%,150与15%的乘积为22.5,22.5不是整数,出现不足一台的情况,则向上取整确定从中选择23台服务器作为目标服务器。
在本实施例中,还可以设置灰度间隔时间,灰度间隔时间即灰度发布之间的时间间隔,例如完成灰度发布后,在达到灰度间隔时间时,再次进行灰度发布。
由上述技术方案可以看出,预先构建包括多个任务节点的迭代流水线,当需要进行代码发布时,响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;在多个任务节点对待发布代码依次进行处理的过程中,收集多个任务节点的任务进度情况。若根据任务进度情况监测到多个任务节点中第一任务节点完成针对待发布代码的任务,向第二任务节点提交处理后的待发布代码,以便第二任务节点完成其针对待发布代码的任务,第二任务节点是第一任务节点在所述迭代流水线上的下一个任务节点,直到每个任务节点完成其针对待发布代码的任务,从而将待发布代码发布至对应的服务器上。该方法通过流水线的概念,实时收集各个任务节点的任务进度情况,触发任务节点及时执行任务,从而使得不同任务节点所对应的研发部门之间实现信息共享,从而提升沟通效率,缩短开发、测试到运维的发布迭代周期。
基于DevOps搭建的代码发布系统进行代码发布,可以实现快速迭代,使得研发效率大幅度提高。迭代流水线的设计,减少了各个部门信息不对称的问题,提高了用户体验,缩短代码发布周期,例如使代码发布能够从每周一次,变为每天迭代多次。另外,代码发布之前增加的发布评审环节,也保证整个系统的安全、稳定。
接下来,将结合实际应用场景对本申请实施例提供的代码发布方法进行介绍。随着用户需求快速变化,对产品功能的变更频率也逐渐增大,缩短产品开发、测试到运维的生命周期,提升研发效率并保障质量,是目前市场竞争的技术痛点。为此,本申请实施例提供一种代码发布方法,以实现产品功能的快速迭代。该方法可以基于图8所示的系统架构实现,该系统架构包括代码发布系统的前端801、代码发布系统的后台802、后台调度系统(图8中并未示出)、并行多服务构建模块803、多服务并行测试环境模块804、发布评审模块805、线上灰度发布模块806等环节。
参见图9,所述方法包括:
S901、基于DevOps构建代码发布系统。
S902、在代码发布系统的前端触发迭代流水线中的多个任务节点对待发布代码依次进行处理。
S903、根据业务类型构建多个构建机器,利用构建机器对待发布代码进行打包得到产物包,并将产物包存放到目标仓库中。
S903的步骤可以是基于图8中803所示的并行多服务构建模块实现,具体可以参见图5对应实施例的描述,此处不再赘述。
S904、从镜像仓库中拉取对应的镜像到测试机器上,从目标仓库中拉取待发布代码的产物包到所述测试机器上,根据镜像运行所述待发布代码,对待发布代码进行测试,并将测试结果存储到日志仓库机中。
S904的步骤可以是基于图8中804所示的多服务并行测试环境模块实现,具体可以参见图6对应实施例的描述,此处不再赘述。
S905、根据预设评价指标确定待发布代码是否达到发布要求,预设评价指标至少包括测试通过率。
S905的步骤可以是基于图8中805所示的发布评审模块实现,具体可以参见前述实施例中对于发布评审的描述,此处不再赘述。
S906、若待发布代码达到发布要求,将待发布代码灰度发布至服务器上。
S906的步骤可以是基于图8中806所示的线上灰度发布模块实现,具体可以参见前述实施例中对于灰度发布的描述,此处不再赘述。
基于图2对应实施例提供的代码发布方法,本申请实施例还提供一种代码发布装置,参见图10,构建包括多个任务节点的迭代流水线,所述装置1000包括启动单元1001、收集单元1002和发布单元1003:
所述启动单元1001,用于响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
所述收集单元1002,用于在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
所述发布单元1003,用于若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
在一种可能的实现方式中,所述装置还包括展示单元:
所述展示单元,用于响应于第二用户的查询请求,向所述第二用户展示所述任务进度情况。
在一种可能的实现方式中,若所述第一任务节点为用于提交代码的节点,所述第二任务节点为用于代码检查的节点,所述装置还包括提示单元:
所述提示单元,用于若所述第二任务节点对所述待发布代码进行检查得到的检查结果表示所述待发布代码不通过,向所述第一任务节点发送代码修改提示。
在一种可能的实现方式中,若所述第一任务节点为用于编译的节点,所述第一任务节点完成针对所述待发布代码的任务的方式包括:
根据业务类型构建多个构建机器;
利用所述构建机器对所述待发布代码进行打包得到产物包,并将所述产物包存放到目标仓库中。
在一种可能的实现方式中,若所述第二任务节点为用于测试的节点,所述第二任务节点完成其针对所述待发布代码的任务的方式包括:
从镜像仓库中拉取对应的镜像到测试机器上;
从目标仓库中拉取所述待发布代码的产物包到所述测试机器上;
根据所述镜像运行所述待发布代码,对所述待发布代码进行测试,并将测试结果存储到日志仓库机中。
在一种可能的实现方式中,若所述第一任务节点为用于测试的节点,所述第二任务节点为用于发布评审的节点,所述第二任务节点完成其针对所述待发布代码的任务的方式包括:
根据预设评价指标确定所述待发布代码是否达到发布要求,所述预设评价指标至少包括测试通过率;
若所述待发布代码达到发布要求,确定所述待发布代码审核通过。
在一种可能的实现方式中,所述发布单元1003用于:
按照预设比例从多个服务器中选择目标服务器;
将所述待发布代码发布至所述目标服务器上。
本申请实施例还提供了一种用于代码发布的电子设备,该电子设备可以是终端,以终端为智能手机为例:
图11示出的是与本申请实施例提供的终端设备相关的智能手机的部分结构的框图。参考图11,智能手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1110、存储器1120、输入单元1130、显示单元1140、传感器1150、音频电路1160、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块1170、处理器1180、以及电源1190等部件。输入单元1130可包括触控面板1131以及其他输入设备1132,显示单元1140可包括显示面板1141,音频电路1160可以包括扬声器1161和传声器1162。本领域技术人员可以理解,图11中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器1120可用于存储软件程序以及模块,处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1180是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行智能手机的各种功能和处理数据,从而对智能手机进行整体监控。可选的,处理器1180可包括一个或多个处理单元;优选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。
在本实施例中,所述终端中的处理器1180可以执行以下步骤;
响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
该电子设备还可以包括服务器,本申请实施例还提供服务器,请参见图12所示,图12为本申请实施例提供的服务器1200的结构图,服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)1222(例如,一个或一个以上处理器)和存储器1232,一个或一个以上存储应用程序1242或数据1244的存储介质1230(例如一个或一个以上海量存储设备)。其中,存储器1232和存储介质1230可以是短暂存储或持久存储。存储在存储介质1230的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1222可以设置为与存储介质1230通信,在服务器1200上执行存储介质1230中的一系列指令操作。
服务器1200还可以包括一个或一个以上电源1226,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1258,和/或,一个或一个以上操作系统1241,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在本实施例中,所述服务器1200中的中央处理器1222可以执行以下步骤:
响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
根据本申请的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述各个实施例所述的代码发布方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例各种可选实现方式中提供的方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术成员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种代码发布方法,其特征在于,构建包括多个任务节点的迭代流水线,所述方法包括:
响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于第二用户的查询请求,向所述第二用户展示所述任务进度情况。
3.根据权利要求1所述的方法,其特征在于,若所述第一任务节点为用于提交代码的节点,所述第二任务节点为用于代码检查的节点,所述方法还包括:
若所述第二任务节点对所述待发布代码进行检查得到的检查结果表示所述待发布代码不通过,向所述第一任务节点发送代码修改提示。
4.根据权利要求1所述的方法,其特征在于,若所述第一任务节点为用于编译的节点,所述第一任务节点完成针对所述待发布代码的任务的方式包括:
根据业务类型构建多个构建机器;
利用所述构建机器对所述待发布代码进行打包得到产物包,并将所述产物包存放到目标仓库中。
5.根据权利要求4所述的方法,其特征在于,若所述第二任务节点为用于测试的节点,所述第二任务节点完成其针对所述待发布代码的任务的方式包括:
从镜像仓库中拉取对应的镜像到测试机器上;
从目标仓库中拉取所述待发布代码的产物包到所述测试机器上;
根据所述镜像运行所述待发布代码,对所述待发布代码进行测试,并将测试结果存储到日志仓库机中。
6.根据权利要求1所述的方法,其特征在于,若所述第一任务节点为用于测试的节点,所述第二任务节点为用于发布评审的节点,所述第二任务节点完成其针对所述待发布代码的任务的方式包括:
根据预设评价指标确定所述待发布代码是否达到发布要求,所述预设评价指标至少包括测试通过率;
若所述待发布代码达到发布要求,确定所述待发布代码审核通过。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述待发布代码发布至对应的服务器上,包括:
按照预设比例从多个服务器中选择目标服务器;
将所述待发布代码发布至所述目标服务器上。
8.一种代码发布装置,其特征在于,构建包括多个任务节点的迭代流水线,所述装置包括启动单元、收集单元和发布单元:
所述启动单元,用于响应于第一用户的触发操作,触发迭代流水线中的多个任务节点对待发布代码依次进行处理;
所述收集单元,用于在所述多个任务节点对所述待发布代码依次进行处理的过程中,收集所述多个任务节点的任务进度情况;
所述发布单元,用于若根据所述任务进度情况监测到所述多个任务节点中第一任务节点完成针对所述待发布代码的任务,向第二任务节点提交处理后的所述待发布代码,以便所述第二任务节点完成其针对所述待发布代码的任务,直到将所述待发布代码发布至对应的服务器上;所述第二任务节点是所述第一任务节点在所述迭代流水线上的下一个任务节点。
9.一种用于代码发布的电子设备,其特征在于,所述电子设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-7中任一项所述的方法。
CN202110271372.8A 2021-03-12 2021-03-12 一种代码发布方法及相关装置 Pending CN115080376A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110271372.8A CN115080376A (zh) 2021-03-12 2021-03-12 一种代码发布方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110271372.8A CN115080376A (zh) 2021-03-12 2021-03-12 一种代码发布方法及相关装置

Publications (1)

Publication Number Publication Date
CN115080376A true CN115080376A (zh) 2022-09-20

Family

ID=83241406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110271372.8A Pending CN115080376A (zh) 2021-03-12 2021-03-12 一种代码发布方法及相关装置

Country Status (1)

Country Link
CN (1) CN115080376A (zh)

Similar Documents

Publication Publication Date Title
US10671368B2 (en) Automatic creation of delivery pipelines
CN108153670B (zh) 一种接口测试方法、装置及电子设备
US11467952B2 (en) API driven continuous testing systems for testing disparate software
CN106354645B (zh) 基于后台系统服务或接口的测试方法和测试平台
CN109636309B (zh) 任务处理方法及装置、电子设备及存储介质
CN105389256B (zh) 一种单元测试方法及系统
CN108459964B (zh) 测试用例选择方法、装置、设备以及计算机可读存储介质
CN104679717A (zh) 集群弹性部署的方法和管理系统
CN112416318B (zh) 微服务开发方法、装置、存储介质及电子设备
CN106649638A (zh) 一种大数据获取方法
CN111045932A (zh) 业务系统仿真处理方法、装置、电子设备及存储介质
CN112799782A (zh) 模型生成系统、方法、电子设备及存储介质
US9904744B2 (en) Probabilistic simulation scenario design by using multiple conditional and nested probability distribution input functions
CN111475137A (zh) 一种软件开发需求预测的方法、系统及设备
US10229041B2 (en) Run time TPNS workload controls for test workload tuning in relation to customer profiling workload
US8818831B2 (en) Service level objective management system, service level objective management method and program
CN115080376A (zh) 一种代码发布方法及相关装置
CN109933506A (zh) 服务器大数据性能评价方法、系统及电子设备和存储介质
Angelidis et al. A simulation tool for complex assembly lines with multi-skilled resources
CN114020822A (zh) 基于接口数据造数的数据测试方法、装置、设备及介质
CN110737572B (zh) 大数据平台资源抢占测试方法、系统、终端及存储介质
CN114169733A (zh) 一种资源分配方法和装置
CN112597046A (zh) 测试方法、装置、计算机设备及存储介质
CN110704300A (zh) Tpc-ds自动化测试方法以及tpc-ds测试系统
CN111767316A (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