Целта на този документ е да определи общите минимално изисквани политики и действия на организацията за КОМПЛЕКСНАТА стратегия за разклоняване и процеса на внедряване, които трябва да се извършват по време на жизнения цикъл на приложеният.
Стандартната структура за внедряване на приложения използва следните среди:
-
локална среда за разработка (lde)
-
разработка (dev)
-
тестова (stg)
-
продукция (prd)
-
master
Това се превежда като стандартен набор от три клона във всички хранилища на приложения:
Клон |
Среда |
---|---|
|
Политически по-важен от |
|
съдържа в момента работещия код в продукционната среда |
|
съдържа текущия общ код, който ще бъде пуснат в продукционната среда при следващото издание |
|
съдържа общия код, който работи в |
|
съдържа общия код, който ще бъде внедрен в |
|
съдържа общия код, който в момента работи в |
|
съдържа изходния код, който се разработва от разработчиците в техните собствени локални среди за разработка (локална), както и в някои случаи код в |
Следните оперативни насоки трябва да се спазват:
-
Всички клонове се възстановяват отгоре надолу от таблицата по-горе ^^^ – това означава например, че корекциите в продукция ТРЯБВА да се прилагат към всички клонове под нея в следния ред –
develop
,stg, staging
,production
към всеки функционален клон, който е в процес на разработка в момента на приложението -
Когато се разработва нова функционалност, разработчикът ще създаде нов функционален клон от последната версия на
develop
клона. Функционалният клон трябва да следваdevelop
, тоестrebase
. -
Функции, които добавят сложност, но не предоставят тестове с CI внедряване на тези тестови сложности НЕ ТРЯБВА да се добавят към никакви от общите клонове (проверете конкретните стъпки, които трябва да се следват)
-
Когато новоразработената функционалност е готова за включване, разработчикът създава pull заявка, като иска да обедини своя функционален клон с клона
develop
. -
Pull заявката се преглежда от поне още един член на екипа и се обединява в клона
develop
АКО преглеждащият одобри заявката и всички променени компоненти на микросервиса са тествани. -
Внедряването в stg средата се извършва от клона
stg
, за да бъде достъпно за тестване от нетехнически потребители. -
Ако внедряването на клона
stg
има проблеми или ако нетехническите потребители не одобряват последното внедряване в средатаstaging
, се извършва връщане (rollback). -
Когато клонът
staging
бъде тестван от нетехнически потребители в stg средата и се счита за готов за продукция, отговорният за внедряването на функционалността слива функционалността в клонаrelease
(с флаговете-X theirs
и--allow-unrelated-histories
) и го маркира с нова версия, за да позволи идентификацията на състоянието на кода с извикването наgit push --tags
. -
Внедряването в продукционната среда се извършва от клона
release
. -
АКО бизнес представителите намерят грешка в продукцията, която може да бъде отстранена за по-малко от 4 часа, се създава клон hotfix от клона
release
и бързо се внедрява първо в stg средата, и ако всички тестове преминат бързо и там, се внедрява в продукцията с нов етикет. Ако отстраняването на грешката отнема повече от 4 часа, трябва да се създаде приоритетен-1 бъг и да се следва процесът за внедряване без горещи поправки (non-hotfix). -
След като бизнес представителите одобрят новата версия в продукционната среда, съществуващият клон
prod
се възстановява (rebase) с клонаrelease
– издаденият етикет на git става новият „източник на истина“ – тоест каква е текущата версия на софтуера, работеща в продукционната среда. -
АКО бизнес представителите не одобрят новата версия, се извършва връщане (rollback) към предишния
продукционен
commit. -
След изданието ВСИЧКИ общи (
develop
иrelease
) клонове се възстановяват (rebase) от клонаdevelop
от лицето, което извършва изданието. Всички останали разработчици ТРЯБВА също да възстановят своите функционални / корекционни клонове от клона develop – всеки разработчик трябва да се увери, че разликата (diff) между общия клон develop и текущия функционален / корекционен клон, върху който работи, съдържа САМО промените, свързани с текущата грешка/функционалност, върху която той/тя работи.
ЗАБЕЛЕЖКА: Внедряванията в живите среди трябва винаги да се извършват чрез автоматизирани CI/CD процеси, никога ръчно. В описания по-горе процес всички премествания между средите се извършват чрез системата за контрол на изходния код в GitLab.
Всяко внедряване в различни среди трябва да бъде податливо на ръчно стартиране чрез потребителския интерфейс на системата за управление на изходния код и нейният DevOps интерфейс.