Release a nasazení do produkce
Release proces
Section titled “Release proces”Release probíhá v denním rytmu. Verze nevzniká na každém pushi do dev, ale jednou denně v okamžiku takzvaného release cutu. Platí tedy: jedna verze = jeden den = jeden tag = jedno nasazení.
Denní automatický flow
Section titled “Denní automatický flow”graph LR;
A[Merge MR do dev] --> B[18:30 release cut na dev];
B --> C[changelog + verze + tag];
C --> D[ff-merge dev do master];
D --> E[20:00 deploy na produkci];
E --> F[Slack announce];
-
Průběžně: Merge requesty se mergují do větve
dev. Každý push spustí testy a nasazení na development prostředí. Verze ani tag přitom nevznikají. -
18:30 (Europe/Prague): Plánovaná pipeline na
dev(schedule „Denní release cut”) spustí:generate_changelog: AI vygeneruje jeden changelog blok za celý den, zvýší verzi a commitneCHANGELOG.mdzpět dodevmerge_to_master: ff-mergedevdomastera otagování verze
-
20:00: Plánovaná pipeline na
master(schedule „Autodeploy master”) nasadí na produkci (deploy-master) a pošle changelog do Slacku (changelog:announce).
Ruční release (nasazení mimo denní rytmus)
Section titled “Ruční release (nasazení mimo denní rytmus)”Když je potřeba dostat změny z dev do produkce hned a nečekat na večer:
-
Release cut ručně: V GitLabu Build → Pipeline schedules → Denní release cut → Run, nebo z terminálu:
Terminal window glab schedule listglab schedule run <ID>Počkejte, až pipeline doběhne (testy, deploy na dev, changelog, merge do masteru, tag).
-
Deploy na produkci ručně: V GitLabu Build → Pipelines → New pipeline na větvi
mastera v pipeline ručně spusťte jobdeploy-master. Z terminálu:Terminal window glab ci run --branch masterJob
deploy-masterje v ručně spuštěné pipeline typumanual, je potřeba ho odklepnout. -
Deploy sám zavolá
changelog:announce, Slack oznámení tedy odejde i při ručním nasazení.
Hotfix
Section titled “Hotfix”Oprava, která nemůže čekat na večerní release:
- Fix přes MR do
dev(standardní cesta, projde testy). - Ruční release cut + ruční deploy podle postupu výše.
Technické detaily
Section titled “Technické detaily”- Verzi počítá
php artisan changelog:generate(bump patch podle nejnovější verze vCHANGELOG.md). CI joby verzi čtou jako první výskytv.x.y.zv souboru. - Výstup AI se validuje: blok musí mít hlavičky
### YYYY-MM-DDa#### v.x.y.za alespoň jednu odrážku. Neplatný výstup job odmítne a nic nezapíše. - Plánovaná release pipeline je vyjmuta z auto-cancelu (
workflow:rules:auto_cancel), takže ji push dodevuprostřed běhu nezruší. - Push pipeline na
masterse nespouští vůbec (workflow rules), produkce se nasazuje jen ze schedulu nebo ručně. - Oba scheduly jsou v GitLabu pod Build → Pipeline schedules: release cut na
devv 18:30, autodeploymasterve 20:00.