Skip to content

Release a nasazení do produkce

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í.

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];
  1. 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í.

  2. 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 commitne CHANGELOG.md zpět do dev
    • merge_to_master: ff-merge dev do master a otagování verze
  3. 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:

  1. Release cut ručně: V GitLabu Build → Pipeline schedules → Denní release cut → Run, nebo z terminálu:

    Terminal window
    glab schedule list
    glab schedule run <ID>

    Počkejte, až pipeline doběhne (testy, deploy na dev, changelog, merge do masteru, tag).

  2. Deploy na produkci ručně: V GitLabu Build → Pipelines → New pipeline na větvi master a v pipeline ručně spusťte job deploy-master. Z terminálu:

    Terminal window
    glab ci run --branch master

    Job deploy-master je v ručně spuštěné pipeline typu manual, je potřeba ho odklepnout.

  3. Deploy sám zavolá changelog:announce, Slack oznámení tedy odejde i při ručním nasazení.

Oprava, která nemůže čekat na večerní release:

  1. Fix přes MR do dev (standardní cesta, projde testy).
  2. Ruční release cut + ruční deploy podle postupu výše.
  • Verzi počítá php artisan changelog:generate (bump patch podle nejnovější verze v CHANGELOG.md). CI joby verzi čtou jako první výskyt v.x.y.z v souboru.
  • Výstup AI se validuje: blok musí mít hlavičky ### YYYY-MM-DD a #### v.x.y.z a 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 do dev uprostřed běhu nezruší.
  • Push pipeline na master se 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 dev v 18:30, autodeploy master ve 20:00.