【发布时间】:2020-08-20 10:04:10
【问题描述】:
为了尽量减少重复的构建脚本,我们在管道中使用了模板。这些模板有参数。但是,我现在遇到了一个问题,因为我需要将数据传递到管道启动时尚不可用的模板。 (数据是在流水线的某些步骤中生成的)。由于在管道启动时会扩展参数,因此无法通过参数将数据传递给模板。
我知道我可以在管道中引用不同任务、作业和阶段的输出变量,但我使用的模板不知道它在其中执行的周围管道。所以模板不知道如何引用模板之外的其他作业的输出变量,仅仅是因为模板不知道之前执行了哪些作业。
有什么方法可以在我的模板中映射变量吗?理想情况下,我想做这样的事情:
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']]
并在模板中提供 data1 变量。
所以我尽量避免使用:$[ stageDependencies.Stage1.some_job.outputs['taskname.data1']]在模板中,因为Stage1 甚至可能不存在于使用模板的所有管道中。
如果模板只包含步骤而不是多个作业,我实际上可以这样做:
- stage: Stage2
jobs:
- job: Job1
variables:
data1: $[ stageDependencies.Stage1.some_job.outputs['taskName.data1']]
steps:
- template: templates/Azure/CreateTenant.yaml
很遗憾,我的模板包含多个作业
更新: 我已输入功能请求以更好地支持这种情况: https://developercommunity.visualstudio.com/idea/1207453/yaml-template-variablesparameters-that-are-expande.html
【问题讨论】:
标签: yaml azure-pipelines