Zadig v1.18.0 文档
  • 快速入门

    • 什么是 Zadig
    • 核心概念
    • 快速安装
    • 第一个项目
    • 接入准备
  • 安装与配置

    • 安装简介
    • All in One 模式
    • 使用 Sealos 一键安装
    • 基于 Helm 命令安装
    • 基于现有 Kubernetes 安装
    • 本地安装
    • 兼容性列表
  • 最佳实践
  • 项目

    • 项目

      • 项目介绍
      • K8s YAML 项目
      • K8s Helm Chart 项目
      • K8s 托管项目
      • 主机项目
      • 权限管理
    • 工作流

      • 简介
      • 产品工作流
      • 自定义工作流
      • 工作流任务
      • 工作流审批
      • 工作流通知
      • 工作流触发器
    • 环境

      • K8s YAML 环境
      • K8s Helm Chart 环境
      • K8s 托管环境
      • 主机环境
      • 服务详情
    • 服务

      • 简介
      • K8s YAML 测试服务
      • K8s Helm Chart 服务
      • K8s 托管服务
      • 服务组件
      • 服务变量
      • 主机服务
    • 构建
    • 测试
    • 代码扫描
  • 模板库

    • K8s YAML 模板
    • Helm Chart 模板
    • Dockerfile 模板
    • 构建模板
  • 工作流

    • 工作流的触发
    • 工作流的构建缓存
    • 工作流任务的并发运行
    • 工作流的镜像版本回退
    • 工作流的变量传递
  • 环境

    • 环境的负载均衡
    • 配置多套环境
    • 自测联调环境
  • 测试中心

    • 测试中心
    • 测试工具实践
    • Apipost 测试平台接入
    • Apifox 测试平台接入
  • 交付中心

    • 交付物追踪
  • 数据视图

    • 数据概览
    • 效能洞察
  • 仪表盘

    • 仪表盘
  • 集成管理

    • 账号系统

      • LDAP
      • OAuth 2.0
      • GitHub
    • 项目管理
    • 代码源

      • 简介
      • GitLab 集成
      • GitHub 集成
      • Gerrit 集成
      • Gitee 公有云集成
      • 其他代码源集成
    • CI/CD 工具
    • 代码扫描
    • 镜像仓库
    • 对象存储
    • Helm 仓库
    • Kubernetes 集群
    • 主机管理
    • 其他系统
    • 软件包管理
    • 自定义镜像管理
  • 系统设置

    • 系统配置
    • 用户管理
    • 公告管理
    • 操作日志
    • 通知设置
  • 账号设置

    • 偏好设置
  • 开发者中心

    • OpenAPI 开发文档

      • API 调用方式
      • 交付中心
      • 工作流
      • 效能洞察
    • 外部系统接入开发文档

      • 自定义账号系统
      • 自定义工作流任务
    • VS Code Toolkit 插件

      • 使用指南
  • 常见问题

    • 产品使用 FAQ
    • 部署运维 FAQ
    • 集群故障 FAQ
    • 认证鉴权 FAQ
    • 诊断手册
  • 版本发布历史

    • Zadig Roadmap
    • v1.18.0 Release Notes
    • v1.17.0 Release Notes
    • v1.16.0 Release Notes
    • v1.15.0 Release Notes
    • v1.14.0 Release Notes
    • v1.13.0 Release Notes
    • v1.12.0 Release Notes
    • v1.11.0 Release Notes
    • v1.10.0 Release Notes
    • v1.9.0 Release Notes
    • v1.8.0 Release Notes
    • v1.7.1 Release Notes
    • v1.7.0 Release Notes
    • v1.6.0 Release Notes
    • v1.5.0 Release Notes
    • v1.4.0 Release Notes
    • v1.3.1 Release Notes
    • v1.3.0 Release Notes
    • v1.2.0 Release Notes
    • v1.1.0 Release Notes
    • v1.0.0 Release Notes
    • v1.0.0-rc.1 Release Notes
  • 术语表

    • 术语表

自定义工作流中提供了充分的开放性,支持自由编排工作流流程,自定义执行步骤,下面展开介绍相关概念和具体使用。

基本概念

  • 自定义工作流:对工作流流程自由编排,由一系列阶段组成
  • 阶段:对工作流执行阶段进行逻辑分组,比如构建阶段、部署阶段...多个阶段串行运行,一个阶段可包括多个任务
  • 任务:一个完整的任务,比如构建、部署、测试、自定义任务...多个任务可串行执行或并发执行

新建

新建空白工作流

进入项目中点击新建工作流,选择自定义工作流,系统提供界面化和 YAML 两种方式来配置自定义工作流。

create_common_workflowcreate_common_workflow

界面化配置

基本信息

