繁体   English   中英

Azure DevOps 管道,用于项目和部署特定变量

[英]Azure DevOps pipelines for project and deployment specific variables

我想对以下内容发表意见。 在 Azure DevOps 中有一个 javascript qna 机器人。 我创建了一个 azure 管道,该管道部署到 Azure 环境。 这很好用。 但是,这是一个可以在多种场景中使用的常用机器人。 一次编写,多次使用。 所以我想为多个环境(DEV vs PROD)和实例(PROD1、PROD2、PROD3 ...)

第一种情况:在项目中,有一个 .env 文件,其中存储了名称-值对。 我需要为多个环境和实例设置不同的值。 一种选择可能是每个环境+实例有一个不同的文件。 所以

.env.DEV、.env.PROD1、.env.PROD2、.env.PROD3 等。

然后作为压缩文件的构建过程的一部分,通过根据大小写删除后缀,仅重命名其中一个 .env 文件。 可以在压缩之前删除 other.env 文件。 这是一个好方法还是我应该使用更标准化的流程?

第二种情况:作为部署的一部分,我想对 azure-pipeline.yml 文件进行变量化,以便目标 webapp、资源组、订阅等是动态的(对于 DEV、PROD1、PROD2 等不同)。 我可以创建多个 yaml 文件并将其链接到单独的管道。 是这样吗? 或者我是在创建一个管道并以某种方式为“n”个不同的情况切换这些值?

我可以破解一些东西。 但我想确保在开始之前我使用了正确的方法。

提前感谢,杰克。

第一种情况

这是一个好方法还是我应该使用更标准化的流程?

我建议您可以使用替换令牌任务来满足您的需求,这可能更方便。 这是我的示例:

1.*.env 文件:

name1:#{value1}#
name2:#{value2}#
name3:#{value3}#

2.运行管道时创建变量并设置值:

在此处输入图像描述

3.替换令牌任务:

- task: replacetokens@3
  inputs:
    targetFiles: '**/*.env'
    encoding: 'auto'
    writeBOM: true
    actionOnMissing: 'warn'
    keepToken: true
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    useLegacyPattern: false
    enableTelemetry: false

4. *.env 文件的结果:

name1:a
name2:b
name3:c

第二种情况

我可以创建多个 yaml 文件并将其链接到单独的管道。 是这样吗? 或者我是在创建一个管道并以某种方式为“n”个不同的情况切换这些值?

我建议您在运行管道时可以使用参数和 select 值。 例如:

parameters:
  - name: subscription
    type: string
    default: test1
    values:
      - test1
      - test2
  - name: WebAppName
    type: string
    default: test1
    values:
      - test1
      - test2
  - name: ResourceGroupName
    type: string
    default: test1
    values:
      - test1
      - test2

steps:

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: ${{ parameters.subscription }}
    Action: 'Stop Azure App Service'
    WebAppName: ${{ parameters.WebAppName }}
    SpecifySlotOrASE: true
    ResourceGroupName: ${{ parameters.ResourceGroupName }}

您可以在运行管道时选择资源组名称和订阅名称: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM