Azure Pipeline:用户定义的变量在脚本中设置在稍后使用模板中使用时未扩展
我正在尝试将一个由PS1脚本设置的变量传递给Azure Pipeline yaml中的模板yaml文件。但是,无论我尝试什么,当变量达到模板时都不会扩展。
parameters:
- name: myparam
type: boolean
default: 'true'
stages:
- stage: stage1
variables:
override: 'true'
jobs:
- job: FilterJob
- task: PowerShell@2
name: ps1task
inputs:
targetType: inline
script: |
$override = "some value"
Write-Host "##vso[task.setvariable variable=override;isOutput=true]$override"
- ${{ if eq(parameters.myparam, true) }}:
- template: Mytemplate.yml
parameters:
varPassedToTemplate: $(variables.override) ### VARIABLE DOES NOT EXPAND
变量“ varpassedtotemplate”始终以“:”之后的任何内容的形式最终形成。
我相信 $ {{如果eq(parameters.myparam,true)}}}:
是编译时间,并且在运行时没有扩展,但这是否适用于传递给模板的参数?有没有办法扩展变量“ varpassedtotemplate”,还是我的语法只是错误的? (顺便说一句,我尝试过多种语法)
这几天一直使我发疯,因此任何帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您的YAML样本,您正在定义模板中的阶段或作业。
您在阶段1中定义的变量不能直接传递到下一个阶段或作业。
要解决此问题,我建议您可以在模板中定义作业并使用阶段输出变量接受阶段1中的变量。
请参阅我的示例:
模板:
主YAML:
结果:
Based on your YAML sample, you are defining the Stages or Jobs in the Template.
The variables you define in stage1 cannot be passed directly to the next stage or job.
To solve this issue, I suggest that you can define the jobs in the template and use Stage output variable to accept the variable in stage1.
Refer to my sample:
Template:
main YAML:
Result:
Another option is to use
因此,更改下面的stage2应该使其正常工作!
Another option is to use output variables within the same job. The name you used for your powershell task is
ps1task
, ad the name of the variable you defined within this task isoverride
. You could expand your user-defined variable -override
- within the same job asps1task
the following way:So, changing the stage2 for the below should make it work!