Поэтому мы используем процесс Gitflow для безопасного и надежного CID
(https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)
Но что-то не так.
Допустим, у нас есть 10 критических ошибок в продуктах - они должны быть исправлены как можно скорее.
Таким образом, 10 ошибок назначены 10 разработчикам. Dev 1 создает исправление 0.0.1, фиксирует в нем исправление, исправление загружается в промежуточный env и передается в QA для проверки. В это время dev 2 хочет создать исправление 0.0.2 для своей ошибки, но он не может, поскольку Gitflow запрещает создание нового исправления, если оно уже существует.
Поэтому он должен либо дождаться закрытия hotfix / 0.0.1, либо зафиксировать то же самое исправление. Конечно, нормальный выбор - зафиксировать это исправление / 0.0.1, потому что его ошибка критична и не может дождаться исправления ошибки 1.
То же самое делают каждые 10 разработчиков с 10 критическими ошибками.
QA проверяет ошибку 1 и подтверждает развертывание. Но исправление не может быть закрыто и развернуто, потому что остальные 9 ошибок не проверены или просто не работают
Итак, чтобы быть закрытым, каждая ошибка в этом исправлении должна работать и подтверждаться.
В нашем случае это занимает время, много времени - 1,2 недели, к счастью, - так как все больше и больше вещей должно быть исправлено как можно скорее на производстве. Таким образом, разработчики все больше и больше фиксируют эту ветвь, еще больше задерживая первые ошибки.
Так что, в конце концов, после того, как все эти ошибки исправлены и подтверждены, пришло время, наконец, закрыть исправление и развернуть эти критические ошибки на prod ... с довольно большой задержкой. Но есть и еще одна большая проблема - THE MERGE с веткой dev, где другие разработчики делают свою работу (например, небольшие исправления ошибок в следующем выпуске). Ужасное, продолжающееся несколько часов слияние.
Итак, мы, очевидно, делаем что-то не так - что может быть решением для этого? Чтобы наши исправления были вовремя и не имели страшных слияний с dev.
Одним из решений, о котором мы думали, является установка в исправлении ограничения на количество ошибок, которые оно должно содержать - например, максимум 5 ошибок, другие ошибки должны ждать, пока они не будут исправлены. Это, однако, означает, что только lead-dev должен фиксировать исправление, так как он должен обеспечивать ограничение (иначе сложно контролировать). Но в этом случае ошибки все еще удерживаются, а быстрое развертывание не достигается.
Какая была бы нормальная процедура? Пожалуйста, поделитесь своими идеями.