YAML初步体验

云效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

流水线组件的参数。

语法细则

步骤steps清单

步骤 steps 清单

组件component清单

组件 component 清单

插件plugins清单

插件 plugins 清单