【发布时间】:2020-08-10 15:15:49
【问题描述】:
动态创建的变量不会作为 AzureResourceManagerTemplateDeployment@3 的一部分插入
overrideParameters.
示例模板:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
resourceGroupName: '...'
storageAccountName: 'actualAccountName'
subscriptionId: '...'
location: '...'
steps:
- task: PowerShell@2
displayName: "Set AzurePipeline var 'sasToken' to 1234"
inputs:
targetType: 'inline'
script: |
$token = 1234;
Write-Host "##vso[task.setvariable variable=sasToken;]$token"
- task: PowerShell@2
displayName: "Testing that sasToken is set"
inputs:
targetType: 'inline'
script: |
Write-Host "Token is: $(sasToken)"
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'AzureRMServiceConnection'
subscriptionId: '$(subscriptionId)'
action: 'Create Or Update Resource Group'
resourceGroupName: '$(resourceGroupname)'
location: $(location)
templateLocation: 'Linked artifact'
csmFile: 'azuretemplates/azuredeploy.json'
overrideParameters: >-
-appServiceTemplateUri https://$(storageAccountName).blob.core.windows.net/templates/linked-appservice-template.json?$(sasToken)
deploymentMode: 'Incremental'
如您所见,有一个override parameters 部分,我尝试使用各种方式附加$sasToken。
到目前为止我已经尝试过:
- $(sasToken)
- ${{ variables.sasToken }}
- $[ variables.sasToken ]i>
这些都不起作用,sasToken 始终为空。
输出网址如下所示:
https://actualAccountName.blob.core.windows.net/templates/linked-appservice-template.json?$(sasToken)
注意:$(storageAccountName) 被替换,而 $(sasToken) 没有。
我做错了什么?
【问题讨论】:
-
您是否将
sasToken定义为机密? -
是的,它是一个有效期为 10 分钟的不记名令牌
-
只是为了测试,可以改成
non-secret吗?我要求这样做是因为这种语法$(sasToken)应该可以工作,但机密是安全的,以避免被泄露。 -
嗨克里斯蒂安,我已经测试了你分享的代码,我可以得到价值。也许你可以在变量中定义sasToken,并添加power shell脚本来更新值,然后在overrideParameters中使用sasToken。
-
嗨@VitoLiu-MSFT 毕竟我找到了一个解决方案,很抱歉造成混淆,示例过于简单。我在下面添加了一个共鸣。
标签: azure-devops azure-pipelines azure-pipelines-yaml azure-devops-yaml