Azure Yaml Pipelines-模板的动态对象参数

时间:2020-09-22 08:16:59

标签: azure-devops azure-pipelines azure-pipelines-yaml

我想使用对象作为参数来触发作业模板。 不幸的是,即使基于示例,我也找不到解决方法。 如果有人可以指导我如何实现这一目标,我将不胜感激。

我要实现的是用动态变量替换 [“ DEPLOY”,“ CONFIG”] 部分:

  - template: job-template.yaml
    parameters:
      jobs: ["DEPLOY", "CONFIG"]

1 个答案:

答案 0 :(得分:1)

这是不可能的。 YAML在这里非常有限,您可以阅读有关此here

的更多信息

Yaml变量始终是字符串:字符串映射。

例如,您可以将参数定义为复杂类型

模板文件

parameters:
- name: 'instances'
  type: object
  default: {}
- name: 'server'
  type: string
  default: ''

steps:
- ${{ each instance in parameters.instances }}:
  - script: echo ${{ parameters.server }}:${{ instance }}

主文件

steps:
- template: template.yaml
  parameters:
    instances: 
    - test1
    - test2
    server: someServer

但是您无法动态/编程地执行此操作,因为您将创建的每个输出都将以简单的字符串结尾。

您可以做的是作为字符串传递,然后使用powershell将该字符串拆分。但这一切都取决于您要进一步执行什么操作,因为您将无法以这种方式简单地遍历yaml结构。您所能做的就是在powershell循环中运行并做一些事情,但这对您来说还不够。