我最初想在我的 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 解决方案实现。
最佳答案
琐碎的管道(不引用模板,但可以轻松扩展以这样做)
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)
如果您为此排队构建,您将获得一个带有默认值的参数页面:您可以覆盖:
这导致:
关于azure-devops - 将管道变量从设计器传递到 YAML 作业模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228903/