gpt4 book ai didi

在部署作业中执行时,AzureResourceManagerTemplateDeployment 无法使用模式找到模板

转载 作者:行者123 更新时间:2023-12-03 01:23:36 27 4
gpt4 key购买 nike

我一直在尝试使用 Azure 逻辑应用程序,并希望找到一种方法来编码部署过程,以便我可以设置包含 secret 和所有好东西的 CI/CD 管道。

因此,我开始使用 yml 文件,其中包含多种方法来部署同一逻辑应用程序。

  1. regular job内的一个步骤中将输入参数的值硬编码到任务,例如连接服务、订阅、资源组等。 .
  2. Deployment job 内做同样的事情.
  3. 使用管道变量提取这些值并重复 1 和 2。
  4. 再次执行 1 和 2,但这次使用标记为 Secrets 的管道变量等等等等。

但是,每次我在部署作业中运行 AzureResourceManagerTemplateDeployment@3 时,它都无法找到 ARM 模板文件。

  • 为什么部署作业无法使用未作为部署作业运行时有效的模式找到 ARM 模板?
  • 部署作业无权访问构建目录吗?
  • 如何帮助部署作业找到该文件?我应该给它一个模板文件的链接而不是模式吗?

每次搜索 AzureResourceManagerTemplateDeployment 任务文档时,我都会得到 AzureResourceGroupDeployment 任务的文档页面,该页面非常相似但不相同 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment?view=azure-devops#troubleshooting

当我正要发布这个问题时,我在网上做了更多搜索,发现了 original docs of the AzureResourceManagerTemplateDeployment其中指出,如果该文件是存储库的一部分,则必须使用系统变量的帮助指定 ARM 模板的路径。

csmFile: "$(Build.Repository.LocalPath)/**/LogicApp.json"
csmParametersFile: "$(Build.Repository.LocalPath)/**/LogicApp.parameters.json"

我可以确认这也不起作用。

我可能会错过什么?

stages:
- stage: 'HardcodedJobStage'
displayName: 'HardcodedJobStage'
jobs:
- job: 'HardcodedJob'
displayName: HardcodedJob
pool:
vmImage: ubuntu-latest
workspace:
clean: all
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: 'Subscription (e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d)'
subscriptionName: 'e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d'
action: 'Create Or Update Resource Group'
resourceGroupName: 'AzureLogicApp'
location: 'UK South'
templateLocation: 'Linked artifact'
csmFile: '**/LogicApp.json'
csmParametersFile: '**/LogicApp.parameters.json'
deploymentMode: 'Incremental'

- stage: 'HardCodedDeployJobStage'
displayName: 'HardCodedDeployJobStage'
jobs:
- deployment: 'HardCodedDeployJob'
displayName: HardCodedDeployJob
pool:
vmImage: ubuntu-latest
workspace:
clean: all
environment: development
strategy:
runOnce:
deploy:
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: 'Subscription (e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d)'
subscriptionName: 'e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d'
action: 'Create Or Update Resource Group'
resourceGroupName: 'AzureLogicApp'
location: 'UK South'
templateLocation: 'Linked artifact'
csmFile: '**/LogicApp.json'
csmParametersFile: '**/LogicApp.parameters.json'
deploymentMode: 'Incremental'

最佳答案

这里的问题是我必须将模板作为工件发布并在各个阶段之间共享。

因此,我使用 CopyFiles 任务将 ARM 模板 json 文件复制到文件夹,然后使用 PublishPipelineArtifact 任务将内容发布为管道工件。稍后可以通过使用 DownloadPipelineArtifact 任务在下一阶段引用该文件。

现在我的 YAML 看起来像这样:

stages:
- stage: 'HardcodedJobStage'
displayName: 'HardcodedJobStage'
jobs:
- job: 'HardcodedJob'
displayName: HardcodedJob
pool:
vmImage: ubuntu-latest
workspace:
clean: all
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: 'Subscription (e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d)'
subscriptionName: 'e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d'
action: 'Create Or Update Resource Group'
resourceGroupName: 'AzureLogicApp'
location: 'UK South'
templateLocation: 'Linked artifact'
csmFile: '**/LogicApp.json'
csmParametersFile: '**/LogicApp.parameters.json'
deploymentMode: 'Incremental'

- task: CopyFiles@2
inputs:
Contents: $(Build.SourcesDirectory)/AzureLogicApp/**/*.json
targetFolder: $(Build.ArtifactStagingDirectory)

- task: PublishPipelineArtifact@1
inputs:
targetPath: $(Build.ArtifactStagingDirectory)
artifactName: armtemplate

- stage: 'HardCodedDeployJobStage'
displayName: 'HardCodedDeployJobStage'
jobs:
- deployment: 'HardCodedDeployJob'
displayName: HardCodedDeployJob
pool:
vmImage: ubuntu-latest
workspace:
clean: all
environment: development
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: armtemplate

- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: 'Subscription (e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d)'
subscriptionName: 'e6d1dg8c-bcd6-4713-b2f1-c9a0375d687d'
action: 'Create Or Update Resource Group'
resourceGroupName: 'AzureLogicApp'
location: 'UK South'
templateLocation: 'Linked artifact'
csmFile: $(Pipeline.Workspace)/armtemplate/**/LogicApp.json
csmParametersFile: $(Pipeline.Workspace)/armtemplate/**/LogicApp.parameters.json
deploymentMode: 'Incremental'

关于在部署作业中执行时,AzureResourceManagerTemplateDeployment 无法使用模式找到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67957507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com