云效Flow流水线支持Pipeline as code,您可通过使用YAML文件编排您的流水线配置。一条流水线通常由代码源sources、阶段stages、任务jobs、步骤steps等组成。本文主要介绍了流水线YAML的整体结构和相关节点的语法细则。
快速开始
为了让您快速的理解流水线YAML整体结构,以下为一个Java构建并部署至主机组的示例YAML文件:
name: demo-pipeline # 流水线的展示名称
sources: # sources 配置流水线源节点
my_repo: # 流水线源唯一标识 id
type: codeup # 流水线源类型
name: 代码源名称 # 代码源的展示名称
endpoint: <your-codeup-repository-url> # 代码源的 url
branch: master # 代码源的默认分支
triggerEvents: push # 代码源监听事件
certificate: # certificate 认证信息
type: serviceConnection # 认证类型为服务连接
serviceConnection: <your-service-connection-id> # 服务连接 id
stages: # stages 配置流水线阶段
build_stage: # 流水线阶段标识 id
name: 构建阶段 # 流水线阶段的展示名称
jobs: # jobs 配置流水线任务
build_job: # 流水线任务标识 id
name: 构建任务 # 流水线任务的展示名称
runsOn: public/cn-beijing # 流水线任务运行的集群环境
steps: # steps 配置流水线步骤
build_step: # 流水线步骤标识 id
step: JavaBuild # 选择执行步骤
name: java构建 # 流水线执行步骤的展示名称
with: # 步骤的参数
run: |
mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip
upload_step:
step: ArtifactUpload
name: 构建物上传
with:
uploadType: flowPublic
artifact: default
filePath:
- target/
- deploy.sh
deploy_stage:
name: 部署阶段
jobs:
deploy_job:
name: 主机组部署任务
component: VMDeploy # 选择执行组件
with: # 执行组件的参数
artifact: $[stages.build_stage.build_job.upload_step.artifacts.default]
machineGroup: <your-machine-group-id>
artifactDownloadPath: /home/admin/app/package.tgz
executeUser: root
run: |
mkdir -p /home/admin/application/
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart
上述YAML关键节点说明如下:
节点 | 节点说明 |
name | 流水线的名称。 |
sources | 流水线源,支持配置多个流水线源信息,包括源类型、源地址、默认分支等。 |
sources.<souce_id> | 流水线源 id,唯一标识流水线源。 |
sources.<souce_id>.type | 流水线源类型,支持codeup、github、gitlab、jenkins等多种流水线源类型。 |
sources.<souce_id>.name | 流水线源的展示名称。 |
stages | 流水线阶段,流水线阶段由一个或多个任务组成。 |
stages.<stage_id> | 流水线阶段id,唯一标识流水线阶段。 |
stages.<stage_id>.name | 流水线阶段的展示名称。 |
stages.<stage_id>.jobs | 流水线任务,流水线任务job可以为多个步骤steps的组合(多个步骤共享工作空间,共同完成指定任务), 或一个组件 component 的调用(调用组件执行指定任务,组件任务支持重试、跳过等更多操作)。 |
stages.<stage_id>.jobs.<job_id> | 流水线任务id,唯一标识流水线任务。 |
stages.<stage_id>.jobs.<job_id>.name | 流水线任务的展示名称。 |
stages.<stage_id>.jobs.<job_id>.runsOn | 流水线任务运行的集群环境,可以使用云效提供的公共集群环境,也可以使用私有构建集群。 |
stages.<stage_id>.jobs.<job_id>.steps | 流水线步骤,流水线任务可以由一个或多个步骤 steps 组成。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id> | 流水线步骤id,唯一标识流水线步骤。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.step | 选择流水线的执行步骤。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.name | 流水线步骤的展示名称。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.with | 流水线步骤的参数。 |
stages.<stage_id>.jobs.<job_id>.component | 流水线组件,流水线任务可调用一个组件component执行相关操作。 |
stages.<stage_id>.jobs.<job_id>.with | 流水线组件的参数。 |