【问题标题】:Pass pipeline variable from Designer to YAML job template将管道变量从 Designer 传递到 YAML 作业模板
【发布时间】:2019-03-18 19:38:21
【问题描述】:

我最初想在我的azure-pipelines.yml 中定义管道变量,我可以选择在排队时设置,但目前似乎不支持:可以在排队时设置的变量只能在设计师。这个变量(逗号分隔)命名为nx_versions,将用于构建矩阵策略。这是一个最小的例子:

# azure-pipelines.yml
jobs:
- template: job-template.yml
  parameters:
    nx_versions: $(nx_versions)

和

# job-template.yml
parameters:
  nx_versions: 
    - 1

jobs:
  - job: build
    strategy:
      matrix:
        ${{ each nxver in parameters.nx_versions }}:
          NX_${{ nxver }}:
            NXVersion: ${{ nxver }}
    steps:
      - powershell: echo $(NXVersion)

使用nx_versions = 2,3(值实际上并不重要)对构建进行排队会导致错误:

/job-template.yml (Line: 9, Col: 9): Expected a sequence or mapping. Actual value '$(nx_versions)'

这甚至可能吗?我也尝试使用${{ nx_versions }} 和${{ variables.nx_versions }} 无济于事。

这可以通过完整的 Designer 解决方案实现。

【问题讨论】:

标签: azure-devops azure-pipelines


【解决方案1】:

简单的管道(不引用模板,但可以轻松扩展)

parameters:
- name: nx_versions
  type: object
  default: 
  - 1
  - 4

jobs:
  - job: build
    strategy:
      matrix:
        ${{ each nxver in parameters.nx_versions }}:
          NX_${{ nxver }}:
            NXVersion: ${{ nxver }}
    steps:
      - powershell: echo $(NXVersion)

扩展到

parameters:
- name: nx_versions
  type: object
  default:
  - 1
  - 4
stages:
- stage: __default
  jobs:
  - job: build
    strategy:
      matrix:
        NX_1:
          NXVersion: 1
        NX_4:
          NXVersion: 4
    steps:
    - task: PowerShell@2
      inputs:
        targetType: inline
        script: echo $(NXVersion)

如果你为此排队构建,你会得到一个带有默认值的参数页面:

你可以覆盖:

导致:

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我认为目前这是不可能的。我相信这正在处理https://github.com/Microsoft/azure-pipelines-yaml/pull/129

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 2020-12-05
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 2021-08-29
      • 2022-06-29
      • 1970-01-01
      • 2022-07-29
      相关资源
      最近更新 更多