在当今数字化时代,高效、灵活的工作流管理对于企业软件开发至关重要。Zadig 工作流引擎凭借其卓越的变量处理能力,为企业提供了一种强大的工具,以应对复杂多变的开发场景。
本文将深入解析 Zadig 工作流变量的概念、原理,并通过实际应用场景,展示如何利用这些变量机制实现工作流的自动化与优化。
# 基本概念及原理
Zadig 工作流变量是工作流引擎的核心功能之一,它赋予了工作流灵活配置与自动化执行的强大能力。通过支持多种类型的变量和丰富的变量值来源,Zadig 能够有效解决复杂工作流场景中参数传递与共享的难题。
Zadig 支持多种类型的变量,包括但不限于:
- 字符串:用于存储简单的文本信息。
- 单选:提供一组预定义的选项,用户只能选择其中一个。
- 多选:允许用户从多个选项中选择多个值。
- 动态变量:根据运行时的上下文动态生成的变量。
- 代码库:与代码仓库相关联的变量,用于版本控制和代码管理。
同时 Zadig 提供了多种变量值来源,以满足不同用户场景的需求:
- 运行时输入:在执行工作流时,用户可以指定变量值,从而根据不同的执行需求动态调整工作流执行参数。这使得工作流能够灵活应对多变的执行场景。
- 固定值:在配置工作流时,用户可以指定固定变量值,执行时该值不可更改。这为工作流的稳定执行提供了保障,适用于一些确定不变的参数设置。
- 其他任务输出/全局变量:执行时自动从全局变量或其他任务输出中获取变量值,实现不同任务之间的变量传递,打破任务间的壁垒,让信息能够在整个工作流中顺畅流动。
变量在各个任务之间可以相互传递(如图示)。每个任务的输入允许来自前置任务,确保了信息在工作流中的连续性和一致性,从而支持自动化的工作流程。
# 使用场景
# 运行时输入场景
在执行工作流时,每次执行可能需要输入不同的变量值。例如,在构建 Java 服务时,可以选择是否执行测试过程。通常通过修改 Maven 的属性 -Dmaven.test.skip=true
来实现,从而控制是否跳过测试阶段。针对这类场景,在 Zadig 上的具体配置步骤如下:
- 在构建任务中声明和引用自定义变量
skipTest
- 在工作流中配置构建变量
skipTest
来源为运行时输入
和默认值true
执行工作流时,可以根据实际情况输入或选择相应的变量值,以适用不同的执行需求和场景。
# 工作流指定变量值场景
为了减轻构建脚本的维护负担,Zadig 支持多个工作流使用同一份构建配置。然而,针对不同工作流场景,构建执行命令存在一些差异。例如,前端项目在构建命令中区分开发环境和生产环境,开发工作流中使用 yarn run build:dev
构建,而在生产发布工作流中使用yarn run build:prod
构建。针对这类场景,在 Zadig 上的具体配置步骤如下:
- 在构建中声明和引用自定义变量
buildEnv
- 在工作流中配置构建变量来源为
固定值
,并配置变量值
执行工作流时,固定值的变量不会展示在任务变量中,从而简化操作流程,减少工程师在每次执行任务时需要关注的参数数量。
# 变量传递场景
# 自定义构建镜像名称
构建脚本中的自定义镜像
Zadig 内置了一套标准的镜像名称规则,但在实际应用中,一些特殊场景需要自定义镜像名称。在 Zadig 构建模块中,可以通过设置 IMAGE 值来实现自定义镜像名称,具体配置步骤如下:
- 在构建脚本里生成完整的镜像地址。
- 将生成的镜像地址赋值给 IMAGE 变量。
执行工作流时,构建任务输出的 IMAGE 变量可以传递给下游任务,例如部署任务可以从上游构建任务中获取IMAGE 变量值,从而进行相应的部署操作,确保部署任务执行的准确性。
# 自动化测试联动环境
在进行自动化测试时,通常需要环境信息作为测试执行的入参。为了实现整个「构建」->「部署」->「测试」流程,必须使测试任务能够获取到部署阶段的环境信息。针对这种场景,在 Zadig 上的具体配置步骤如下:
- 在测试任务中声明并引用自定义变量
testEnv
- 在工作流中配置测试变量
testEnv
来源为「其他任务输出」,选择部署任务输出的变量{{.job.deploy.output.envName}}
执行工作流时,部署任务会将 envName
变量传递给测试任务,这种联动机制确保了测试环境的准确性和测试结果的可靠性。
# 从代码扫描到构建步骤的代码信息传递
在「代码扫描」->「构建」->「部署」这样的流程中,需要保证构建中使用的代码信息和代码扫描中一致。针对这类场景,Zadig 工作流支持任务间串接代码信息。具体配置步骤如下:
- 在工作流中配置服务级别的代码扫描任务。
- 在工作流构建任务中,服务组件来源选择为前置的代码扫描任务,并勾选「引用所选任务代码信息」。
执行工作流时,相同代码库构建中使用的分支、Pull Request、Tag 等信息和代码扫描任务中选择的一致。这种信息传递机制确保了代码质量和一致性,并简化了工程师的操作。
# 小结
Zadig 工作流系统的变量功能为自动化流程提供了强大的支持,使得复杂的开发、测试和部署流程变得更加灵活和高效。通过合理的变量配置和传递,企业可以更好地管理软件开发周期,提高生产力和产品质量。无论是简单的单任务工作流,还是复杂的多任务流程,Zadig 都能够提供可靠的解决方案,助力企业在快速变化的技术环境中保持竞争力。