【问题标题】:How can I reuse environment specific variables?如何重用环境特定变量?
【发布时间】:2018-06-17 14:10:01
【问题描述】:

假设我们有 2 个逻辑环境“Staging”和“Production”。 如何或在哪里定义一个变量,该变量在暂存时为 X,在生产中为 Y并且当我创建多个发布定义时能够重用这些变量?

一个示例是在该环境中发布的所有应用程序使用的 Web API 的 URL。

例如,我有这些特定于环境的变量:

Staging
ApiUrl: https://staging.api.com

Production
ApiUrl: https://production.api.com

我想创建 2 个发布定义来将产品(都使用该 Api)部署到两个环境。

  1. 如果我将 ApiUrl 添加为环境变量,我需要在所有发布定义环境中添加和维护这些变量。不太容易维护?
  2. 如果我创建一个变量组“StagingVariables”和“ProductionVariables”,我认为我不能切换/选择在哪个环境中使用哪个组?您可以将多个变量组链接到发布定义,但不能链接到特定环境,对吗?
  3. 您可以定义将结合上述 2 个选项中最差的选项的发布定义变量。

如果没有合适的方法来解决这个问题,有没有办法帮助减轻维护负担?例如批量编辑环境变量?

【问题讨论】:

    标签: tfs azure-devops azure-pipelines-release-pipeline


    【解决方案1】:

    您的评估似乎是正确的。我能想到的唯一方法是在环境开始时以编程方式覆盖 PowerShell 脚本中的变量值。

    或者,我认为你可以在环境中创建一个变量并将值设置为变量组中的一个变量,例如:

    Variable Group Staging
      - Staging.ApiUri
    Variable Group Prod
      - Prod.ApiUri
    
    Environment Staging
      - ApiUri = $(Staging.ApiUri)
    Environment Prod
      - ApiUri = $(Prod.ApiUri)
    

    这样,值仍然在一个位置定义,但在发布级别明确限定范围。

    【讨论】:

    • 您的第二种方法可以很好地工作。它仍然比我希望的要多一些工作(为每个环境添加所有统一命名的变量),但至少有一个实际值的位置。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2019-06-25
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多