Pau*_*ugt 5 yaml azure-pipelines
为了最大限度地减少重复的构建脚本,我们在管道中使用模板。这些模板有参数。但是,我现在遇到了一个问题,因为我需要将数据传递到管道启动时尚不可用的模板。(数据是在管道期间的某些步骤中生成的)。由于管道启动时参数会扩展,因此我无法通过参数将数据传递到模板。
我知道我可以引用管道中不同任务、作业和阶段的输出变量,但我使用的模板不知道它在其中执行的周围管道。因此模板不知道如何引用输出变量来自模板之外的其他作业,只是因为模板不知道之前执行过哪些作业。
有什么方法可以在模板中映射变量吗?理想情况下我想做这样的事情:
stages:
- stage: Stage1
jobs:
- some job that creates output variables
- stage: Stage2
jobs:
- template: 'myTemplate.yaml'
variables:
data1: $[ stageDependencies.Stage1.some_job.outputs['taskname.data1']]
Run Code Online (Sandbox Code Playgroud)
并在模板中提供 data1 变量。
$[ stageDependencies.Stage1.some_job.outputs['taskname.data1']] 因此,我试图避免在 template 中使用:,因为Stage1甚至可能不存在于使用该模板的所有管道中。
如果模板只包含步骤,而不是多个作业,我实际上可以做到这一点:
- stage: Stage2
jobs:
- job: Job1
variables:
data1: $[ stageDependencies.Stage1.some_job.outputs['taskName.data1']]
steps:
- template: templates/Azure/CreateTenant.yaml
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的模板包含多个作业
更新:我已输入功能请求以更好地支持这种情况: https://developercommunity.visualstudio.com/idea/1207453/yaml-template-variablesparameters-that-are-expande.html
如果模板只包含步骤而不是多个作业,我实际上可以做到这一点。不幸的是,我的模板包含多个作业
要解决此问题,您可以在阶段级别而不是作业级别定义变量:
- stage: Stage2
variables:
data1: $[ stageDependencies.Stage1.some_job.outputs['taskName.data1']]
jobs:
- template: templates/Azure/CreateTenant.yaml
Run Code Online (Sandbox Code Playgroud)
$[ stageDependencies.Stage1.some_job.outputs['taskname.data1']]那么我们就可以避免在模板中使用: 。
您可以查看文档变量范围以获取更多详细信息。
| 归档时间: |
|
| 查看次数: |
12789 次 |
| 最近记录: |