Как сравнить несколько условий в .gitlab-ci.yml?

Вкратце - есть две ветки, и переменная, задаваемая при старте пайплайна, описывающая два окружения. Пробую реализовать простое логическое сравнение (если (A =- ... и B != ...) или (A != ... и B == ...)), но гитлаб его не отрабатывает, вот код:

rules:
  - if: '($CI_COMMIT_BRANCH == "dev" && $DEPLOY_ENVIRONMENT != "dev") || ($CI_COMMIT_BRANCH != "dev" && $DEPLOY_ENVIRONMENT == "dev")'

При этом более простое сравнение работает без проблем, но не полностью покрывает мои хотелки

rules:
  - if: '$CI_COMMIT_BRANCH == "dev" || $DEPLOY_ENVIRONMENT == "dev"'

Первый вариант пробовал и без скобок приоритета запускать, результат тот же, сравнение не работает. Что может быть не так?


Ответы (1 шт):

Автор решения: Konstantin Likhachev

Попробуйте разбить на несколько правил

rules:
  - if: '$CI_COMMIT_BRANCH == "dev" && $DEPLOY_ENVIRONMENT != "dev"'
  - if: '$CI_COMMIT_BRANCH != "dev" && $DEPLOY_ENVIRONMENT == "dev"'

GitLab будет перебирать правила до первого совпадения, это как раз "ИЛИ"

→ Ссылка