赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 操作指南
  5. 应用
  6. 流水线
  7. 相关概念

相关概念

  • 流水线
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

本文介绍流水线相关概念,包括流水线和流水线模板、任务和任务模板以及执行上下文。

背景介绍

应用中心提出了流水线和流水线模板的概念。流水线通过引用流水线模板,提供执行上下文,描述了一次流水线执行以及执行结果。而流水线模板通过描述任务,以及任务之间的依赖关系,描述了一个确定的流程。

应用中心提出了任务(Task)以及任务模板(TaskTemplate)的概念,用于描述流水线中某个具体任务以及它的执行。任务通过引用任务模板,提供执行上下文,描述了一次任务的执行以及执行结果。任务模板通过描述任务的执行方式以及预设上下文(可选),来描述一个任务会怎样执行。

任务以及任务模板的引入将任务执行的描述移出了流水线。应用中心期望通过引入任务以及任务模板的概念,简化流水线的描述负担,让用户像搭建积木一样搭建流水线。

流水线

流水线是一个流水线模板的一次具体的执行。例如,为一个代码仓库设置了触发规则,每一次Push事件需要运行一次构建发布行为,那么每次用户向代码仓库推送代码,应用中心就会创建一个流水线对象,用于记录这次执行以及执行结果与细节。如下图所示。

pipeline-concept1

流水线模板

流水线模板是对一个确定的CI/CD场景的描述,例如构建发布。流水线模板通过描述任务,以及任务之间的依赖关系,来确定一个具体CI/CD场景的流程。流水线模板可以被重复使用。例如,构建部署场景,需要先基于代码仓库的代码,构建出一个产物,并在得到人工确认以后,将它发布到云产品中。如下图所示,可以总结出构建、审批和部署三个任务以及它们之间的依赖关系。pipeline-concept2

任务

任务是流水线的主要组成,它描述了流水线中每一个独立任务的执行以及执行结果。一般情况下,用户不会单独运行一个任务,所有的任务都由流水线运行产生。例如,构建部署流水线执行完成后,会依次产生构建、审批和部署三个独立的任务,其中构建是一个独立的执行,负责根据代码仓库中的代码来构建目标产物。

任务支持文本化或结构化输出执行的结果,但如果产生了文件制品或镜像制品,需要在任务执行的过程中进行保存。

任务根据模板限制以及执行上下文输入,可以运行在阿里云沙箱环境中,也可以运行在用户当前账户下。

pipeline-task-concept

任务模板

任务模板通过描述任务的执行方式以及预设上下文(可选),来描述一个任务会怎样执行。为了降低用户使用门槛,应用中心预置了若干常用的任务模板,包括审批、部署、自定义执行等。用户也可以通过创建新的模板,来实现自定义的逻辑。任务模板可以大大简化流水线的描述复杂度。

执行上下文

执行上下文(Context)可以影响流水线与任务的具体行为,它是流水线与任务的输入。当满足条件的Git事件产生或主动触发流水线时,一个流水线对象将被创建,触发者将触发的上下文信息参数化,并传入执行上下文中。

在流水线执行时,会产生任务并执行。此时,执行引擎会将流水线的执行上下文(记作ctx_pipeline)向流水线模板中预设的执行上下文(记作ctx_pipelinetemplate)合并,产生新的执行上下文作为任务的执行上下文(记作ctx_task)。任务在执行时,执行引擎又会将任务执行上下文与任务模板的执行上下文(记作ctx_tasktemplate)合并,作为任务运行时的执行上下文(记作ctx)。

如果使用运算符+描述合并这一行为,那么,执行上下文ctx_1向执行上下文ctx_2合并可以记作ctx_1+ctx_2。上述合并逻辑可以描述为ctx_task=ctx_pipeline+ctx_pipelinetemplate与ctx=ctx_task+ctx_tasktemplate,也可以描述为ctx=ctx_pipeline+ctx_pipelinetemplate+ctx_tasktemplate。如下图所示。

pipeline-template-task

应用中心对合并这一行为有明确的定义,合并的对象为JSON对象,合并的实现标准为JSON Merge Patch。例如,ctx_1+ctx_2表示ctx_1的数据拥有更高的优先级,会覆盖ctx_2中的数据,并产生新的JSON对象。

另外,合并行为不满足交换律的特性,例如,ctx_1+ctx_2不等于ctx_2+ctx_1,ctx_1+ctx_2表示ctx_1向ctx_2合并,而ctx_2+ctx_1表示ctx_2向ctx_1合并。两者代表的行为和结果如下图所示。

context-merge

任务执行时,会将任务的执行上下文向模板预设的执行上下文合并,并作为最终的执行上下文。任务所在的节点会收到一个包含执行上下文的请求,并按照上下文执行相应的逻辑。

pipeline-context-merge
相关文章

使用checkout插件下载构建代码 2025-04-16 14:38

流水线任务每次运行时,会调度一个全新的实例。如果任务的运行依赖Repo中的代码,那么每次用户都需要手动拉取用于构建的代码。为了提升拉取代码的速度,降低拉取代码的功能门槛,社区提供了checkout插件。本文介绍如何使用checkout插件下载构建代码。 插件使用 Serverless-cd社区提供c

使用s-setup插件初始化Serverless Devs 2025-04-16 14:38

流水线任务每次运行时,会基于基础镜像调度一个全新的实例。每次s命令都需要初始化配置,设置好正确的密钥信息,Serverless Devs才能使用。本文介绍如何使用s-setup插件初始化Serverless Devs。 插件使用 在构建代码时,如果使用Serverless Devs,需要使用s co

使用runtime-setup插件初始化运行环境 2025-04-16 14:38

流水线任务每次运行时,都会基于基础镜像调度一个全新的实例。应用中心会持续维护并更新镜像,添加或者更新用户需要的构建工具。当构建工具存在多个版本时,Serverless Devs会默认使用最新的版本,但并不是所有用户都期望使用最新版本的工具。所以应用中心提供了runtime-setup插件,用于指定默

使用OSS缓存插件加速构建 2025-04-16 14:38

流水线任务每次运行时,会调度一个全新的实例。用户需要拉取用于构建的代码以及构建所需要的依赖。拉取依赖的时间过久,会导致流水线任务执行出现构建慢或超时失败等问题。社区提供基于对象存储OSS实现的缓存插件,用于解决拉取依赖慢、构建超时等问题。本文介绍如何基于OSS缓存插件加速构建。

使用fc-canary插件进行灰度发布 2025-04-16 14:38

函数在更新后,默认会将更新后的配置与代码发布并覆盖LATEST版本,函数更新后直接调用函数将默认命中刚部署的LATEST版本最新配置与代码。为了保证生产环境的稳定性,社区提供fc-canary插件实现灰度发布。本文介绍如何使用fc-canary插件进行灰度发布。 插件使用 函数计算提供别名的产品能力

使用fc-release插件发布正式版本 2025-04-16 14:38

函数在灰度发布后,如果确认业务符合预期,可以发布正式版本,将别名对应的版本切换至目标版本。本文介绍如何使用fc-release插件发布正式版本。 插件使用 如果用插件实现发布正式版本,需要先使用fc-canary插件对别名发布灰度版本。插件会将别名的主版本置为灰度版本,并移除灰度的配置。如果别名不存

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号