Как сравнить несколько условий в .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 будет перебирать правила до первого совпадения, это как раз "ИЛИ"