我将Yaml用于Azure devops管道。 我为此使用了分层样式。
我有一个顶级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: AzureKeyVault@1
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名称值。
有什么建议吗?
答案 0 :(得分:0)
我认为您必须在deploy.yaml中定义参数!
答案 1 :(得分:0)
对于寻求解决方案的人
这是您需要做的: 在顶级feature.yaml中,添加所需的变量组名称,并从具有天蓝色订阅名称的模板中传入参数:
variables:
- group: xxx
- template: deploy.yaml
parameters:
subName: $(_subscriptionName)
并在模板deploy.yaml中使用该参数:
- task: AzureKeyVault@1
inputs:
azureSubscription: ${{ parameters.subName}}
keyVaultName: xxx
secretsFilter: '*'
当前存在一个已知问题,我们无法按照this线程将变量组中的变量直接用于AzureKeyVault任务的azureSubscription输入。
解决这个问题应该可以!
答案 2 :(得分:0)
我们有与此类似的问题,这是因为我们错过了Yaml中变量下的-:
{gtsummary}
收件人:
variables:
group: ...
这为我们解决了这个问题。
答案 3 :(得分:0)
我发现,最初解析YAML时,它希望变量组在范围内。我需要将变量组移动到YAML文件的顶部,然后它找到了Azure订阅变量。不是我所期望的。