包括工作流名称、标识和描述信息:

  • 工作流名称:支持中文、大小写字母、数字及特殊字符,在所属项目中唯一,可修改。
  • 工作流标识:支持大小写字母、数字及中划线,全局唯一,不支持修改。
  • 描述:描述该工作流的详细信息,在工作留详情页展示。

common_workflow_config

阶段

点击 +阶段 增加新的阶段配置。

common_workflow_config

参数说明:

  • 阶段名称:在同一个自定义工作流中,阶段名称唯一
  • 并发执行:开启后,在该阶段下配置的多个任务将会并发执行
  • 前置步骤:可按需开启人工审批。开启后,需要审批通过,该阶段下的任务才会被执行

任务

点击阶段下方的 +任务 为阶段增加任务配置,系统目前支持构建、部署、通用任务、Kubernetes 部署、测试、自定义任务 等任务类型。点击工作流任务可查看目前 自定义工作流 和 发布工作流 所支持的任务类型。

人工审批

开启阶段配置中的人工审批,在该阶段执行之前会触发审批。具体如何使用可参考文档:审批。

YAML 方式配置

配置说明

用 YAML 文件的方式定义工作流,YAML 内容的整体结构描述如下:

display_name:「工作流名称」        // 必填项,项目内唯一,支持中文、大小写字母、数字及特殊字符
name:「工作流标识」                // 必填项,项目内唯一,支持大小写字母、数字及中划线
stages:                          // 必填项,多个阶段将会按照先后顺序执行
  - 「阶段 1 的配置」
  - 「阶段 2 的配置」
  - 「更多阶段的配置...」
project: 「工作流所属项目名称」      // 必填项
description: 「工作流描述」
multi_run: 「可选值:true/false」  // 当同时触发多次工作流时,多条任务是否能并行执行,默认为 false

其中每一个阶段的具体配置如下:

name: 「阶段的名称」              // 必填项
parallel: 「可选值:true/false」  // 该阶段下的多个任务是否可以并发执行,默认为 false
approval: 「人工审批配置」         // 非必填,按需配置
jobs:                           // 必填项
  - 「任务 1 的配置」
  - 「任务 2 的配置」
  - 「更多任务的配置...」

人工审批的具体配置如下:

enabled: true
type: 「审批类型」                     // lark : 飞书审批 native:Zadig 审批
description: 「审批描述信息」
  native_approval:
    approve_users:                   // Zadig 审批人信息
      - user_id: 「审批人 ID」
        user_name: 「审批人昵称」
    needed_approvers: 「需要审批的人数」 // 整数类型
    timeout: 10                       // 整数类型,单位:分钟
  lark_approval:
    timeout: 10
    approval_id: 「审批应用 ID」
    approve_users:
      - id: 「审批人 ID」
        name: 「审批人昵称」
        avatar:  「审批人头像」

目前内置了构建和部署两种类型的任务,构建任务的具体配置如下:

在指定的构建中有相关构建变量配置时,在 YAML 中设置构建变量才有效。

name:「任务的名称」                    // 必填项
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: 「构建名称」
      ...

内置部署任务的具体配置如下:

name: 「任务的名称」                    // 必填项
type: zadig-deploy                   // 指定为 zadig-deploy
spec:
  env: 「部署环境」                    // 必填项
  source: 「部署时使用的服务镜像的来源」  // 必填项,可选:runtime(运行时输入) / fromjob(其他任务输出)
  job_name: 「任务的名称」             // 当 source 为 fromjob 时需配置

YAML 样例

使用以下工作流配置为例:

  1. 第一个阶段:包含构建任务,并行构建 2 个服务(myapp-1 和 myapp-2)
  2. 第二个阶段:包含部署任务并开启人工审批,使用上述构建任务中的镜像产物来部署 pre-release 环境

对应的完整 YAML 配置示例如下,供参考:

name: pre-release-deploy
display_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
      type: native
      description: '预发布环境部署,需审批通过方可执行'
      native_approval:
        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
    jobs:
      - name: deploy
        type: zadig-deploy
        spec:
          env: pre-release
          job_name: build-myapps
          source: fromjob
project: simple-service
description: 预发布环境部署
multi_run: false

变量

自定义工作流中提供丰富的变量能力,以支持参数化配置工作流,并且支持通过变量在任务、阶段、工作流、项目之间传递信息。

内置变量

