Azure devops:将变量组作为参数传递给模板

2024-04-21

我在代码库中使用 Azure devops yml 管道。

我在管道中创建了变量组(管道>库>变量组>称为“MY_VG”) 在我的管道(yml)文件中,我想将此变量组 MY_VG 作为参数发送到模板 my_template.yml 。

但是当我在“变量”下使用它时,这个参数 MY_VG 并没有被扩展(尽管在打印时它给了我值)

如何访问下面所示的模板组中的 MY_VG 的值:${{parameters.variable_group}}?

(我正在调用模板文件 my_template_iterator.yml ,它会迭代环境并调用 my_template.yml ) azure-pipelines.yml

resources:
  repositories:
    - repository: templates
      type: git
      name: MY_PROJECT/GIT_REPO_FOR_TEMPLATE
stages:
  - stage: "CheckOut"
    displayName: Checkout
    jobs:
      - job: Checkout
        displayName: Checkout Application
        pool:
          name: $(my_pool_name)
        workspace:
          clean: all 
        steps:
          - checkout: self

  - template: folder_name/my_template_iterator.yml@templates
    parameters:
      agent_pool_name: $(my_pool)
      db_resource_path: $(System.DefaultWorkingDirectory)/src/main/resources/db
      envs:
        - env:
          env_name: 'dev'
          variable_group: MY_VG
          pipeline_environment_name: DEV_ENV
          is_master: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))

## 迭代器:my_template_iterator.yml

parameters:
  agent_pool_name: ''
  db_resource_path: ''
  envs: {}

stages:
  - ${{ each env in parameters.envs }}:
    - template: my_template.yml
      parameters:
        agent_pool_name: ${{ parameters.agent_pool_name }}
        db_resource_path: ${{ parameters.db_resource_path }}
        env_name: ${{ env.env_name }}
        variable_group: ${{ env.variable_group }}
        pipeline_environment_name: ${{ env.pipeline_environment_name }}
        is_master: ${{ env.is_master }}

## my_template.yml

parameters:
- name: 'variable_group'    
  type: string    
  default: 'default_variable_group'
    stages:
      - stage:
        displayName: Read Parameters
        jobs:
          - job: READ
            displayName: Reading Parameters
            steps:
              - script: |
                  echo variable_group: ${{parameters.variable_group}}
    
      - stage:
        displayName: Deployment
        variables:
           group: ${{parameters.variable_group}}
        condition: ${{parameters.is_master}}

我用上面的 yaml 文件进行了测试。看起来不错。然而我发现了一个小错误,你错过了一个-当您在 my_template.yml 中定义变量组时。也许这就是变量组没有为您扩展的原因。

variables:
# a variable group
- group: myvariablegroup

我稍微修改了你的 my_template.yml 文件。我成功了。见下文:

parameters:
- name: 'variable_group'    
  type: string    
  default: 'default_variable_group'
- name: agent_pool_name
  default: ""
- name: env_name
  default: ""
- name: db_resource_path
  default: ""       
- name: pipeline_environment_name
  default: ""        
- name: is_master
  default: ""
  
stages:
  - stage:
    displayName: ${{parameters.env_name}}
    
    ## i changed here add '-' to group
    variables:
    - group: ${{parameters.variable_group}}

    jobs:
    - job: READ
      displayName: Reading Parameters
      steps:
      - script: |
          echo variable_group: ${{parameters.variable_group}}
      - powershell: echo "$(variableName-in-variablegroup)"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure devops:将变量组作为参数传递给模板 的相关文章

随机推荐