【问题标题】:If statment in Azure Devops YamlAzure Devops Yaml 中的 If 语句
【发布时间】:2020-06-02 12:57:45
【问题描述】:

如果声明有效,我不知道如何做到这一点:

- pwsh: |
    $affected = 'bleh'
    Write-Host "##vso[task.setvariable variable=affected;isOutput=true]$affected"
- ${{ if eq(variables.affected.Contains('bleh'), 'True') }}:
    [...]

上面写着Unexpected symbol (,即eq(中的(

谢谢

【问题讨论】:

    标签: azure-devops yaml


    【解决方案1】:

    你的语法有几个问题。

    首先,您使用模板语法来读取管道中未在编译前设置的变量。模板语法(用 {{ 包裹的表达式)在编译时评估,在设置变量之前(在运行时)。有关变量语法的更多信息,请参见此处 > https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables#understand-variable-syntax 您可以在第二步中使用条件属性,而不是使用内联模板。条件语法 > https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions

    其次,您将 isOutput 设置为 true,这用于在作业之间传递变量。它将变量设置为与未设置 isOutput 选项不同的位置。有关在运行时设置变量的更多信息,请参见此处 > https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables#set-variables-in-scripts

    第三次进行包含检查,语法是 contains(string, sub-string),而不是 string.contains(sub-string)。见>https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions#contains

    如果你想根据第一步设置的变量有条件地运行第二步,试试这个:

    - pwsh: |
      $affected = 'bleh'
      Write-Host "##vso[task.setvariable variable=affected]$affected"
    - pwsh: echo "do something"
      condition: contains(variables.affected, 'bleh')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2021-11-26
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多