使用模板时合并内部参数结构-Azure管道

时间:2019-08-25 19:53:54

标签: azure azure-devops azure-pipelines

我的模板中有很多默认参数。我想对它们进行分类。

# template.yml
parameters:
  azure:
    name: cargo_test              # Default job name
    displayName: Cargo test       # Default displayName
    condition: true               # Job condition
    strategy:                     # Default strategy to test on Windows, MacOs and Linux.
      matrix:
       Linux:
         vmImage: ubuntu-16.04
       MacOS:
         vmImage: macOS-10.13
       Windows:
         vmImage: vs2017-win2016
  name: job_name
  default_parameter1: default1
  default_parameter2: defualt2
  # rest of code
- job:A
  template: template.yml
  parameters:
    azure:
      name: test_name

此原因parameter.azure仅包含一个字段name。我想覆盖parameters.azure.name而不是全部parameters.azure结构。天青管道中可能吗?

1 个答案:

答案 0 :(得分:0)

  

我想覆盖azure.name而不是所有azure结构。

似乎您担心如果只覆盖.yml文件中的一个参数,而该参数正在使用其他template.yml文件,则会影响所有天蓝色的结构,对吗?

如果是这样,您不必为此担心。正如您在template.yml文件中定义的那样,它具有很多参数。在其他.yml文件name: test_name中使用它之后,它只会覆盖参数 name 的值,而不会影响其他参数,并且此覆盖仅适用于当前作业。

例如,如果在您的use-template.yml

- job:A
  template: template.yml
  parameters:
    azure:
      name: test_name
- job:B
  template: template.yml
  parameters:
    azure:
      condition: failed()

name的覆盖将仅影响作业name中的此参数(A)值。 作业A完成后,名称值将恢复为作业cargo_test中的B

总而言之, template.yml 中的配置是固定的,在其他yml中使用的配置将对template.yml产生任何影响。因此,您不必担心如何对我们到目前为止不支持的参数进行分类。

您可以在官方文档Job templates中查看以下简单示例。如果对您的想法有任何误解,请随时纠正我。

已更新:

由于我们可以使用parameters.azure.name获取值,因此Azure Devops应该支持这些参数分类。而且,经过测试,我得到了与您相同的结果。如果覆盖parameters.azure.name,则与parameters.azure.name处于同一级别的其余参数全部为空。我认为这应该是问题,需要我们的产品小组对其进行修复。

我已在我们的官方开发者社区When I overwrite the template parameter, the value be empty上提出了此问题报告。您可以关注此票证,以便在通知有任何更新时得到通知。

此外,似乎没有其他方法可以实现参数分类。刚解决此问题的耐心。固定脚本发布后,我们的工程师会在该票据中告知您。