yaml 管道中的条件,如 "eq" 和 "ne" 不起作用

Conditions in yaml pipeline like "eq" and "ne" is not working

我创建了一个管道构建变量 "svctag" 并将其值分配给空白(空字符串)。现在尝试在 yaml 文件中的作业中执行以下脚本。每次打印 "svctag is not blank"。不确定我做错了什么。 请帮忙。

- ${{ if eq('$(svctag)', '') }}:
   - script: echo 'svctag is blank'
- ${{ if ne('$(svctag)', '') }}:
   - script: echo 'svctag is not blank'

据我所知,此格式仅适用于 YAML 模板。现在,问题是您使用的名为 method 的变量不正确。

您应该使用格式 variables['svctag'] 而不是 $(svctag) 来访问之前在使用 YAML 时声明的变量。

因此,您应该将脚本更改为

  - ${{ if eq(variables['svctag'], '') }}:
    - script: echo it is true 
  - ${{ if ne(variables['svctag'], '') }}:
    - script: echo it is false

这是我这边的输出。


另一个解决方案是在 parameters 下定义 svctag:

parameters:
  svctag: '' 

然后使用带参数的步骤:

  steps:
  - ${{ if eq(parameters.svctag, '') }}:
    - script: echo it is true
  - ${{ if ne(parameters.svctag, '') }}:
    - script: echo it is false

注意:请使用parameters.svctag.

因此,您应该将脚本更改为

  - ${{ if eq(variables['svctag'], '') }}:
    - script: echo it is true 
  - ${{ if ne(variables['svctag'], '') }}:
    - script: echo it is false