wot*_*324 8 azure-devops azure-pipelines azure-pipelines-yaml
是否可以在模板 YAML 中包含参数及其值,并在准备运行管道时让主 YAML 读取列表并将它们显示在下拉列表中?
与“变量重用”的 MS 示例非常相似,如下所示。
# File: vars.yml
variables:
favoriteVeggie: 'brussels sprouts'
Run Code Online (Sandbox Code Playgroud)
# File: azure-pipelines.yml
variables:
- template: vars.yml # Template reference
steps:
- script: echo My favorite vegetable is ${{ variables.favoriteVeggie }}.
Run Code Online (Sandbox Code Playgroud)
我有一个大约 50 个值的列表,这些值每周都在增长。当运维人员运行我的管道时,我希望他们从下拉列表中选择一个值。
这可以简单地通过在管道 YAML 文件中指定参数块来实现azure-pipeline.yml:
parameters:
- name: subscription
displayName: Subscription Name
type: string
default: sub A
values:
- sub A
- sub B
- sub C
- sub D
Run Code Online (Sandbox Code Playgroud)
这给了我 UI 中的下拉菜单:
在上面的示例中,只有 4 个值,但是,我们有超过 50 个值(订阅)并且还在不断增加。我正在尝试设计一种方法,其中 1) 运维人员不必编辑管道 2) 保持主管道文件简洁。
我知道目前无法动态填充值列表,但我正在考虑使用模板 YAML 文件,该文件仅包含值,并且它将读取模板,填充下拉列表。然后,让脚本/管道动态更新模板文件中的值是一项相当简单的任务。
阅读文档和一些博客,我相信这可能是可能的,但我还没有成功破解它。
看来参数块可以采用“任何 YAML 结构”,尽管我还没有找到合适的例子。除其他外,这是我尝试过的:
- name: subscription
displayName: Subscription Name
type: string
default: sub A
values:
- sub A
- sub B
- sub C
- sub D``
Run Code Online (Sandbox Code Playgroud)
...
template: templates/subscriptions.yml
parameters:
subscription: []
stages:
- stage: Example
displayName: 1.0 Demo Stage
jobs:
...
Run Code Online (Sandbox Code Playgroud)
我想知道我的问题是否是我需要在开始时读取参数,而这不受支持。它仅适用于阶段/工作等。
如果有人有任何想法,如果您能指出正确的方向,我将不胜感激。
TIA
根据您的要求,恐怕暂时没有这样的方法可以满足您的要求。
Azure Devops中的yaml模板需要被主yaml(例如azure-pipelines.yml)引用来传递值。
请参阅此文档:Yaml schema。
yaml中的parameters字段无法调用yaml中的参数模板。因此,如果只定义纯参数,则无法在主yaml中调用它们。
此方法仅受变量支持。
但你的要求是有道理的。我建议您可以在我们的 UserVoice 网站提交建议票。
| 归档时间: |
|
| 查看次数: |
18320 次 |
| 最近记录: |