首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以用一个值列表实例化一个模板管道吗?

我可以用一个值列表实例化一个模板管道吗?
EN

Stack Overflow用户
提问于 2020-06-08 15:25:12
回答 1查看 28关注 0票数 1

我们有以下Azure DevOps管道模板:

代码语言:javascript
复制
- stage: DeployToPreprod
  displayName: 'Deploy to PREPROD'
  dependsOn: PrepareDeployToPreprod
  condition: not(eq(variables['Build.Reason'], 'Schedule'))
  jobs:
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: SRV-SAF
        targetHostDisplayName: SRV_SAF
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: DT1CTX003
        targetHostDisplayName: DT1CTX003
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: DT1CTX004
        targetHostDisplayName: DT1CTX004
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: VDA-PROD-R01
        targetHostDisplayName: VDA_PROD_R01
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: VDA-PROD-R02
        targetHostDisplayName: VDA_PROD_R02
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: VDA-PROD-R03
        targetHostDisplayName: VDA_PROD_R03
        targetEnv: PREPROD
    - template: Scripts/deploy.yaml
      parameters:
        targetHost: VDA-PROD-R04
        targetHostDisplayName: VDA_PROD_R04
        targetEnv: PREPROD

可以很容易地看到,这基本上是用一个不同机器名称的列表实例化相同的模板。是否有一种方法可以删除一些重复,并多次实例化模板,给它一个列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-09 04:50:51

是否有一种方法可以删除一些重复,并多次实例化模板,给它一个列表?

答案是肯定的。

您可以使用策略与矩阵来解决这个问题:

代码语言:javascript
复制
- stage: DeployToPreprod
  displayName: 'Deploy to PREPROD'
  dependsOn: PrepareDeployToPreprod
  condition: not(eq(variables['Build.Reason'], 'Schedule'))
  jobs:
  - job: Dev
    displayName: Dev
    pool:
     name: MyPrivateAgent

    strategy: 
      matrix:
        dev_1:
          targetHost: SRV-SAF
          targetHostDisplayName: SRV_SAF
          targetEnv: PREPROD
        dev_2:
          targetHost: DT1CTX003
          targetHostDisplayName: DT1CTX003
          targetEnv: PREPROD

     - template: child.yml #change this to your Scripts/deploy.yaml file
       parameters:
         targetHost: $(targetHost)
         targetHostDisplayName: $(targetHostDisplayName)
         targetEnv: $(targetEnv)

The Child.yml

代码语言:javascript
复制
parameters:
- name: targetHost 
  type: string 
  default: false

- name: targetHostDisplayName 
  type: string 
  default: false

- name: targetEnv 
  type: string 
  default: false

steps:
- script: echo ${{ parameters.targetHost }}
  displayName: 'targetHost'

- script: echo ${{ parameters.targetHostDisplayName }}
  displayName: 'targetHostDisplayName'

- script: echo ${{ parameters.targetEnv }}
  displayName: 'targetEnv'

结果:

希望这能有所帮助。

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

https://stackoverflow.com/questions/62265525

复制
相关文章

相似问题

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