Zadig 工作流变量机制深度解析与应用指南

探索 Zadig 工作流变量,解锁高效开发密码

cover.png

在当今数字化时代,高效、灵活的工作流管理对于企业软件开发至关重要。Zadig 工作流引擎凭借其卓越的变量处理能力,为企业提供了一种强大的工具,以应对复杂多变的开发场景。

本文将深入解析 Zadig 工作流变量的概念、原理,并通过实际应用场景,展示如何利用这些变量机制实现工作流的自动化与优化。

# 基本概念及原理

Zadig 工作流变量是工作流引擎的核心功能之一,它赋予了工作流灵活配置与自动化执行的强大能力。通过支持多种类型的变量和丰富的变量值来源,Zadig 能够有效解决复杂工作流场景中参数传递与共享的难题。

Zadig 支持多种类型的变量,包括但不限于:

  • 字符串:用于存储简单的文本信息。
  • 单选:提供一组预定义的选项,用户只能选择其中一个。
  • 多选:允许用户从多个选项中选择多个值。
  • 动态变量:根据运行时的上下文动态生成的变量。
  • 代码库:与代码仓库相关联的变量,用于版本控制和代码管理。

01.png

同时 Zadig 提供了多种变量值来源,以满足不同用户场景的需求:

  • 运行时输入:在执行工作流时,用户可以指定变量值,从而根据不同的执行需求动态调整工作流执行参数。这使得工作流能够灵活应对多变的执行场景。
  • 固定值:在配置工作流时,用户可以指定固定变量值,执行时该值不可更改。这为工作流的稳定执行提供了保障,适用于一些确定不变的参数设置。
  • 其他任务输出/全局变量:执行时自动从全局变量或其他任务输出中获取变量值,实现不同任务之间的变量传递,打破任务间的壁垒,让信息能够在整个工作流中顺畅流动。

变量在各个任务之间可以相互传递(如图示)。每个任务的输入允许来自前置任务,确保了信息在工作流中的连续性和一致性,从而支持自动化的工作流程。

02.png

# 使用场景

# 运行时输入场景

在执行工作流时,每次执行可能需要输入不同的变量值。例如,在构建 Java 服务时,可以选择是否执行测试过程。通常通过修改 Maven 的属性 -Dmaven.test.skip=true来实现,从而控制是否跳过测试阶段。针对这类场景,在 Zadig 上的具体配置步骤如下:

  1. 在构建任务中声明和引用自定义变量 skipTest
  2. 在工作流中配置构建变量skipTest来源为运行时输入和默认值 true

构建中声明变量

工作流中配置变量来源

执行工作流时,可以根据实际情况输入或选择相应的变量值,以适用不同的执行需求和场景。

输入或者选择变量值

# 工作流指定变量值场景

为了减轻构建脚本的维护负担,Zadig 支持多个工作流使用同一份构建配置。然而,针对不同工作流场景,构建执行命令存在一些差异。例如,前端项目在构建命令中区分开发环境和生产环境,开发工作流中使用 yarn run build:dev 构建,而在生产发布工作流中使用yarn run build:prod 构建。针对这类场景,在 Zadig 上的具体配置步骤如下:

  1. 在构建中声明和引用自定义变量 buildEnv
  2. 在工作流中配置构建变量来源为固定值,并配置变量值

06.png

07.png

执行工作流时,固定值的变量不会展示在任务变量中,从而简化操作流程,减少工程师在每次执行任务时需要关注的参数数量。

08.png

# 变量传递场景

# 自定义构建镜像名称

构建脚本中的自定义镜像

Zadig 内置了一套标准的镜像名称规则,但在实际应用中,一些特殊场景需要自定义镜像名称。在 Zadig 构建模块中,可以通过设置 IMAGE 值来实现自定义镜像名称,具体配置步骤如下:

  1. 在构建脚本里生成完整的镜像地址。
  2. 将生成的镜像地址赋值给 IMAGE 变量。

09.png

执行工作流时,构建任务输出的 IMAGE 变量可以传递给下游任务,例如部署任务可以从上游构建任务中获取IMAGE 变量值,从而进行相应的部署操作,确保部署任务执行的准确性。

10.png

# 自动化测试联动环境

在进行自动化测试时,通常需要环境信息作为测试执行的入参。为了实现整个「构建」->「部署」->「测试」流程,必须使测试任务能够获取到部署阶段的环境信息。针对这种场景,在 Zadig 上的具体配置步骤如下:

  1. 在测试任务中声明并引用自定义变量 testEnv
  2. 在工作流中配置测试变量testEnv来源为「其他任务输出」,选择部署任务输出的变量 {{.job.deploy.output.envName}}

测试中定义变量

工作流中配置变量值来自部署任务

执行工作流时,部署任务会将 envName 变量传递给测试任务,这种联动机制确保了测试环境的准确性和测试结果的可靠性。

# 从代码扫描到构建步骤的代码信息传递

在「代码扫描」->「构建」->「部署」这样的流程中,需要保证构建中使用的代码信息和代码扫描中一致。针对这类场景,Zadig 工作流支持任务间串接代码信息。具体配置步骤如下:

  1. 在工作流中配置服务级别的代码扫描任务。
  2. 在工作流构建任务中,服务组件来源选择为前置的代码扫描任务,并勾选「引用所选任务代码信息」。

13.png

14.png

执行工作流时,相同代码库构建中使用的分支、Pull Request、Tag 等信息和代码扫描任务中选择的一致。这种信息传递机制确保了代码质量和一致性,并简化了工程师的操作。

15.png

# 小结

Zadig 工作流系统的变量功能为自动化流程提供了强大的支持,使得复杂的开发、测试和部署流程变得更加灵活和高效。通过合理的变量配置和传递,企业可以更好地管理软件开发周期,提高生产力和产品质量。无论是简单的单任务工作流,还是复杂的多任务流程,Zadig 都能够提供可靠的解决方案,助力企业在快速变化的技术环境中保持竞争力。

Background Image

作为一名软件工程师,我们一直给各行各业写软件提升效率,但是软件工程本身却是非常低效,为什么市面上没有一个工具可以让研发团队不这么累,还能更好、更快地满足大客户的交付需求?我们是否能够打造一个面向开发者的交付平台呢?我们开源打造 Zadig 正是去满足这个愿望。

—— Zadig 创始人 Landy