变量来源变量说明
项目{{.project}}项目名称
工作流{{.workflow.name}}工作流标识
{{.workflow.task.id}}工作流任务的 ID 序号,下图例中即为 1
{{.workflow.task.creator.id}}工作流任务执行者的用户名,下图例中即为 admin
{{.workflow.task.creator}}工作流任务执行者的昵称,下图例中即为 admin-nickname
{{.workflow.task.timestamp}}工作流任务创建时的 Unix 时间戳,下图例中即为 1686642562
构建任务{{.job.<任务名称>.SERVICES}}执行构建任务所选的服务组件名称集合
变量的值形如 aslan/zadig,zadig-portal/zadig (服务组件名称/服务名称)
{{.job.<任务名称>.BRANCHES}}执行构建任务所选的服务组件对应的第一个代码库的分支信息集合
变量的值形如 feature1,feature2,feature3
{{.job.<任务名称>.<服务>.<服务组件>.COMMITID}}指定服务组件的第一个仓库的 commit 信息
{{.job.<任务名称>.<服务>.<服务组件>.BRANCH}}指定服务组件时的第一个仓库的分支信息
部署任务{{.job.<任务名称>.envName}}部署环境

common_workflow_config

自定义变量

编辑工作流,点击页面右侧的 变量 为工作流配置自定义变量。

参数说明:

  • 类型:支持字符串/多行文本/枚举/代码库类型
    • 字符串类型的值为单行文本
    • 在系统设置中集成代码源后,才能配置代码库类型变量的值,代码源集成请参考代码源集成
    • 代码库类型的变量可用于通用任务的代码信息配置中
  • 键:自定义变量的键
  • 值:自定义变量的值,支持运行时输入和固定值两种配置方式,详细介绍可参考文档 变量赋值方式

变量赋值方式

点击变量右侧的小图标为变量赋值,不同的赋值方式说明如下:

  • 运行时输入:执行工作流时再指定该变量的值
  • 固定值:设置变量值为固定值,工作流执行时页面中该变量不可见,无需再为该变量赋值
  • 全局变量/其他任务输出:使用全局变量或其他任务输出的变量来赋值,工作流执行时会自动对全局变量进行渲染,实现不同任务之间的变量传递
    • 支持的全局变量包括 内置变量 和 自定义变量
    • 若使用 其他任务输出,需要先为任务配置输出变量,参考文档:配置输出变量

common_workflow_config

变量传递

支持在不同的任务之间传递变量,传递流程:

  1. 在前置任务的高级配置中声明要输出的变量
  2. 在后置任务中通过全局变量/其他任务输出的方式使用该变量

配置输出变量

构建/测试/代码扫描/通用任务中支持配置输出变量,不同任务输出变量的形式如下:

  • 构建任务:{{.job.<任务名称>.<服务名称>.<服务组件名称>.output.<变量名>}}
  • 测试任务:{{.job.<任务名称>.<测试名称>.output.<变量名>}}
  • 代码扫描任务:{{.job.<任务名称>.<代码扫描名称>.output.<变量名>}}
  • 通用任务:{{.job.<任务名称>.output.<变量名>}}

以构建任务进行示例,在高级配置中添加输出变量,填写变量名。

提示

  1. 添加的变量可来自于构建配置中的自定义变量,或者在构建脚本中设置的变量,比如 export key=value
  2. 系统默认会输出构建中的 IMAGE 和 PKG_FILE 变量,分别表示服务的镜像名称和交付物文件名称

common_workflow_config

使用输出变量

支持全局变量/其他任务输出配置方式的任务可参考文档:不同任务中支持的配置方式。
以通用任务自定义变量进行示例:在通用任务中为变量赋值时指定为全局变量/其他任务输出,并选择在前置任务中配置的输出变量,即可实现不同任务之间的变量传递。

触发器配置

为工作流配置触发器,当满足触发条件的事件发生时会自动触发工作流执行,支持 Git 触发器、定时器和通用触发器,具体如何使用可参考文档:工作流触发器。

common_workflow_configcommon_workflow_config

通知配置

编辑工作流,点击右侧的 通知 进入通知配置页面。

common_workflow_config

目前支持配置工作流通知到飞书/企业微信/钉钉中,详细的配置参数说明可参考:IM 状态通知。

common_workflow_config

通知消息中会包含工作流所有任务的执行情况,对于构建任务、部署任务和测试任务,在通知内容中的名称规则如下:

  • 构建任务:服务名称-服务组件名称-构建任务名称
  • 部署任务:服务名称-部署任务名称
  • 测试任务:测试名称-测试任务名称-随机字符串

以飞书示例通知效果:

common_workflow_config

高级配置

在高级配置 > 运行策略可设置是否开启并发执行,开启后,多次触发工作流执行产生的多条工作流任务将会并发执行,提升工作流运行效率。

common_workflow_config

自定义工作流样例

可在自定义工作流中自由编排流程,下面简单举例几种场景。

场景一:构建镜像到不同的仓库

配置多个构建任务,每个任务中指定不同的镜像仓库。

common_workflow_demo

场景二:同时部署多个环境

