[英]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.