Вопрос вкратце: я запускаю все тесты на development , как я могу предотвратить их при ребазе с master , выполненного пользователем CI?
У меня довольно распространенный подход к настройке CI, настроенный в GitLab:
- каждый толчок к развитию должен быть проверен
- при успешном тестировании: развертывание на master
- каждое развертывание на master решает, в зависимости от журнала фиксации, необходим ли новый SemVer. В этом случае некоторые локальные файлы версий изменяются, фиксируются, и выпуск помечается. Дополнительные development перебазируются в master (так что изменения файла версии там поддерживаются)
Это похоже на .gitlab-ci.yml
stages:
- test
- pushToMaster
- tagNewVersion
- deploy
test:
stage: test
only:
- develop
except:
variables:
- $CI_COMMIT_MESSAGE =~ /[TASK] Releasing/
pushToMaster:
stage: pushToMaster
only:
- develop
tagNewVersion:
stage: tagNewVersion
only:
- master
Теперь коммит для разработки создает следующие рабочие места:
- разработать "мой новый код" => test (✓) => pushToMaster (✓)
- master "мой новый код" => tagNewVersion (✓)
- x.y.z "[TASK] Выпуск версии моего проекта x.y.z" => tagNewVersion (✓)
- разработать "[ЗАДАНИЕ] Выпуск моей версии проекта x.y.z" => test (✓) => pushToMaster (✓, ничего не делать)
Моя цель - предотвратить 4-ую работу. Я думал, что исключение: переменные для тестирования работы добьются цели, но безрезультатно. [skip-ci]
в коммите не будет работать, так как помеченная версия требует запуска CI для развертывания. Есть ли другие варианты? Как особые условия в зависимости от пользователя (реальный человек против конкретной учетной записи CI). Я не мог найти ничего, но не могу думать, что это так необычно ..