Я развертываю пакеты приложений Service Fabri c, и у меня есть несколько (~ 15) сред разработки, каждая из которых может использоваться для тестирования исправления кода. Я могу передать служебное соединение, поэтому развертывание окончательного пакета не является проблемой. Чего я не могу понять, так это как установить переменные c для другой среды на основе целевой среды. Я попытался использовать имя Service Connection, чтобы выбрать один из нескольких файлов шаблонов переменных:
variables:
- name: envTemplateFileTest
${{ if eq( variables['DevConnection'], 'Environ01' ) }}:
value: ../Templates/DEV01-Variables-Template.yml
${{ if eq( variables['DevConnection'], 'Environ02' ) }}:
value: ../Templates/DEV02-Variables-Template.yml
... (snip) ...
variables:
- template: ${{ variables.envTemplateFile }}
Но переменные пользовательского интерфейса не устанавливаются во время компиляции. Таким образом, выражения шаблона видят пустые значения и дают сбой.
Я мог бы использовать переменную конвейера, но тогда QA пришлось бы вносить изменения в файл и проверять их каждый раз, когда они хотят развернуть в среде, отличной от прошлой.
В настоящее время у меня есть пустой шаблон переменной и скрипт powershell, который устанавливает значения на основе разных имен сценариев.
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: '$(Build.ArtifactStagingDirectory)\drop\Deployment\Code\Scripts\Set-$(DevConnection)Variables.ps1'
#arguments: # Optional
displayName: Set environment variables
Должен быть способ получше, чем этот. Пожалуйста.