Azure Pipeline生产环境部署Service Bus提示找不到模板文件如何解决
问题根因
- 开发、测试环境使用普通
job执行部署,默认会自动拉取代码/构建产物到$(System.DefaultWorkingDirectory)目录,且配置中写了文件的完整路径,因此可以正常读取模板文件。 - 生产环境使用绑定了
production环境的deployment类型作业:- 这类部署作业默认不会自动拉取代码或下载之前构建阶段的产物
- 生产部署的ARM任务中没有补全文件路径前缀,直接写文件名导致系统无法匹配到对应文件
修复方案
- 在生产环境部署步骤中显式添加拉取代码/下载构建产物的任务:如果ARM模板直接存放在代码仓库中,直接添加
checkout: self即可;如果模板是BuildStage生成的产物,添加DownloadPipelineArtifact任务下载对应产物。 - 把生产环境ARM部署任务的模板文件路径和开发、测试环境配置保持一致,补全路径前缀。
修改后生产阶段示例配置
- stage: 'PrdDeployStage' dependsOn: BuildStage condition: and(succeeded('BuildStage'), contains(variables['Build.SourceBranch'],'refs/heads/main')) variables: - group: common-kv-dev - group: common-dp-dev displayName: 'PrdDeployStage' jobs: - deployment: PrdDeployStageJobDeploment displayName: 'PrdDeployStageJob' pool: vmImage: ubuntu-latest environment: production strategy: runOnce: deploy: steps: # 显式拉取代码,获取模板文件 - checkout: self - task: AzureResourceManagerTemplateDeployment@3 inputs: deploymentScope: 'Resource Group' azureResourceManagerConnection: 'conn-to-RG' subscriptionId: '7777777-4444-4444-4444-222222222222' action: 'Create Or Update Resource Group' resourceGroupName: 'MY_RG' location: 'East US' templateLocation: 'Linked artifact' # 补全路径前缀,和开发测试环境配置一致 csmFile: '$(System.DefaultWorkingDirectory)/template.json' csmParametersFile: '$(System.DefaultWorkingDirectory)/parameters.json' overrideParameters: '-namespaces_amitbus_name amit-prd' deploymentMode: 'Incremental'
内容的提问来源于stack exchange,提问作者amitsuneja
相关产品推荐
相关产品推荐

