我试图在所有部署中使用1个ARM模板,所以我想可以使用Azure DevOps管道变量对资源名称进行一些字符串替换,像这样。
myapi-dev-appserviceplan myapi-prod-appserviceplan
'dev'和'prod'是发布管道中的变量,但是我不确定如何在ARM模板中引用它们?
答案 0 :(得分:0)
您可以使用token replace task(如果选择此选项,则需要在文件中定义令牌,然后在管道中定义将用于替换这些令牌的变量。您可以定义变量gorups来容纳每个环境变量,在发行版的变量之间切换),但对于您的情况,我建议您每次使用参数文件。以这种方式,您将只为部署环境更改文件。
取自docs:
要部署到不同的环境,请创建多个参数 文件。命名参数文件时,请添加一种识别其用途的方法。 例如,使用azuredeploy.parameters-dev.json和 azuredeploy.parameters-prod.json
然后,您可以使用AzureResourceGroupDeployment@2
选择适当的参数文件(如果下面是WebSite.parameters.json
)
- task: AzureResourceGroupDeployment@2
displayName: 'Deploy template'
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: 'demo-deploy-sp'
subscriptionName: '01234567-89AB-CDEF-0123-4567890ABCDEF'
action: 'Create Or Update Resource Group'
resourceGroupName: 'demogroup'
location: 'Central US'
templateLocation: 'URL of the file'
csmFileLink: '$(artifactsLocation)WebSite.json$(artifactsLocationSasToken)'
csmParametersFileLink: '$(artifactsLocation)WebSite.parameters.json$(artifactsLocationSasToken)'
overrideParameters: '-_artifactsLocation $(artifactsLocation) -_artifactsLocationSasToken "$(artifactsLocationSasToken)"'
deploymentMode: 'Incremental'
答案 1 :(得分:0)
与经典的构建和发布管道相比,只需抛出一种替代方法即可使用YAML Pipelines。
这将允许您在同一管道中进行构建和部署,并且可以通过在变量组,变量YAML文件或特定管道运行(https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch)中定义的变量中定义变量,从而从管道中读取变量。 / p>