Благодаря этому посту я знаю, как передавать параметры из моего конвейера yml через задачу AzureResourceManagerTemplateDeployment
в мой скрипт IaC бицепса. Однако мой аргумент поступает в виде строки, хотя я указал их в файле Pipeline.yml как логические значения.
Это приводит к ошибке 'The provided value for the template parameter 'my_parameter_inside' is not valid. Expected a value of type 'Boolean', but received a value of type 'String'.
Мой конвейер.yml
parameters:
- name: my_parameter
displayName: Deploy spark pools
type: boolean
default: false
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
csmFile: $(bicep_file_name)
csmParametersFile: $(bicep_parameter_file_name)
...
overrideParameters: -my_parameter_inside ${{ parameters.my_parameter }}
Параметр внутри моего файла бицепса:
@description('Enable/Disable something')
param my_parameter_inside bool = true
Как я могу гарантировать, что значение передается как логическое значение?
Я нашел ошибку в GitHub, в которой кто-то нашел обходной путь проблемы — нам нужно передать его в нижнем регистре, чтобы он был распознан как логическое значение, поскольку в противном случае он был бы передан как False
вместо false
, и Bicep его не принимает. .
-> ${{ lower(parameters.my_parameter) }}
Рабочий конвейер.yml
parameters:
- name: my_parameter
displayName: Deploy spark pools
type: boolean
default: false
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
csmFile: $(bicep_file_name)
csmParametersFile: $(bicep_parameter_file_name)
...
overrideParameters: -my_parameter_inside ${{ lower(parameters.my_parameter) }}
Спасибо, что поделились решением. Я заметил, что есть билет с предложением попросить не использовать логический параметр с заглавной буквы. Вы можете проголосовать и добавить несколько комментариев, чтобы повысить приоритет.
Здесь немного сложнее. Я только что проверил, используя ${{ low(parameters.my_parameter) }}, это тоже работает. Но я хочу сказать, что логические параметры всегда рассматриваются как строка в более позднем встроенном скрипте или
AzureResourceManagerTemplateDeployment@3
, поэтому сначала необходимо преобразовать строкуtrue
илиfalse
в boolTrue
илиFalse
, а затем использовать ее.