为什么我不能在 azure devops yaml 模板中的 if 条件中传递运行时变量

Why can I not pass a runtime variable in if condition in azure devops yaml template

我想我在 powershell 步骤中错误地调用了我的变量 os_name;每次我测试构建时,它都不会通过我的 if 语句。我想知道我的代码有什么问题。有没有人试过在类似这样的 azure devops 表达式中使用运行时变量?

      - powershell: |
          $os_name = 'linux'
          echo "##vso[task.setvariable variable=os_name;]$os_name"

      - ${{ if eq( variables.os_name , 'linux') }}:
        - powershell: |
            echo "variables.os_name = linux"

这应该适合你:

- task: PowerShell@2
  displayName: set variable
  inputs:
    targetType: 'inline'
    script: |
      "##vso[task.setvariable variable=os_name;]linux"

- task: PowerShell@2
  displayName: Linux case
  inputs:
    targetType: 'inline'
    script: |
        Write-Host "Linux"
  condition: eq(variables.os_name, 'linux')

运行 对于 Linux:

运行 对于非 Linux: