azure-devops - 将管道变量从 Designer 传递到 YAML 作业模板
问题描述
我最初想在我的队列中定义管道变量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)
如果你为此排队构建,你会得到一个带有默认值的参数页面:
您可以覆盖:
这导致:
推荐阅读
- javascript - 如何更新 react.js 中的嵌套表单
- python - How to efficiently construct a dataframe (pandas) from dictionary
- python - pandas for loop,适用于小型数据帧
- algorithm - Q码算法?这里使用什么算法?
- css - Navigation issue HTML and CSS
- java - Issues with WindowBuilder in Eclipse (Kepler)
- javascript - testcafe/node.js 元素查询中抛出错误
- cloudflare - Disable HTML cache on Cloudflare
- c# - 如何使用从基类继承的事件在抽象类中定义 EventHandler?
- html - How to prevent an image being downloaded on mobile?