变量库中的值集为定义的变量提供替代值集,支持特定于环境的配置(例如,开发、测试、生产)、A/B 测试或同一工作区中的数据源切换等方案。
每个值集是一个指向默认变量值的指针集合,可以根据需要覆盖默认值。 给定工作区一次只能有一个值集处于活动状态,用户可以通过 UI 或 API 轻松切换活动集。
值集在库中唯一命名,可以重命名、重新排序(仅通过 git 或定义 API 更新)或删除(具有防止删除活动集而不重新分配的安全措施)。 系统跟踪更改并强制实施大小限制,以确保性能,并在保存之前验证对值集所做的任何修改。 此结构支持可靠的配置管理,使开发人员能够自动执行部署,并在多个环境和阶段之间保持一致性。
值集的结构和实现
变量库项的定义是结构化的,以支持多个值集。 在项的架构(其 JSON 定义)中,所有变量及其默认值都列在主部分(通常称为 Git 中的“默认值”文件)。 每个附加值集都存储为单独的实体(或文件),其中包含与默认值不同的变量。 换句话说,如果给定值集中变量的值与默认值相同,则该值集的定义中不会显式重复。
默认值集: 始终存在并包含每个变量的基线值(以及名称和类型等元数据)。 默认值文件使用默认值(主)值枚举所有变量。
备用值集:对于每个额外值集(例如,“Test”或“Prod”值集),定义仅列出那些覆盖默认值的变量。 如果变量未在特定值集文件中列出,则它隐式使用该集的默认值。
示例:如果你有一个默认值为“dev-server”的变量 ConnectionString,并且你创建了一个“Production”值集,并将其重写为“prod-server”,则默认定义将具有 ConnectionString = “dev-server”,而“Production”值集的文件将包含 ConnectionString = “prod-server”(对于保持不变的变量没有任何内容)。 此方法使值集定义保持精简,并仅突出显示差异。
源代码管理表示形式
在 Fabric 的 Git 集成中,上述架构将转换为变量库文件夹下的多个文件。 根据设计,每个值集都序列化为自己的 JSON 文件(以值集命名),其中包含其替代,与默认值文件分开。 例如,VL 项“MyVars”可能具有:
MyVars_Default.json – 所有变量的默认值。 MyVars_Prod.json – 仅包含在“Prod”阶段值有所不同的变量。 MyVars_Test.json – 只有值与“测试”阶段不同的变量。
这种明确的分离意味着可以在源代码管理中独立跟踪每个环境的配置更改。
重要的是,活动值集选择不属于这些定义文件 - 它存储为项状态(工作区级设置),以便部署或导入该项不会覆盖给定工作区中当前处于活动状态的值集。 (有关活动值集的更多信息,请参见下文。)
架构和数据类型
值集不会引入新的数据类型;它们保存每个 变量定义的相同类型的值。 项定义记录每个变量的名称、类型、默认值和可选注释。 复杂变量类型(如 项引用)具有结构化架构(用于存储 ID),而这些值则在每个值集中通过一致的 JSON 结构来表示(例如,项引用记录该阶段项的工作区 ID 和项 ID)。 所有值集文件都遵循与默认值相同的架构结构:实质上是变量名称与该集的值的映射(仅包括与默认值分离的架构结构)。
值集的命名约定
变量库内设置的值的名称必须遵循以下约定:
- 不为空
- 没有前导空格或尾随空格
- 以字母或下划线开头
- 可以包括字母、数字、下划线和连字符
- 长度不超过 256 个字符
变量具有定义的值后,如果尝试更改其类型,将显示同意对话框。 对话框会提醒你将重置所有变量值,并且此更改可能是使用者项端的重大更改。
注意事项和限制
替代值集的限制
- 变量库中的替代值集以添加变量库的顺序显示。 目前,无法在 UI 中对它们重新排序。 若要更改顺序,请直接编辑 JSON 文件。
- 每个值集的名称在变量库中必须是唯一的。
- 变量名称在变量库中必须唯一。 如果变量位于不同的项中,则可以在工作区中具有同名的两个变量。
- 一次变量库中始终设置一个(且只有一个)活动值。 在活动时,无法删除设置的值。 若要删除它,请先配置设置为活动的另一个值。 可以为部署管道的每个阶段设置不同的活动值。