Логика конъюнкции в Gitlab терпит неудачу, когда поставляется, казалось бы, действительный YAML - PullRequest
2 голосов
/ 14 июня 2019

Я пытаюсь установить условия в моем файле .gitlab.yml, следуя этой документации , используя пункт 7 (Соединение / Разъединение), но используемый мной синтаксис продолжает отклоняться средство проверки gitlab yml.

Что должно произойти, если VAR1 оканчивается на 'вещь' или присутствует VAR2 (т. Е. Не ноль), то задание должно быть исключено из выполнения.

Вот фрагмент из моего файла YAML:

build:
  except:
    variables: 
      - $VAR1 =~ /thing$/ || $VAR2
  script:
      - echo "Hello"

Всякий раз, когда я пытаюсь проверить этот синтаксис, я получаю следующее сообщение:

Failing Validation

Я также пробовал следующие (неудачные) варианты:

  - $VAR1 =~ /thing$/ || $VAR2 != null
  - $VAR1 =~ /thing$/ && $VAR2 != null (this was just testing an AND condition)

Всякий раз, когда я перечисляю условия отдельно, они проходят проверку.

Что не так с моим синтаксисом? Есть ли другой способ добиться желаемой проверки? Мне кажется, что это ошибка.

1 Ответ

0 голосов
/ 14 июня 2019

В документации упоминается:

Если вы используете несколько клавиш только или только, они действуют как AND. Логика:

(любая из ссылок) И (любая из переменных) И (любое изменение) И (если kubernetes активен)

Похоже, что any of variables означает ИЛИ каждой из перечисленных переменных, поэтому это должно соответствовать вашим требованиям:

build:
  except:
    variables: 
      - $VAR1 =~ /thing$/ 
      - $VAR2 != null
...