Azure devops Azure管道运行时评估的变量传递了一个参数

Azure devops Azure管道运行时评估的变量传递了一个参数,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我有一个AzurePowerShell脚本(powershell/gettenants.ps1),用于设置租户变量的值 下面的bash任务成功地回显了新值,但下面的模板收到了默认值(设置在脚本顶部)。注意:指定模板参数值时,Im使用表达式语法 你知道我做错了什么吗 variables: tenants: "default value" - stage: Build_Shared_Update jobs: - job: Get_all_Tenants_Info poo

我有一个AzurePowerShell脚本(powershell/gettenants.ps1),用于设置租户变量的值

下面的bash任务成功地回显了新值,但下面的模板收到了默认值(设置在脚本顶部)。注意:指定模板参数值时,Im使用表达式语法

你知道我做错了什么吗


variables:
 tenants: "default value"

 - stage: Build_Shared_Update
   jobs:
   - job: Get_all_Tenants_Info
     pool:
       vmImage: 'windows-latest'
     steps:
       - checkout: self
         fetchDepth: 1
       - task: AzurePowerShell@4
         inputs:
           azureSubscription:  'Product Subscription(Guid)'
           targetType: 'filePath'
           scriptPath: powershell/gettenants.ps1
           errorActionPreference: 'stop' 
           azurePowerShellVersion: 'latestVersion'

       - task: Bash@3
         inputs:
           targetType: 'inline'
           script: echo $(tenants)
   - template: pipeline-templates/shared-infrastructure-plan.yml  # Template reference
     parameters:
       tenants: ${{variables.tenants}}
在模板内,参数的引用方式如下:

-out=sharedplan -var=list_of_tenants=${{parameters.tenants}}

当使用
${{}
语法时,该变量将在编译时被替换

请在此处阅读更多信息:


变量不在范围内


值得注意的是,“需要学习的内容很多”也指出了这一点:)

您能展示一下如何在gettenants.ps1中设置租户变量吗?这个答案可能很有趣,它有一个如何从powershell设置Azure DevOps输出变量的示例:写入主机“##vso[task.setvariable=tenants]$result”Ok。。。因此,如果我将${variables.tenants}}更改为$(tenants),模板条将接收默认值。bash脚本仍然可以看到正确的值我刚才注意到缩进,模板位于作业级别,创建变量仅在作业范围内,如果要创建变量并使其在下游作业中可用,则需要添加isOutput属性,如果将模板作为bash之后的下一步,则它应该与$(租户)一起工作嘿-是的,我意识到这是一个范围问题。然后我意识到这份工作很容易成为一项任务……:)那么,你有没有找到有效的解决方案。。。那是什么?我仍然在与语法和作用域的组合作斗争,试图解决类似的问题,但一无所获。然而,在这里的具体案例中,我的问题是变量是作业范围的,我需要使用isOutput属性,以便它可用于以后的作业