, поэтому мы хотим автоматизировать процесс управления версиями в приложении, предпочтительно с использованием соглашения SEMVER.
Итак, мы пришли к следующей идее:
- Множество функций / исправление ошибок / MajorПодтверждение ветвления, запрашиваемое в скажем
develop
ветвь. - Когда выполняется сборка Jenkins в
develop
ветке, он берет файл JSON из, скажем, ветки versioning
, поэтому теперь он знает текущее управление версиями (скажем,: 2.0.0) - используя некоторый материал журнала git, мы сможем определить, какие ветви были объединены в develop
, и таким образом определить, нужно ли нам увеличивать номера MAJOR, MINOR или PATCH (или некоторые из них сразу).
Это прекрасно работает, пока нам не понадобится выполнить одно из следующих двух действий:
- Допустим, текущая разработка ведется на 2.1.1 (1 патч, 1функция слилась, но пока не в прод!).Теперь нам нужно срочно выпустить еще одно исправление критической ошибки в
production
(то есть в 2.0.0) - но теперь JSON-файл в ветке управления версиями, а также в ветке разработки указывают на 2.1.1.Как мы поступаем с выпуском 2.0.1 как срочное исправление ошибки? - Допустим, одна из функций, которые мы выпустили для
develop
, плохая, нам нужно откатиться, чтобы разработать (так что теперь это будет 2.0.1) -как мы справимся с этим?