如何在Azure Pipeline中将运行时参数更新到parameters.json并实现条件赋值?
Azure DevOps Pipeline ARM告警配置问题解决方案
1. 直接将运行时参数更新到parameters.json的实现方法
不需要提前在变量区定义对应变量,也不需要额外加Bash任务输出变量,直接通过Replace Tokens任务的additionalVariables配置项传入运行时参数即可完成替换:
- 首先在
parameters.json中定义的占位符名称和你设置的运行时参数名称保持一致,默认占位符格式为#{参数名}#,例如你设置了运行时参数alertThreshold,就在parameters.json对应位置写#{alertThreshold}# - 在Replace Tokens任务的配置中新增
additionalVariables字段,按目标参数名=$(运行时参数名)的格式传入所有需要替换的运行时参数,示例配置如下:
- task: replacetokens@5 inputs: targetFiles: '**/parameters.json' encoding: 'auto' tokenPattern: 'default' actionOnMissing: 'warn' additionalVariables: | alertThreshold=$(alertThreshold) evaluationFrequency=$(evaluationFrequency) alertSeverity=$(alertSeverity) useLegacyPattern: false enableTelemetry: false
2. 按告警类别加载对应参数值的实现方法
直接使用Azure DevOps Pipeline原生的编译时条件判断能力即可实现不同告警类型加载不同参数值,操作逻辑如下:
- 首先定义用于选择告警类别的运行时参数,以及不同告警类别对应的专属参数,示例参数定义:
parameters: - name: alertType type: string displayName: 告警类型 values: - metricmeasurement - count - name: metricThreshold # metricmeasurement类型专属阈值 type: number default: 80 - name: countThreshold # count类型专属阈值 type: number default: 10 - name: metricWindowSize # metricmeasurement类型专属时间窗口 type: string default: 5m - name: countWindowSize # count类型专属时间窗口 type: string default: 15m
- 新增条件判断的变量映射,根据你选择的
alertType参数值自动给通用替换变量赋值:
variables: ${{ if eq(parameters.alertType, 'metricmeasurement') }}: targetThreshold: ${{ parameters.metricThreshold }} windowSize: ${{ parameters.metricWindowSize }} queryType: "MetricMeasurement" ${{ if eq(parameters.alertType, 'count') }}: targetThreshold: ${{ parameters.countThreshold }} windowSize: ${{ parameters.countWindowSize }} queryType: "Count"
- 最后在
parameters.json中统一使用通用变量的占位符#{targetThreshold}#、#{windowSize}#、#{queryType}#即可,替换任务会自动加载当前告警类型对应的参数值。
内容的提问来源于stack exchange,提问作者Vowneee
相关产品推荐
相关产品推荐

