任务处理方法、装置、电子设备和计算机可读介质.pdf
《任务处理方法、装置、电子设备和计算机可读介质.pdf》由会员分享,可在线阅读,更多相关《任务处理方法、装置、电子设备和计算机可读介质.pdf(18页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910364253.X (22)申请日 2019.04.30 (71)申请人 北京奇艺世纪科技有限公司 地址 100080 北京市海淀区北一街2号鸿城 拓展大厦10、 11层 (72)发明人 汪鑫 (74)专利代理机构 北京润泽恒知识产权代理有 限公司 11319 代理人 莎日娜 (51)Int.Cl. H04L 29/08(2006.01) (54)发明名称 任务处理方法、 装置、 电子设备和计算机可 读介质 (57)摘要 本申请实施例公开了任务处理方法、 装置、 电子设。
2、备和计算机可读介质。 该方法的实施例包 括: 接收包含多个任务阶段的代码集成任务; 确 定该代码集成任务中的第一任务阶段和第二任 务阶段, 其中, 该第二任务阶段依赖该第一任务 阶段产生的数据; 通过代码持续集成工具分配第 一执行器, 使该第一执行器执行该第一任务阶段 中的任务并构建文件服务器以存储该数据; 通过 代码持续集成工具分配第二执行器, 使该第二执 行器从该文件服务器中下载该数据, 并基于该数 据执行该第二任务阶段中的任务。 该实施方式提 高了代码集成任务的处理效率。 权利要求书3页 说明书10页 附图4页 CN 110213333 A 2019.09.06 CN 110213333。
3、 A 1.一种任务处理方法, 其特征在于, 应用于安装有代码持续集成工具的服务器, 所述代 码持续集成工具管理有多个用于执行任务的执行器, 所述方法包括: 接收包含多个任务阶段的代码集成任务; 确定所述代码集成任务中的第一任务阶段和第二任务阶段, 其中, 所述第二任务阶段 依赖所述第一任务阶段产生的数据; 通过所述代码持续集成工具分配第一执行器, 使所述第一执行器执行所述第一任务阶 段中的任务并构建文件服务器以存储所述数据; 通过所述代码持续集成工具分配第二执行器, 使所述第二执行器从所述文件服务器中 下载所述数据, 并基于所述数据执行所述第二任务阶段中的任务。 2.根据权利要求1所述的任务处。
4、理方法, 其特征在于, 在所述使所述第二执行器从所述 文件服务器中下载所述数据, 并基于所述数据执行所述第二任务阶段中的任务之后, 所述 方法还包括: 确定所述第二任务阶段中的任务是否执行完毕; 若是, 设定所述第一执行器的工作状态为空闲状态。 3.根据权利要求1所述的任务处理方法, 其特征在于, 所述确定所述代码集成任务中的 第一任务阶段和第二任务阶段, 包括: 确定所述代码集成任务中的任务阶段之间的依赖关系; 对于所述代码集成任务中的每个任务阶段, 执行如下步骤: 基于所述依赖关系, 确定该任务阶段是否产生所述代码集成任务中的其余至少一个任 务阶段所依赖的数据; 若是, 将该任务阶段确定为。
5、第一任务阶段, 并将依赖所述第一任务阶段所产生的数据 的任务阶段确定为第二任务阶段。 4.根据权利要求1所述的任务处理方法, 其特征在于, 所述第一任务阶段包含至少一个 任务; 以及 所述通过所述代码持续集成工具分配第一执行器, 使所述第一执行器执行所述第一任 务阶段中的任务并构建文件服务器以存储所述数据, 包括: 随机从所述多个执行器中选取空闲状态的执行器, 作为第一执行器; 使所述第一执行器执行如下步骤: 创建容器以运行所述第一任务阶段中的各任务; 并 行执行所述第一任务阶段中的各任务; 将所述容器作为文件服务器; 将所述第一任务阶段 所产生的数据存储至所述文件服务器; 设定所述第一执行器。
6、的使用状态为非空闲状态。 5.根据权利要求4所述的任务处理方法, 其特征在于, 所述第二任务阶段包含至少一个 任务; 以及 所述通过所述代码持续集成工具分配第二执行器, 使所述第二执行器从所述文件服务 器中下载所述数据, 并基于所述数据执行所述第二任务阶段中的任务, 包括: 随机从所述多个执行器中选取空闲状态的执行器, 作为第二执行器; 使所述第二执行器执行如下步骤: 通过远程文件拷贝命令, 从所述文件服务器中下载所述数据; 基于所述数据, 并行执行所述第二任务阶段中的各任务。 权利要求书 1/3 页 2 CN 110213333 A 2 6.一种任务处理装置, 其特征在于, 应用于安装有代码。
7、持续集成工具的服务器, 所述代 码持续集成工具管理有多个用于执行任务的执行器, 所述装置包括: 接收单元, 被配置成接收包含多个任务阶段的代码集成任务; 第一确定单元, 被配置成确定所述代码集成任务中的第一任务阶段和第二任务阶段, 其中, 所述第二任务阶段依赖所述第一任务阶段产生的数据; 第一执行单元, 被配置成通过所述代码持续集成工具分配第一执行器, 使所述第一执 行器执行所述第一任务阶段中的任务并构建文件服务器以存储所述数据; 第二执行单元, 被配置成通过所述代码持续集成工具分配第二执行器, 使所述第二执 行器从所述文件服务器中下载所述数据, 并基于所述数据执行所述第二任务阶段中的任 务。。
8、 7.根据权利要求6所述的任务处理装置, 其特征在于, 所述装置还包括: 第二确定单元, 被配置成确定所述第二任务阶段中的任务是否执行完毕; 设定单元, 被配置成若是, 设定所述第一执行器的工作状态为空闲状态。 8.根据权利要求6所述的任务处理装置, 其特征在于, 所述第一确定单元, 包括: 第一确定模块, 被配置成确定所述代码集成任务中的任务阶段之间的依赖关系; 第二确定模块, 被配置成对于所述代码集成任务中的每个任务阶段, 执行如下步骤: 基于所述依赖关系, 确定该任务阶段是否产生所述代码集成任务中的其余至少一个任 务阶段所依赖的数据; 若是, 将该任务阶段确定为第一任务阶段, 并将依赖所。
9、述第一任务阶段所产生的数据 的任务阶段确定为第二任务阶段。 9.根据权利要求6所述的任务处理装置, 其特征在于, 所述第一任务阶段包含至少一个 任务; 以及 所述第一执行单元, 包括: 第一选取模块, 被配置成随机从所述多个执行器中选取空闲状态的执行器, 作为第一 执行器; 第一执行模块, 被配置成使所述第一执行器执行如下步骤: 创建容器以运行所述第一 任务阶段中的各任务; 并行执行所述第一任务阶段中的各任务; 将所述容器作为文件服务 器; 将所述第一任务阶段所产生的数据存储至所述文件服务器; 设定模块, 被配置成设定所述第一执行器的使用状态为非空闲状态。 10.根据权利要求9所述的任务处理装。
10、置, 其特征在于, 所述第二任务阶段包含至少一 个任务; 以及 所述第二执行单元, 包括: 第二选取模块, 被配置成随机从所述多个执行器中选取空闲状态的执行器, 作为第二 执行器; 第二执行模块, 被配置成使所述第二执行器执行如下步骤: 通过远程文件拷贝命令, 从所述文件服务器中下载所述数据; 基于所述数据, 并行执行所述第二任务阶段中的各任务。 11.一种服务器, 其特征在于, 包括: 一个或多个处理器; 权利要求书 2/3 页 3 CN 110213333 A 3 存储装置, 其上存储有一个或多个程序, 当所述一个或多个程序被所述一个或多个处理器执行, 使得所述一个或多个处理器实 现如权利。
11、要求1-5中任一所述的方法。 12.一种计算机可读介质, 其上存储有计算机程序, 其特征在于, 该程序被处理器执行 时实现如权利要求1-5中任一所述的方法。 权利要求书 3/3 页 4 CN 110213333 A 4 任务处理方法、 装置、 电子设备和计算机可读介质 技术领域 0001 本申请实施例涉及计算机技术领域, 具体涉及任务处理方法、 装置、 电子设备和计 算机可读介质。 背景技术 0002 持续集成(Continuous integration, CI)是一种软件开发实践, 即团队中每个开 发成员每天至少进行一次代码集成任务。 通常, 可以在服务器中安装代码持续集成工具(例 如Gi。
12、tLab CI), 以进行代码持续集成。 其中, 上述代码持续集成工具可以管理多个执行器 (GitLab CI Runner), 上述服务器可称为GitLab服务器。 0003 在通过上述代码持续集成工具执行每一次代码集成任务的过程中, 现有的任务处 理流程, 通常是代码持续集成工具所管理的执行器(GitLabCI Runner)每执行完一个任务 (job)后, 将执行该任务时所产生的数据(例如artifacts)上传到GitLab服务器。 在后续任 务执行过程中, 若需使用该数据, 则需要执行后续任务的执行器从GitLab服务器中下载。 因 而, 这种方式需要在代码集成任务处理过程中进行多次。
13、网络传输, 导致代码集成任务的处 理效率较低。 发明内容 0004 本申请实施例提出了任务处理方法、 装置、 电子设备和计算机可读介质, 以解决现 有技术中代码集成任务的处理效率较低的技术问题。 0005 第一方面, 本申请实施例提供了一种任务处理方法, 应用于安装有代码持续集成 工具的服务器, 代码持续集成工具管理有多个用于执行任务的执行器, 该方法包括: 接收包 含多个任务阶段的代码集成任务; 确定代码集成任务中的第一任务阶段和第二任务阶段, 其中, 第二任务阶段依赖第一任务阶段产生的数据; 通过代码持续集成工具分配第一执行 器, 使第一执行器执行第一任务阶段中的任务并构建文件服务器以存储。
14、数据; 通过代码持 续集成工具分配第二执行器, 使第二执行器从文件服务器中下载数据, 并基于数据执行第 二任务阶段中的任务。 0006 在一些实施例中, 在通过代码持续集成工具分配第二执行器, 使第二执行器从文 件服务器中下载数据, 并基于数据执行第二任务阶段中的任务之后, 该方法还包括: 确定第 二任务阶段中的任务是否执行完毕; 若是, 设定第一执行器的工作状态为空闲状态。 0007 在一些实施例中, 确定代码集成任务中的第一任务阶段和第二任务阶段, 包括: 确 定代码集成任务中的任务阶段之间的依赖关系; 对于代码集成任务中的每个任务阶段, 执 行如下步骤: 基于依赖关系, 确定该任务阶段是。
15、否产生代码集成任务中的其余至少一个任 务阶段所依赖的数据; 若是, 将该任务阶段确定为第一任务阶段, 并将依赖第一任务阶段所 产生的数据的任务阶段确定为第二任务阶段。 0008 在一些实施例中, 第一任务阶段包含至少一个任务; 以及通过代码持续集成工具 分配第一执行器, 使第一执行器执行第一任务阶段中的任务并构建文件服务器以存储数 说明书 1/10 页 5 CN 110213333 A 5 据, 包括: 随机从多个执行器中选取空闲状态的执行器, 作为第一执行器; 使第一执行器执 行如下步骤: 创建容器以运行第一任务阶段中的各任务; 并行执行第一任务阶段中的各任 务; 将容器作为文件服务器; 将。
16、第一任务阶段所产生的数据存储至文件服务器; 设定第一执 行器的使用状态为非空闲状态。 0009 在一些实施例中, 第二任务阶段包含至少一个任务; 以及通过代码持续集成工具 分配第二执行器, 使第二执行器从文件服务器中下载数据, 并基于数据执行第二任务阶段 中的任务, 包括: 随机从多个执行器中选取空闲状态的执行器, 作为第二执行器; 使第二执 行器执行如下步骤: 通过远程文件拷贝命令, 从文件服务器中下载数据; 基于数据, 并行执 行第二任务阶段中的各任务。 0010 第二方面, 本申请实施例提供了一种任务处理装置, 应用于安装有代码持续集成 工具的服务器, 代码持续集成工具管理有多个用于执行。
17、任务的执行器, 该装置包括: 接收单 元, 被配置成接收包含多个任务阶段的代码集成任务; 第一确定单元, 被配置成确定代码集 成任务中的第一任务阶段和第二任务阶段, 其中, 第二任务阶段依赖第一任务阶段产生的 数据; 第一执行单元, 被配置成通过代码持续集成工具分配第一执行器, 使第一执行器执行 第一任务阶段中的任务并构建文件服务器以存储数据; 第二执行单元, 被配置成通过代码 持续集成工具分配第二执行器, 使第二执行器从文件服务器中下载数据, 并基于数据执行 第二任务阶段中的任务。 0011 在一些实施例中, 该装置还包括: 第二确定单元, 被配置成确定第二任务阶段中的 任务是否执行完毕; 。
18、设定单元, 被配置成若是, 设定第一执行器的工作状态为空闲状态。 0012 在一些实施例中, 第一确定单元, 包括: 第一确定模块, 被配置成确定代码集成任 务中的任务阶段之间的依赖关系; 第二确定模块, 被配置成对于代码集成任务中的每个任 务阶段, 执行如下步骤: 基于依赖关系, 确定该任务阶段是否产生代码集成任务中的其余至 少一个任务阶段所依赖的数据; 若是, 将该任务阶段确定为第一任务阶段, 并将依赖第一任 务阶段所产生的数据的任务阶段确定为第二任务阶段。 0013 在一些实施例中, 第一执行器运行于容器中, 第一任务阶段包含至少一个任务; 以 及第一执行单元, 包括: 第一选取模块, 。
19、被配置成随机从多个执行器中选取空闲状态的执行 器, 作为第一执行器; 第一执行模块, 被配置成使第一执行器执行如下步骤: 创建容器以运 行第一任务阶段中的各任务; 并行执行第一任务阶段中的各任务; 将容器作为文件服务器; 将第一任务阶段所产生的数据存储至文件服务器; 设定模块, 被配置成设定第一执行器的 使用状态为非空闲状态。 0014 在一些实施例中, 第二任务阶段包含至少一个任务; 以及第二执行单元, 包括: 第 二选取模块, 被配置成随机从多个执行器中选取空闲状态的执行器, 作为第二执行器; 第二 执行模块, 被配置成使第二执行器执行如下步骤: 通过远程文件拷贝命令, 从文件服务器中 下。
20、载数据; 基于数据, 并行执行第二任务阶段中的各任务。 0015 第三方面, 本申请实施例提供了一种服务器, 包括: 一个或多个处理器; 存储装置, 其上存储有一个或多个程序, 当一个或多个程序被一个或多个处理器执行, 使得一个或多 个处理器实现如上述第一方面中任一实施例的方法。 0016 第四方面, 本申请实施例提供了一种计算机可读介质, 其上存储有计算机程序, 该 程序被处理器执行时实现如上述第一方面中任一实施例的方法。 说明书 2/10 页 6 CN 110213333 A 6 0017 本申请实施例提供的任务处理方法、 装置、 电子设备和计算机可读介质, 通过接收 包含多个任务阶段的代。
21、码集成任务, 可以确定出代码集成任务中的第一任务阶段和第二任 务阶段。 其中, 第二任务阶段依赖第一任务阶段产生的数据。 而后, 通过代码持续集成工具 分配第一执行器, 从而使第一执行器执行第一任务阶段中的任务并构建文件服务器以存储 数据。 之后, 通过代码持续集成工具分配第二执行器, 从而使第二执行器从文件服务器中下 载数据, 并基于数据执行第二任务阶段中的任务。 由此, 在第二任务阶段依赖第一任务阶段 产生的数据的情况下, 直接从第一执行器所构建的文件服务器下载该数据进行第二任务阶 段中的任务处理, 不需要第一执行器向服务器上传第一任务阶段产生的各项数据, 从而节 省了网络传输次数, 提高。
22、了代码集成任务的处理效率。 附图说明 0018 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述, 本申请的其它 特征、 目的和优点将会变得更明显: 0019 图1是本申请可以应用于其中的示例性系统架构图; 0020 图2是根据本申请的任务处理方法的一个实施例的流程图; 0021 图3是根据本申请的任务处理方法的又一个实施例的流程图; 0022 图4是根据本申请的任务处理装置的一个实施例的结构示意图; 0023 图5是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。 具体实施方式 0024 下面结合附图和实施例对本申请作进一步的详细说明。 可以理解的是, 此处所描 述的具体实。
23、施例仅仅用于解释相关发明, 而非对该发明的限定。 另外还需要说明的是, 为了 便于描述, 附图中仅示出了与有关发明相关的部分。 0025 需要说明的是, 在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相 互组合。 下面将参考附图并结合实施例来详细说明本申请。 0026 图1示出了可以应用本申请的任务处理方法或任务处理装置的示例性系统架构 100。 0027 如图1所示, 系统架构100可以包括服务器101, 网络102和服务器、 103、 104、 105。 网 络102用以在服务器101和服务器103、 104、 105之间提供通信链路的介质。 网络102可以包括 各种连接类型, 。
24、例如有线、 无线通信链路或者光纤电缆等等。 0028 服务器101可以是可以安装有代码持续集成工具(例如GitLab CI)的GitLab服务 器。 上述代码持续集成工具能够进行代码持续集成操作。 服务器101可以通过上述代码持续 集成工具执行代码集成任务。 其中, 每一个代码集成任务可以包括多个任务阶段。 上述代码 持续集成工具管理有多个用于执行任务的执行器(例如GitLab CI Runner)。 可以通过不同 的执行器执行各任务阶段中的任务。 0029 服务器103、 104、 105可以是运行有执行器的任务执行服务器。 此处, 一个任务执行 服务器中可以运行有一个或多个执行器。 实践中。
25、, 任务执行服务器中可以构建容器(例如 Docker容器), 此时, 执行器可以运行于容器中。 实践中, Docker是一个开源的应用容器引 擎, 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流 说明书 3/10 页 7 CN 110213333 A 7 行的Linux机器上, 也可以实现虚拟化。 0030 需要说明的是, 执行器还可以创建容器以运行任务。 在执行完该容器中所运行的 任务后, 则可以将所创建的该容器销毁。 0031 需要指出的是, 执行器也可以运行于服务器101中(此时, 上述系统架构100可以不 包括上述服务器103、 104、 105和上述网络。
26、102)。 或者, 部分执行器运行于服务器101中, 部分 执行器运行于服务器103、 104、 105中。 0032 需要说明的是, 上述各服务器可以是硬件, 也可以是软件。 当服务器为硬件时, 可 以实现成多个服务器组成的分布式服务器集群, 也可以实现成单个服务器。 当服务器为软 件时, 可以实现成多个软件或软件模块(例如用来提供分布式服务), 也可以实现成单个软 件或软件模块。 在此不做具体限定。 0033 需要说明的是, 本申请实施例所提供的任务处理方法一般由服务器101执行, 相应 地, 任务处理装置一般设置于服务器101中。 0034 应该理解, 图1中的终端设备、 网络和服务器的。
27、数目仅仅是示意性的。 根据实现需 要, 可以具有任意数目的网络和服务器。 0035 请参考图2, 其示出了根据本申请的任务处理方法的一个实施例的流程200。 该任 务处理方法可以应用于安装有代码持续集成工具(例如GitLab CI)的服务器。 上述代码持 续集成工具管理有多个用于执行任务的执行器(GitLab CI Runner), 该方法包括以下步 骤: 0036 步骤201, 接收包含多个任务阶段的代码集成任务。 0037 在本实施例中, 任务处理方法的执行主体(即图1所示的服务器101, 例如GitLab服 务器)可以接收代码集成任务(在上述GitLab CI中可称为Pipeline)。。
28、 其中, 上述代码集成 任务可以包含多个任务阶段(在上述GitLabCI中可称为stages)。 此处, 上述多个任务阶段 可以包括但不限于编译、 测试、 交付、 部署。 实践中, 各任务阶段(stage)按顺序执行, 即当一 个任务阶段中的任务执行完成后, 将开始下一个任务阶段中的任务。 各任务阶段可以包括 一个或多个任务(job)。 0038 需要说明的是, 由于持续集成是一种软件开发实践, 即团队中每个开发成员每天 至少进行一次代码集成任务, 因此, 在持续集成过程中会处理多次代码集成任务。 每一次代 码集成任务, 均可以采用本实施例所描述的流程进行操作。 0039 步骤202, 确定代。
29、码集成任务中的第一任务阶段和第二任务阶段。 0040 在本实施例中, 上述执行主体可以对上述代码集成任务中的各任务阶段所依赖的 数据(例如上述GitLab CI中的artifacts等数据)的来源进行分析。 当确定出某一任务阶段 需要依赖另一任务阶段所产生的数据时, 即可将上述某一任务阶段作为第一任务阶段, 将 上述另一任务阶段作为第二任务阶段。 由此, 可以确定出上述代码集成任务中的第一任务 阶段和第二任务阶段, 且可知第二任务阶段依赖第一任务阶段产生的数据。 0041 在本实施例的一些可选的实现方式中, 上述执行主体可以通过如下步骤确定上述 代码集成任务中的第一任务阶段和第二任务阶段: 0。
30、042 第一步, 确定上述代码集成任务中的任务阶段之间的依赖关系。 具体地, 对于某一 个任务阶段, 若该任务阶段不依赖其他任务阶段所产生的数据, 则可以确定该任务阶段与 其他任务阶段不存在依赖关系。 若该任务阶段依赖另一个任务阶段产生的数据, 则可以认 说明书 4/10 页 8 CN 110213333 A 8 为该任务阶段对于上述另一个任务阶段存在依赖关系。 0043 作为示例, 上述代码集成任务包括编译任务阶段(可称为stage A)、 测试任务阶段 (可称为stage B)和部署任务阶段(可称为stage C)。 若stage B和stage C均依赖于stage A所产生的数据, 则。
31、stage B和stage C均对于stage A具有依赖关系。 实践中, 可以将用于表 征该依赖关系的信息(例如图像、 文本等形式的信息)存储至上述执行主体的内存中, 以便 于查询和读取。 0044 第二步, 对于上述代码集成任务中的每个任务阶段, 基于上述依赖关系, 确定该任 务阶段是否产生上述代码集成任务中的其余至少一个任务阶段所依赖的数据; 若是, 将该 任务阶段确定为第一任务阶段, 并将依赖上述第一任务阶段所产生的数据的任务阶段确定 为第二任务阶段。 0045 继续上述示例, 由于stage A产生有stage B和stage C所依赖的数据, 则可以将 stage A确定为第一任务。
32、阶段, 将stage B和stage C确定为第二任务阶段。 0046 步骤203, 通过代码持续集成工具分配第一执行器, 使第一执行器执行第一任务阶 段中的任务并构建文件服务器以存储数据。 0047 在本实施例中, 由于上述执行主体所安装的代码持续集成工具(例如GitLab CI) 可以管理有多个用于执行任务的执行器(GitLab CI Runner), 因此, 上述执行主体可以针 对不同任务阶段进行执行器的分配。 此处, 上述执行主体可以通过上述代码持续集成工具 分配一个执行器, 作为第一执行器, 使第一执行器执行第一任务阶段中的任务。 0048 此外, 上述执行主体还可以使上述第一执行器。
33、构建文件服务器以存储在执行第一 任务阶段中的任务的过程中所产生的数据。 作为示例, 由于执行器可以运行于服务器中(如 图1所示的服务器103、 104、 105), 因而, 可以直接将第一执行器所运行的服务器作为文件服 务器。 作为又一示例, 在执行第一任务阶段中的任务时, 第一执行器可以通过创建一个容器 (例如Docker容器)来运行该任务阶段中的任务。 所述第一执行器可以并行执行该任务阶段 中的各任务, 并将所创建的容器作为文件服务器, 在该容器中存储在执行第一任务阶段中 的任务的过程中所产生的数据。 0049 在本实施例的一些可选的实现方式中, 上述第一任务阶段可以包含至少一个任 务。 。
34、上述执行主体可以执行如下步骤: 0050 第一步, 随机从上述多个执行器中选取空闲状态的执行器, 作为第一执行器。 0051 第二步, 使上述第一执行器执行如下步骤: 创建容器(例如Docker容器)以运行上 述第一任务阶段中的各任务; 并行执行上述第一任务阶段中的各任务; 将上述容器作为文 件服务器; 将上述第一任务阶段所产生的数据存储至上述文件服务器; 0052 第三步, 设定上述第一执行器的使用状态为非空闲状态。 由于执行器一旦退出(即 处于空闲状态), 则其在任务处理过程中所生成的数据即被删除, 由此, 将第一执行器的使 用状态设定为非空闲状态, 可以使第一执行器执行完第一任务阶段中的。
35、任务后不退出, 以 便为执行后续任务阶段提供数据支持。 0053 步骤204, 通过代码持续集成工具分配第二执行器, 使第二执行器从文件服务器中 下载数据, 并基于数据执行第二任务阶段中的任务。 0054 在本实施例中, 上述执行主体可以通过上述代码持续集成工具分配一个执行器, 作为第二执行器, 使第二执行器从文件服务器中下载数据, 并基于数据执行第二任务阶段 说明书 5/10 页 9 CN 110213333 A 9 中的任务。 需要说明的是, 执行器执行的具体操作(例如在满足某条件下执行的下载数据操 作、 在满足某条件下执行的退出操作、 在满足某条件下执行的存储文件操作等)可以预先在 配置。
36、文件(例如GitLab CI中的.gitlab-ci.yml文件)中进行配置。 0055 在本实施例的一些可选的实现方式中, 上述第二任务阶段可以包含至少一个任 务。 上述执行主体可以执行如下步骤: 0056 第一步, 随机从上述多个执行器中选取空闲状态的执行器, 作为第二执行器。 0057 第二步, 使上述第二执行器执行如下步骤: 通过远程文件拷贝命令(secure copy, SCP), 从上述文件服务器中下载上述数据(即第一执行器在执行第一任务阶段中的任务的 过程中所产生的数据); 基于上述数据, 并行执行上述第二任务阶段中的各任务。 实践中, 上 述SCP命令为linux系统下基于SS。
37、H(Secure Shell, 安全外壳协议)登陆进行的远程文件拷 贝命令。 通过执行该远程文件拷贝命令, 可以从上述文件服务器中下载数据。 0058 在本实施例的一些可选的实现方式中, 在使上述第二执行器下载上述容器中的数 据, 并基于所下载的数据执行上述第二任务阶段中的任务之后, 上述执行主体可以确定上 述第二任务阶段中的任务是否执行完毕。 若确定第二任务阶段中的任务已执行完毕, 上述 执行主体可以设定上述第一执行器的工作状态为空闲状态, 以便上述第一执行器继续参与 到其他代码集成任务中。 0059 本申请的上述实施例提供的方法, 通过接收包含多个任务阶段的代码集成任务, 可以确定出上述代。
38、码集成任务中的第一任务阶段和第二任务阶段。 其中, 第二任务阶段依 赖上述第一任务阶段产生的数据。 而后, 通过代码持续集成工具分配第一执行器, 从而使上 述第一执行器执行上述第一任务阶段中的任务并构建文件服务器以存储上述数据。 之后, 通过代码持续集成工具分配第二执行器, 从而使上述第二执行器从上述文件服务器中下载 上述数据, 并基于上述数据执行上述第二任务阶段中的任务。 由此, 在第二任务阶段依赖上 述第一任务阶段产生的数据的情况下, 直接从第一执行器所构建的文件服务器下载该数据 进行第二任务阶段中的任务处理, 一方面, 不需要第一执行器向服务器(例如GitLab服务 器)上传第一任务阶段。
39、产生的各项数据, 从而节省了网络传输次数, 提高了代码集成任务的 处理效率。 另一方面, 服务器(例如GitLab服务器)不需要存储该数据, 可以节省服务器的存 储空间。 0060 进一步参考图3, 其示出了任务处理方法的又一个实施例的流程300。 该任务处理 方法的流程300, 包括以下步骤: 0061 步骤301, 接收包含多个任务阶段的代码集成任务。 0062 在本实施例中, 任务处理方法的执行主体(图1所示的服务器101, 例如GitLab服务 器)可以接收代码集成任务。 其中, 上述代码集成任务可以包含多个任务阶段。 0063 需要说明的是, 步骤301的操作与上述步骤201的操作基。
40、本相同, 此处不再赘述。 0064 步骤302, 确定代码集成任务中的任务阶段之间的依赖关系。 0065 在本实施例中, 上述执行主体可以确定上述代码集成任务中的任务阶段之间的依 赖关系。 具体地, 对于某一个任务阶段, 若该任务阶段不依赖其他任务阶段所产生的数据, 则可以确定该任务阶段与其他任务阶段不存在依赖关系。 若该任务阶段依赖另一个任务阶 段产生的数据, 则可以认为该任务阶段对于上述另一个任务阶段存在依赖关系。 0066 作为示例, 上述代码集成任务包括编译任务阶段(可称为stage A)、 测试任务阶段 说明书 6/10 页 10 CN 110213333 A 10 (可称为stag。
41、e B)和部署任务阶段(可称为stage C)。 若stage B和stage C均依赖于stage A所产生的数据, 则stage B和stage C均对于stage A具有依赖关系。 实践中, 可以将用于表 征该依赖关系的信息(例如图像、 文本等形式的信息)存储至上述执行主体的内存中, 以便 于查询和读取。 0067 步骤303, 对于代码集成任务中的每个任务阶段, 基于依赖关系, 确定该任务阶段 是否产生代码集成任务中的其余至少一个任务阶段所依赖的数据。 0068 在本实施例中, 对于上述代码集成任务中的每一个任务阶段, 上述执行主体可以 基于上述依赖关系, 确定该任务阶段是否产生上述代。
42、码集成任务中的其余至少一个任务阶 段所依赖的数据。 若是, 可以执行步骤304。 0069 步骤304, 若是, 将该任务阶段确定为第一任务阶段, 并将依赖第一任务阶段所产 生的数据的任务阶段确定为第二任务阶段。 0070 在本实施例中, 响应于确定该任务阶段产生上述代码集成任务中的其余至少一个 任务阶段所依赖的数据, 上述执行主体可以将该任务阶段确定为第一任务阶段, 并将依赖 上述第一任务阶段所产生的数据的任务阶段确定为第二任务阶段。 0071 继续上述示例, 由于stage A产生有stage B和stage C所依赖的数据, 则可以将 stage A确定为第一任务阶段, 将stage B。
43、和stage C确定为第二任务阶段。 0072 步骤305, 通过代码持续集成工具分配第一执行器, 使第一执行器执行第一任务阶 段中的任务并构建文件服务器以存储数据。 0073 在本实施例中, 由于上述执行主体所安装的代码持续集成工具(例如GitLab CI) 可以管理有多个用于执行任务的执行器(GitLab CIRunner), 因此, 上述执行主体可以针对 不同任务阶段进行执行器的分配。 此处, 上述执行主体可以随机从上述多个执行器中选取 空闲状态的执行器, 作为第一执行器。 0074 在本实施例中, 上述执行主体可以在随机从上述多个执行器中选取空闲状态的执 行器, 作为第一执行器, 并使。
44、上述第一执行器执行如下步骤: 创建容器(例如Docker容器)以 运行上述第一任务阶段中的各任务; 并行执行上述第一任务阶段中的各任务; 将上述容器 作为文件服务器; 将上述第一任务阶段所产生的数据存储至上述文件服务器。 0075 在本实施例中, 上述执行主体还可以设定上述第一执行器的使用状态为非空闲状 态。 由于执行器一旦退出, 则其在任务处理过程中所生成的数据即被删除, 由此, 可以设定 第一执行器执行完第一任务阶段中的任务后不退出, 以便为执行后续任务阶段提供数据支 持。 0076 步骤306, 通过代码持续集成工具分配第二执行器, 使第二执行器从文件服务器中 下载数据, 并基于数据执行。
45、第二任务阶段中的任务。 0077 在本实施例中, 上述执行主体可以随机从上述多个执行器中选取空闲状态的执行 器, 作为第二执行器, 并使上述第二执行器执行如下步骤: 通过远程文件拷贝命令, 从上述 文件服务器中下载上述数据(即第一执行器在执行第一任务阶段中的任务的过程中所产生 的数据); 而后, 基于上述数据, 并行执行上述第二任务阶段中的各任务。 需要说明的是, 第 二执行器也可以通过创建容器的方式执行第二任务阶段中的各任务, 此处不作赘述。 0078 步骤307, 确定第二任务阶段中的任务是否执行完毕。 0079 在本实施例中, 在使上述第二执行器下载上述容器中的数据, 并基于所下载的数 。
46、说明书 7/10 页 11 CN 110213333 A 11 据执行上述第二任务阶段中的任务之后, 上述执行主体可以确定上述第二任务阶段中的任 务是否执行完毕。 0080 步骤308, 响应于确定第二任务阶段中的任务执行完毕, 设定第一执行器的工作状 态为空闲状态。 0081 在本实施例中, 上述执行主体若确定第二任务阶段中的任务已执行完毕, 可以设 定上述第一执行器的工作状态为空闲状态, 以便上述第一执行器继续参与到其他代码集成 任务中。 0082 从图3中可以看出, 本实施例中的任务处理方法的流程300涉及了设定第一执行器 执行完第一任务阶段中的任务后不退出的步骤。 由于执行器一旦退出,。
47、 则其在任务处理过 程中所生成的数据即被删除, 由此, 设定第一执行器执行完第一任务阶段中的任务后不退 出, 便于为执行后续任务阶段提供数据支持。 此外, 还涉及了在上述第二任务阶段中的任务 执行完毕后设定上述第一执行器的工作状态为空闲状态的步骤, 由此, 便于上述第一执行 器继续参与到其他代码集成任务中。 0083 进一步参考图4, 作为对上述各图所示方法的实现, 本申请提供了一种任务处理装 置的一个实施例, 该装置实施例与图1所示的方法实施例相对应, 该装置具体可以应用于安 装有代码持续集成工具的服务器, 上述代码持续集成工具管理有多个用于执行任务的执行 器。 0084 如图4所示, 本实。
48、施例所述的任务处理装置400包括: 接收单元401, 被配置成接收 包含多个任务阶段的代码集成任务; 第一确定单元402, 被配置成确定上述代码集成任务中 的第一任务阶段和第二任务阶段, 其中, 上述第二任务阶段依赖上述第一任务阶段产生的 数据; 第一执行单元403, 被配置成通过上述代码持续集成工具分配第一执行器, 使上述第 一执行器执行上述第一任务阶段中的任务并构建文件服务器以存储上述数据; 第二执行单 元404, 被配置成通过上述代码持续集成工具分配第二执行器, 使上述第二执行器从上述文 件服务器中下载上述数据, 并基于上述数据执行上述第二任务阶段中的任务。 0085 在本实施例的一些可。
49、选的实现方式中, 该装置还可以包括第二确定单元。 其中, 上 述第二确定单元可以被配置成确定上述第二任务阶段中的任务是否执行完毕; 设定单元, 被配置成若是, 设定上述第一执行器的工作状态为空闲状态。 0086 在本实施例的一些可选的实现方式中, 上述第一确定单元402可以包括: 第一确定 模块, 被配置成确定上述代码集成任务中的任务阶段之间的依赖关系; 第二确定模块, 被配 置成对于上述代码集成任务中的每个任务阶段, 执行如下步骤: 基于上述依赖关系, 确定该 任务阶段是否产生上述代码集成任务中的其余至少一个任务阶段所依赖的数据; 若是, 将 该任务阶段确定为第一任务阶段, 并将依赖上述第一。
50、任务阶段所产生的数据的任务阶段确 定为第二任务阶段。 0087 在本实施例的一些可选的实现方式中, 上述第一任务阶段包含至少一个任务。 上 述第一执行单元403可以包括: 第一选取模块, 被配置成随机从上述多个执行器中选取空闲 状态的执行器, 作为第一执行器; 第一执行模块, 被配置成使上述第一执行器执行如下步 骤: 创建容器以运行上述第一任务阶段中的各任务; 并行执行上述第一任务阶段中的各任 务; 将上述容器作为文件服务器; 将上述第一任务阶段所产生的数据存储至上述文件服务 器; 设定模块, 被配置成设定上述第一执行器的使用状态为非空闲状态。 说明书 8/10 页 12 CN 1102133。
- 内容关键字: 任务 处理 方法 装置 电子设备 计算机 可读 介质
便于维修的反冲洗过滤器.pdf
农机动力飞轮加工用抛光装置.pdf
用于茶叶外包装的标签打印装置.pdf
双核心密码工程实验箱.pdf
对虾养殖水体温度和盐度的自动调控装置.pdf
塑料模具脱壳机.pdf
ALC轻质墙体板分离工具.pdf
可调泡径的人字板机构.pdf
化妆品包装瓶点喷式喷涂装置.pdf
用于载人观光潜水器的连接结构.pdf
铝粉生产用雾化系统.pdf
固体磷酸催化剂均化器搅拌机构.pdf
日光温室多功能智能一体机.pdf
球形黑体辐射源.pdf
建筑施工用安全防护围挡.pdf
便携式可伸缩绝缘烟感温感检测装置.pdf
给排水系统图生成方法、装置、设备及存储介质.pdf
管道缺陷修补装置.pdf
西林瓶高速分装称量抽真空一体机.pdf
飞行物识别方法、系统、智能终端及计算机可读存储介质.pdf
易维护的包装机械密封防护构型.pdf
红外卫星遥感影像薄云去除方法、装置及介质.pdf
半球谐振陀螺仪的正交漂移误差检测方法.pdf
二级差动环形压控振荡器及射频芯片模组.pdf
角膜移植术后防止植片移位的头部固定枕.pdf
便携式桥梁检测设备.pdf
视频采集设备的检测方法、装置、设备及介质.pdf
晶圆背面清洗方法和装置.pdf
碳化硼结合金刚石复合超硬防弹陶瓷的制备方法.pdf
水处理用加药方法及其设备.pdf
基于感应辅热与磁流体冷却的杆件在轨成形机构与方法.pdf
龙门加工中心滑块润滑装置.pdf
给串联热备份不间断电源供电的锂电池电源系统.pdf
地铁盖挖逆结构及其施工方法.pdf
缺气保用轮胎支撑胶的筛选方法及获得的支撑胶和含该支撑胶的轮胎.pdf
虹吸排水护坡结构及其施工工法.pdf
变压器绕组电压分布的测量系统.pdf
潜水双自动耦合潜水泵平台.pdf
安防用定点式监控装置.pdf
使用吸力配重的五轴搬运机器人.pdf
聚丙烯无纺布超疏水膜的制备方法.pdf
门型拉线塔腿部锈蚀内贴加固装置和加固方法.pdf
模型预测样本的解释报告的生成方法及装置.pdf
防挤压装置及高空作业机械.pdf
绿色环保的纺织数码喷墨印花机.pdf
一株高效刺激免疫反应的沙门菌突变株及构建方法和应用.pdf
基于长文本分割的文本质量自动评估方法.pdf
周界检测方法及装置.pdf
门槛管梁自动MAG焊工艺及其专用焊丝.pdf
防护效果好的网络通讯设备.pdf
面向电动汽车能源管理调度的分布式协同优化方法.pdf