yaml 管道中的条件(例如“eq”和“ne”)不起作用

San*_*tta 5 yaml if-statement build equals azure-pipelines

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

- ${{ if eq('$(svctag)', '') }}:
   - script: echo 'svctag is blank'
- ${{ if ne('$(svctag)', '') }}:
   - script: echo 'svctag is not blank'
Run Code Online (Sandbox Code Playgroud)

Mer*_*SFT 10

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

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

所以,你应该将你的脚本更改为

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

这是我这边的输出。

在此输入图像描述


另一个解决方案定义svctag如下parameters

parameters:
  svctag: '' 
Run Code Online (Sandbox Code Playgroud)

然后使用步骤参数:

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

注意:请使用parameters.svctag.