配置多个部署任务,每个任务中指定不同的环境。

common_workflow_demo

场景三:使用不同的镜像仓库来部署不同的环境

配置多个构建任务,每个构建任务中指定不同的镜像仓库;为每个环境配置部署任务,服务来源选择其他任务输出并指定对应任务。

common_workflow_demo

场景四:审批通过后再部署环境

部署阶段配置中增加人工审批。

common_workflow_democommon_workflow_demo

在部署步骤执行之前会触发审批,审批通过后工作流才会继续执行。

common_workflow_demo

执行

点击执行工作流,可修改工作流变量的值,按需选择被执行的任务:

若工作流变量的值被设置为固定值,则执行工作流时该变量在页面中不可见。

run_common_workflow

点击具体的构建任务可查看构建日志:

任务名称规则为:服务名-服务组件名-任务名

run_common_workflow

工作流执行失败后可操作重试再次执行,再次触发后将会从失败的任务开始执行,前置成功的任务(包括审批)将不会再被执行。

run_common_workflow

变量传递

支持在不同的任务之间传递变量,传递流程:

  1. 前置任务中声明要输出的变量以及对应值
  2. 后置任务中通过全局变量/其他任务输出的方式使用该变量

设置输出变量

构建

在 项目 -> 构建 中,对需要增加输出变量的构建进行编辑。

构建编辑

在 高级配置 中可以看到输出变量模块,默认内置 IMAGE 和 PKG_FILE,也可根据需要自行添加变量。

内置变量表

构建变量

测试

在 项目 -> 测试 中,对需要增加输出变量的测试进行编辑。

测试编辑

在 高级配置 中可以看到输出变量模块,可以根据需要自行添加变量。

测试变量

代码扫描

在 项目 -> 代码扫描 中,对需要增加输出变量的代码扫描进行编辑。

代码扫描编辑

在 高级配置 中可以看到输出变量模块,可以根据需要自行添加变量。

代码扫描变量

工作流-通用任务

在 项目 -> 工作流 -> 任务 中,选择 通用任务 进行编辑。

通用任务编辑

在 高级配置 中可以看到输出变量模块,可以根据需要自行添加变量。

通用任务变量

使用输出变量

构建

在 项目 -> 工作流 -> 任务 -> 构建 中,选择所需的服务组件,进行变量配置,可以选择 「全局变量/其他任务输出」。

构建变量使用

部署

在 项目 -> 工作流 -> 任务 -> 部署 中,配置服务,可以选择 「全局变量/其他任务输出」。

部署变量使用

通用任务

在 项目 -> 工作流 -> 任务 -> 通用任务 中,进行变量自定义,可以选择 「全局变量/其他任务输出」。

通用任务变量使用

触发 Zadig 工作流

在 项目 -> 工作流 -> 任务 -> 触发 Zadig 工作流 中,配置变量,可以选择 「全局变量/其他任务输出」。

通用任务变量使用

测试

在 项目 -> 工作流 -> 任务 -> 测试 中,对测试进行变量配置,可以选择 「全局变量/其他任务输出」。

测试变量使用

自定义变量

在 项目 -> 工作流 -> 自定义任务 中,选择所需配置的变量,可以在值中选取 「全局变量/其他任务输出」。

自定义变量使用

共享存储

Zadig 现已支持在工作流任务中实现共享存储,具体操作步骤如下:

  1. 对集群资源进行配置,定义共享的存储资源。
  2. 对工作流进行配置,添加共享目录。
  3. 在工作流的任务中开启共享并应用,实现任务间的共享存储

集群资源配置

在 系统设置 -> 集群管理 中选择需要指定存储资源进行共享的集群,点击 编辑 。

编辑集群

在修改集群的弹窗中找到 共享存储资源配置 ,点击 +添加 。 共享存储资源

可以选择 动态生成资源 或 使用现有存储资源 。

动态生成资源:需要选择 Storage Class 并填入存储空间大小。

使用现有存储资源:指定 PVC即可。

配置共享存储

工作流配置

选择需要使用共享存储的工作流,点击 高级配置。 工作流共享存储

点击共享存储旁的 添加 ,并填写名称和共享的目录,完成后点击 确定 进行保存。 工作流共享存储工作流共享存储

工作流任务配置

构建/测试/代码扫描

在 构建/测试/代码扫描 中,点击 构建配置/测试配置/扫描配置中的 共享存储配置 ,开启共享存储并完成共享目录配置。

工作流任务共享存储工作流任务共享存储工作流任务共享存储

通用任务/自定义任务

在 通用任务/自定义任务 中,点击 高级配置 -> 开启共享存储,选择共享目录,完成配置。 工作流任务共享存储

Prev
产品工作流
Next
工作流任务