相关文章推荐
英姿勃勃的绿豆  ·  使用 Access SQL ...·  10 月前    · 
迷茫的煎鸡蛋  ·  operating system - ...·  1 年前    · 
成熟的西装  ·  Jackson ...·  1 年前    · 

流水线配置中,支持指定YAML文件,用于描述如何在Serverless应用中心上运行流水线,来构建或发布Serverless应用。本文介绍如何配置YAML文件以及文件中预定义的字段含义。

背景信息

YAML配置文件描述了流水线运行所需要的 流水线 对象以及 流水线模板 对象的数据结构,当您的代码仓库发生变更时,会通过Webhook触发应用中心,并按照配置文件的描述执行流水线动作。

采用配置文件描述流水线运行的方式,是应用中心比较推荐的DevOps实践。您可以在创建应用阶段指定或新建该YAML配置文件,也可以在环境中指定或新建该YAML配置文件。关于如何指定YAML文件,请参见 管理流水线

前提条件

  • 您已了解流水线及流水线模板相关概念。更多信息,请参见 流水线 流水线模板

  • 创建一个应用中心支持的Git仓库,并拥有管理权限。您也可以使用应用中心在创建新应用过程中,创建并初始化的Git仓库。

  • 在Git仓库根目录创建一个YAML配置文件,本文以创建的 cicd.yaml 文件为例进行介绍。

配置YAML文件

YAML文件支持添加对流水线的描述,在流水线中引用模板或直接描述流水线的运行方式(推荐)。示例如下。

---
# 提交流水线执行
kind: Pipeline
# 流水线执行名称,需要全局唯一。推荐使用commitID与时间戳构造唯一的名称
name: "p-<% .git.shortCommitId %>-<% .currentTimestampMs %>"
# 一些任意的描述信息
description: 'demo pipeline'
spec:
  context:
    data:
      ## 全局钉钉通知配置,覆盖模板中的配置
      #dingdingNotification:
      #  # 设置全局关闭钉钉通知,下面可以按需打开
      #  enable: false
      #  # 设置在任务执行成功时跳过通知
      #  skipOnSuccess: false
      #  # 钉钉通知webhook配置
      #  webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
      #  # 钉钉通知的签名密钥
      #  secret: xxx
      #  # 钉钉通知的内容。不要统一配置text,除非目的是统一通知的内容
      #  message:
      #    at:
      #      isAtAll: false
      #      atUserIds: ["admin"]
      #      atMobiles: ["188xxxx8888"]
      #    msgtype: text
      #    # text支持模板语法,模板可以获取到当前执行的状态以及异常信息
      #    text: |
      #      task finished.
      #      TaskName: {{ .currentTask.name }}
      #      Success: {{ .success }}
      #      Status: {{ .currentTask.status.phase }}
      # 通过s工具部署,指定s.yaml文件位置,触发时会自动填入
      # deployFile: s.yaml
      # 应用中心所在的应用名称,触发时会自动填入
      appName: <% .appName %>
      # 仓库中s.yaml文件的位置。这里是指在根路径中的s.yaml文件
      deployFile: s.yaml
  # 本次执行使用的流水线模板描述。现在应用中心支持在流水线中内置模板描述
  templateSpec:
    tasks:
    - name: pre-check
      context:
        data:
          displayName: "前置检查"
          enable: true
          steps:
            - plugin: "@serverless-cd/checkout"
            - plguin: "@serverless-cd/s-setup"
            - run: s plan -t "${{ ctx.data.deployFile }}"
      taskTemplate: serverless-runner-task
      runAfters: []
    - name: pre-check-approval
      context:
        data:
          displayName: "人工审核"
          enable: true
      taskTemplate: need-approval
      runAfters:
      - name: pre-check
    - name: build-and-deploy
      context:
        data:
          displayName: "构建部署"
          enable: true
          steps:
            - plugin: "@serverless-cd/checkout"
            - plugin: "@serverless-cd/s-setup"
            - run: s deploy -t "${{ ctx.data.deployFile }}" --use-local --assume-yes --skip-push
      taskTemplate: serverless-runner-task
      runAfters: 
      - name: pre-check-approval

上述示例中,当满足条件的Git事件产生时,会产生一条名称为 p-<% .git.shortCommitId %>-<% .currentTimestampMs %> 的流水线,并依次执行前置检查、人工审核与构建部署三个任务。每个任务中,又分别使用流水线插件与Shell命令描述任务的具体执行步骤。

YAML文件预定义变量

应用中心提供以下预置的变量,在触发时会将YAML文件中的占位符替换为变量对应的值,再提交文件描述的流水线以及任务对象。

名称

解释

示例

<% .appName %>

应用名称。

headless-ffmpeg-wcha

<% .accountId %>

阿里云账号(主账号)ID。

143199913651****

<% .releaseVersion %>

当前执行流水线的部署版本。

1676913428****

<% .envName %>

当前流水线所在的环境。

staging

<% .git.branch %>

当前流水线所在分支。

test

<% .git.commitId %>

本次Git操作中HEAD Commit的CommitId。

3b6b823cea88c356b10442580da5a02cde4****

<% .git.shortCommitId %>

本次Git操作中HEAD Commit的CommitId前7位。

3b6b823

<% .git.commitMessage %>

本次Git操作中HEAD Commit的Message内容。

update .s file

<% .git.tag %>

本次Git操作中的tag名称(如果存在tag)。

dev

<% .git.author %>

本次Git操作的作者。

developer

<% .git.action %>

本次Git操作的行为名称。

push

<% .currentTimestampMs %>

执行部署时的时间戳,单位为毫秒。

1676971965781

<% .currentTimestampS %>

执行部署时的时间戳,单位为秒。

1676971891

<% .randomString6 %>

随机6位字符串。

abcdef