自定义工作流
自定义工作流中提供了充分的开放性,支持自由编排工作流流程,自定义执行步骤,下面展开介绍相关概念和具体使用。
基本概念
- Workflow:工作流,可在工作流中编排多个 Stage 的执行过程
- Stage:对工作流执行阶段进行逻辑分组,比如构建 Stage、部署 Stage…多个 Stage 串行运行,一个 Stage 可包括多个 Job
- Job:一个完整的任务,比如构建、部署、测试…多个 Job 可串行执行或并发执行
新建
进入项目中点击新建工作流,选择自定义工作流
,系统提供界面化
和 YAML
两种方式来配置自定义工作流
界面化配置
基本信息
包括工作流名称和描述,同一项目下的工作流名称应唯一。
Stage
点击 +Stage
增加新的 Stage 步骤。
参数说明:
Stage 名称
:在同一个自定义工作流中,Stage 名称唯一并发执行
:开启后,在 Stage 下配置的多个 Job 将会并发执行前置步骤
:可按需开启人工审核。开启后,需要审核通过,该 Stage 下的 Job 才会被执行
Job
添加 Stage 后,点击 Stage 下方的 +Job
为 Stage 增加 Job 配置,系统目前支持构建
和部署
两种 Job 类型。
构建 Job
参数说明:
Job 名称
:支持 32 位以内的小写英文字母、数字或者中划线,且以小写英文字母开头;在同一个自定义工作流中,Job 名称需唯一镜像仓库
:选择镜像仓库,当构建 Job 执行完成功后,构建出的镜像(即内置 $IMAGE 变量)会被推送到所选仓库中服务组件与构建配置
:选择服务组件与构建配置,支持设置构建配置中的自定义变量
提示
- 内置构建 Job 执行结束后会输出 $IMAGE 变量(页面中不可见,系统隐式逻辑),可用于内置部署 Job 中。
- 内置构建 Job 中不再支持
$ENV_NAME
构建变量,需要确保构建脚本中未使用该变量。 - 暂不支持使用 Jenkins 构建。
部署 Job
参数说明:
Job 名称
:支持 32 位以内的小写英文字母、数字或者中划线,且以小写英文字母开头;在同一个自定义工作流中,Job 名称需唯一环境
:选择要部署的环境服务来源
:包括其他 Job 输出或运行时输入其他 Job 输出
:可选择前置 Job,使用 Job 中的 $IMAGE 变量来部署服务(目前只支持选择前置的构建 Job)运行时输入
:运行工作流时手动指定
人工审核
开启 Stage 配置中的人工审核
,在 Stage 执行之前会触发审核。
参数说明:
超时时间
:从触发审核的时间点开始算起,当超过超时时间后视为审核超时失败,后续的 Stage 将不会执行审核人
:选择希望参与审核的人员需要审核人数
:当审核通过的人数满足此处指定的值时,即视为整个审核通过,Stage 会正常执行
YAML 方式配置
配置说明
用 YAML 文件的方式定义工作流,YAML 内容的整体结构描述如下:
name:「工作流名称」 // 必填项,全局唯一,匹配 ^[a-z0-9-]{1,32}$
stages: // 必填项,多个 Stage 将会按照先后顺序执行
- 「Stage1 的配置」
- 「Stage2 的配置」
- 「更多 Stage 的配置...」
project: 「工作流所属项目名称」 // 必填项
description: 「工作流描述」
multi_run: 「可选值:true/false」 // 当同时触发多次工作流时,多条任务是否能并行执行,默认为 false
其中每一个 Stage 的具体配置如下:
name: 「Stage 名称」 // 必填项
parallel: 「可选值:true/false」 // 该 Stage 下的多个 Job 是否可以并发执行,默认为 false
approval: 「人工审核配置」 // 非必填,按需配置
jobs: // 必填项
- 「Job1 的配置」
- 「Job2 的配置」
- 「更多 Job 的配置...」
人工审核的具体配置如下:
enabled: true
approve_users: // 审核人信息,可配置多个
- user_id: 「审核人 ID」
user_name: 「审核人昵称」
- user_id: 「...」
user_name: 「...」
timeout: 「审核超时时间」 // 整数类型,单位:分钟
needed_approvers: 「需要审核的人数」 // 整数类型
description: 「审核描述信息」 // 非必填
目前内置了构建和部署两种类型的 Job,构建 Job 的具体配置如下:
在指定的构建中有相关构建变量配置时,在 YAML 中设置构建变量才有效。
name:「Job 名称」 // 必填项
type: zadig-build // 必填项,指定为 zadig-build
spec: // 必填项
docker_registry_id: 「镜像仓库 ID」
service_and_builds: // 服务组件的构建信息,可配置多个服务组件
- service_module: 「服务组件名称」
service_name: 「服务名称」
build_name: 「构建名称」
key_vals: // 构建变量信息,支持配置字符串和枚举类型的变量,分别见如下 string 和 choice 类型的变量示例
- key: username // 构建变量名称
value: zadig // 构建变量值
is_credential: false // 是否加密,默认为 false
type: string
- key: password
value: v1
is_credential: false
type: choice
choice_option: // 枚举类型变量的可选值
- v1
- v2
- service_module: 「服务组件名称」 // 更多服务组件的构建信息
service_name: 「服务名称」
build_name: 「构建名称」
...
内置部署 Job 的具体配置如下:
name: 「Job 名称」 // 必填项
type: zadig-deploy // 指定为 zadig-deploy
spec:
env: 「部署环境」 // 必填项
source: 「部署时使用的服务镜像的来源」 // 必填项,可选:runtime(运行时输入) / fromjob(其他 Job 输出)
job_name: 「Job 名称」 // 当 source 为 fromjob 时需配置
YAML 样例
使用以下工作流配置为例:
- 第一个 Stage:包含构建 Job,并行构建 2 个服务(myapp-1 和 myapp-2)
- 第二个 Stage:包含部署 Job 并开启人工审核,使用上述构建 Job 中的镜像产物来部署 pre-release 环境
对应的完整 YAML 配置示例如下,供参考:
name: pre-release-deploy
stages:
- name: 构建
parallel: true
jobs:
- name: build-myapps
type: zadig-build
spec:
docker_registry_id: 6247eb0832a15f910118318c
service_and_builds:
- build_name: simple-service-build-nginx-1
key_vals:
- is_credential: false
key: username
type: string
value: admin
- is_credential: false
choice_option:
- v1
- v2
key: password
type: choice
value: v1
service_module: myapp-1
service_name: a
- build_name: simple-service-build-myapp-2
service_module: myapp-2
service_name: b
- name: 部署
approval:
enabled: true
approve_users:
- user_id: af14dfd2-b57d-11ec-9511-9e1ccf83f7b3
user_name: admin
- user_id: 2d59d2f4-c6a5-11ec-a89e-2e173601a9ce
user_name: zadig
timeout: 120
needed_approvers: 1
description: '预发布环境部署,需审核通过方可执行'
jobs:
- name: deploy
type: zadig-deploy
spec:
env: pre-release
job_name: build-myapps
source: fromjob
project: simple-service
description: 预发布环境部署
multi_run: false
自定义工作流样例
可在自定义工作流中自由编排流程,下面简单举例几种场景。
场景一:构建镜像到不同的仓库
配置多个构建 Job,每个 Job 中指定不同的镜像仓库。
场景二:同时部署多个环境
配置多个部署 Job,每个 Job 中指定不同的环境。
场景三:使用不同的镜像仓库来部署不同的环境
配置多个构建 Job,每个构建 Job 中指定不同的镜像仓库;为每个环境配置部署 Job,服务来源选择其他 Job 输出
并指定对应 Job。
场景四:审核通过后再部署环境
部署 Stage 配置中增加人工审核。
在部署步骤执行之前会触发审核,审核通过后工作流才会继续执行。
执行
点击执行工作流:
点击具体的构建 Job 可查看构建日志:
Job 名称规则为:
服务名-服务组件名-Job 名