如何解决将变量组移动到代码存储库并从 YAML 管道中引用它
我们正在寻找如何将非秘密变量从变量组移动到代码存储库中的解决方案。 我们希望有这样的可能性:
问题: 我们定义了 100 多个变量组,这些变量组被 100 多个 YAML 管道引用。 它们在不同的管道/阶段/作业级别注入取决于它们运行的环境/组件/阶段。
示例问题:
可能的解决方案:
- 应该可以使用简单的 yaml 模板变量文件来模拟变量组,并使用以下方法将带有变量组的 yaml 模板包含到主 yaml 中:Variable reuse。
# File: variable-group-component.yml
variables:
myComponentvariable: 'SomeVal'
# File: variable-group-environment.yml
variables:
myEnvVariable: 'DEV'
# File: azure-pipelines.yml
variables:
- template: variable-group-component.yml # Template reference
- template: variable-group-environment.yml # Template reference
#some stages/jobs/steps:
理论上,将变量组转换为 YAML 模板文件并从 YAML 中引用它们应该很容易,而不是使用对变量组的引用。
# Current reference we use
variables:
- group: "Current classical variable group"
然而,即使没有实施这种方法,我们的管道也达到了以下限制:“不能(直接或间接)包含超过 100 个单独的 YAML 文件”
考虑到我们希望变量组在逻辑上进行粒度化和分离,而不是存储在一个大的 yml 文件中(为了不达到工作代理中变量数量的另一个限制),我们不能去这样。
##vso[task.setvariable variable=one]secondValue.
但它只能在初始作业级别完成,作为第一步,它看起来像是 Azure DevOps 中原生提供的重新设计的变量组机制。
当当前使用变量时,我们不确定这种方法是否适用于 YAML 管道中的任何地方。在某处,它们作为参数传递给任务。等
- 将所有变量移到 Key Vault Secret 中?我们一开始就放弃了这个选项,因为密钥保管库是存储敏感数据的地方,而不是任何人都可以看到的设置。此外,将其存储在秘密中会导致管道日志使用 * 而不是真实的配置设置并混淆管道运行日志信息。
问题:
第一季度。关于如何在 Azure DevOps YAML 管道中实现变量版本控制/更改跟踪,您还有其他建议/替代方案吗?
第 2 季度。 2. 可能的解决方案中是否有任何问题,或者有更好的想法?
解决方法
您可以将其视为替代方案:
- 将您的非机密变量存储在存储库中的 json 文件中
- 创建管道以将变量推送到 App Configuration(而不是 Vault)
- 然后,如果您在应用中需要此设置,请确保您从应用中引用应用配置,而不是在 Azure Devops 中运行替换任务。或者,如果您需要直接通过管道进行此设置 Pull them from App Configuration
缺点:
- 与您在 Powershell 案例中提到的相同。你需要做到工作级别
你得到了什么:
- 在仓库中跟踪
- 跟踪应用配置和 App Configuration 的所有优点
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。