首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Azure DevOps部署管道参数化以部署到多个环境

如何将Azure DevOps部署管道参数化以部署到多个环境
EN

Stack Overflow用户
提问于 2022-05-29 23:10:08
回答 2查看 885关注 0票数 2

我有一个Azure DevOps部署YAML管道,它创建一个并向其部署代码。实际的管道比较复杂,但我正在简化这个问题。

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

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

有没有办法从XML或JSON文件中读取管道变量的值?这样,我就可以为每个环境拥有多个配置文件,并将它们存储在我的存储库中。

这是一种适合于多环境部署管道配置的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-31 21:06:19

您可以使用可变模板。还有另一个有趣的链接:了解有关使用模板的变量重用的更多信息。

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

代码语言:javascript
运行
复制
.
|  deploy-app.job.yaml
|  deploy-app.pipeline.yaml
|  variables.dev.yaml
|  variables.prod.yaml

因此,在这里,我们尝试使用不同的变量集运行reusable作业deploy-app.Jobs. sets。

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

代码语言:javascript
运行
复制
# 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文件接受允许注入变量模板的参数:

代码语言:javascript
运行
复制
# 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'

在主管道中,我可以创建不同的阶段并注入所需的vairables:

代码语言:javascript
运行
复制
# 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

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

票数 4
EN

Stack Overflow用户

发布于 2022-05-30 12:15:56

通过使用XML转换,我们可以执行操作。检查下面的链接,以获得完整的步骤。

https://www.dragonspears.com/blog/how-to-handle-continuous-deployment-across-multiple-environments

  1. 创造不同的阶段。

  1. 使用XML转换器创建生成转换

  1. 另一种选择是利用‘XML变量替换’。敏感信息可以在Azure管道和纯文本转换文件中存储和保护。

  1. 连续部署

这里提到的相同步骤可以在上面提到的链接中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72427893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档