Я определил группы переменных для своих различных сред с переменной board.subscription
, которая задает Azure Подключение службы, которое будет использоваться при развертывании WebApp.
Эти группы переменных упоминаются для заданий развертывания:
name: $(Date:yyyyMMdd)-$(Rev:r)
trigger:
- master
- dev
- feature/*
- bug/*
stages:
- stage: build
...
- stage: deploy_test
displayName: deploy to TEST
dependsOn: build
variables:
- group: 'Test-Deployment'
jobs:
- template: azure-pipelines/deploy.yml
parameters:
environment: TEST
- stage: deploy_prod
displayName: deploy to PROD
dependsOn: deploy_test
variables:
- group: 'Production-Deployment'
jobs:
- template: azure-pipelines/deploy.yml
parameters:
environment: PROD
, а затем переменная используется в файле deploy.yml
:
parameters:
environment: ''
agentImage: 'ubuntu-latest'
jobs:
- deployment: ${{ parameters.environment }}
displayName: deploy to ${{ parameters.environment }}
environment: ${{ parameters.environment }}
pool:
vmImage: ${{ parameters.agentImage }}
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: drop
- task: AzureWebApp@1
inputs:
azureSubscription: '$(board.subscription)'
appName: '$(board.functionapp)'
Однако при постановке в очередь конвейерное выражение, кажется, вычисляется до заполнения переменной, что приводит к этому ошибка:
There was a resource authorization issue: "The pipeline is not valid. Job TEST: Step input azureSubscription references service connection $(board.subscription) which could not be found.
Когда я использую буквальное значение для azureSubscription
, оно работает нормально.
Вопрос: Может ли эта оценка быть отложена или есть другой способ? за то, что в файле YAML нет жестко запрограммированного имени подключения службы?