Я использую Yaml для конвейера DevOps Azure. Я использую для этого иерархический стиль.
У меня есть один yaml верхнего уровня: feature.yaml, который имеет следующую структуру:
trigger:
...
pool:
vmImage: ...
variables:
group: ...
stages:
- template: deploy.yaml
parameters:
subName: $(subscription) #This should be taken from Variable group
У меня deploy.yaml как:
stages:
- stage: deploy
jobs:
- job: deploy
steps:
- task: [email protected]
inputs:
azureSubscription: $(paramaters.subName) #This should be resolved from parameter passed form feature.yaml
KeyVaultName: ...
SecretsFilter: '*'
RunAsPreJob: true
Однако всякий раз, когда я запускаю это из Azure DevOps, я получаю следующую ошибку:
There was a resource authorization issue: "The pipeline is not valid. Job deploy: Step AzureKeyVault input ConnectedServiceName references service connection $(paramaters.subName) which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz."
Кажется, конвейер не может разрешить значение имени azureSubscription из группы переменных.
Какие-либо предложения?
Я думаю, вам нужно определить параметры в deploy.yaml!
https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=example%2Cparameter-schema
Спасибо за ответ. Я также добавил параметры в этот файл. Однако, когда я повторяю значение переменной с помощью echo {{parameters.subName}}, его значение равно $ (subscription), которое я предоставил в feature.yaml. Перед запуском шаблона deploy.yaml предполагалось разрешить $ (subscription) из группы переменных. — person Parth Makawana; 13.07.2020
Пожалуйста! Попробуйте использовать subName: ‘$ (подписка)’. Добавьте одинарные кавычки. — person Parth Makawana; 13.07.2020
Спасибо, внесено небольшое изменение, теперь он работает без одинарных кавычек. — person Parth Makawana; 13.07.2020
Идеально! Если это вам поможет, отметьте мой ответ и проголосуйте за него. — person Parth Makawana; 13.07.2020
для тех, кто ищет решения,
Вот что вам нужно сделать: В файле верхнего уровня feature.yaml добавьте желаемое имя группы переменных и передайте параметр из шаблона, который имеет имя подписки Azure:
И используйте этот параметр в шаблоне deploy.yaml:
В настоящее время известная проблема заключается в том, что мы не можем использовать переменную из группы переменных напрямую для ввода azureSubscription задачи AzureKeyVault согласно эта ветка.
Эта работа должна работать нормально!
У нас была аналогичная проблема, потому что мы пропустили — в yaml под переменными:
To:
Это устранило проблему для нас.
Я обнаружил, что при первоначальном анализе YAML ожидается, что группа переменных будет в области видимости. Мне нужно было переместить группу переменных в верхнюю часть файла YAML, а затем она нашла переменную подписки Azure. Не то, что я ожидал.