gpt4 book ai didi

azure - 如何参数化 Azure DevOps 部署 YAML 管道以部署到多个环境

转载 作者:行者123 更新时间:2023-12-02 18:10:30 25 4
gpt4 key购买 nike

我有一个 Azure DevOps 部署 YAML 管道,用于创建 Azure 应用服务并向其部署代码。实际的管道更复杂,但我针对这个问题将其简化。

目前,我的管道可以成功部署到特定的 Azure 订阅(服务连接器),并在变量中定义资源名称。

我需要对管道进行参数化,以便它可以使用多个服务连接器部署到多个不同的环境(指 Azure 订阅)。每个环境都有不同的 Azure 资源命名约定。

有什么方法可以从 XML 或 JSON 文件读取管道变量的值吗?这样我就可以为每个环境拥有多个配置文件,并将它们存储为我的存储库的一部分。

这是多环境部署管道配置的正确方法吗?

最佳答案

您可以使用variable templates 。还有另一个有趣的链接:Learn more about variable reuse with templates .

这里我有这个平面文件夹结构(为了示例的清晰度):

.
| deploy-app.job.yaml
| deploy-app.pipeline.yaml
| variables.dev.yaml
| variables.prod.yaml

因此,我们在这里尝试使用不同的变量集运行可重用作业deploy-app.job.yaml。

我在每个 variable.{env}.yaml 文件中定义了一些变量

# variables.dev.yaml
variables:
vmImage: ubuntu-20.04
serviceConnection: dev-service-connection

# variables.prod.yaml
variables:
vmImage: ubuntu-20.04
serviceConnection: prod-service-connection

deploy-app.job.yaml 文件接受允许注入(inject)变量模板的参数:

# deploy-app.job.yaml
parameters:
- name: envVariablesTemplate
type: string

jobs:
- deployment: deploy
variables:
# Inject the verianle template here
- template: ${{ parameters.envVariablesTemplate }}
pool:
# Use the variable from the template
vmImage: ${{ variables.vmImage }}
strategy:
runOnce:
deploy:
steps:
- task: AzureCLI@2
displayName: Hello from azure cli
inputs:
# Use the variable from the template
azureSubscription: ${{ variables.serviceConnection }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: echo 'Hello from azure cli'

在主管道中,我可以创建不同的阶段并注入(inject)所需的变量:

# deploy-app.pipeline..yaml
stages:
- stage: dev
condition: succeeded()
jobs:
- template: ./deploy-app.job.yaml
parameters:
envVariablesTemplate: ./variables.dev.yaml

- stage: prod
dependsOn: dev
condition: succeeded()
jobs:
- template: ./deploy-app.job.yaml
parameters:
envVariablesTemplate: ./variables.prod.yaml

根据您的需要,您可以添加多个变量模板,具有命名约定等。这完全取决于您并取决于管道的复杂性。

关于azure - 如何参数化 Azure DevOps 部署 YAML 管道以部署到多个环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72427893/

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