Kihagyás

One Button Release (OBR) folyamat

Az OBR release folyamat a manuális release folyamat kiváltására/megkönnyítésére lett létrehozva.

Jelen formájában képes az alábbi release lépéseket elvégezni automatizáltan:

  • Szükséges release branchek létrehozása develop-ból. (Ha már léteznek, akkor automatikusan azokat használja.)
  • A tag-ek kiadása.
  • Docker image-ek létrehozása és pusholása a container registrybe.
  • Migrációs/aggregált SQL fájl generálása a releaselt verzióhoz tartozó SQL fájlok alapján.
  • Adatbázis dokumentáció generálása.
  • A release branchek visszamergelése a védett develop és main branchekbe.
  • Szükséges esetén a kiadott tag törlése (részleges release rollback).

A documentation project releaselése

A documentation repository-t nem kell az alkalmazással együtt releaselni, ebből következően pedig az OBR folyamatnak sem része.

1. Release indítása

  1. A backend projektbe navigálva a baloldali menüsorból válasszuk ki a Build -> Pipelines menüpontot.
  2. A jobb felső sarokban kattintsunk a Run pipeline gombra.
  3. A megnyíló Run pipeline képernyőn a legördülő menüből válasszuk ki az aktuális release branchet (amiből a release-t adjuk), ha az még nem létezik, akkor pedig a develop branchet.
  4. A Variables szekcióban:

    1. Vegyük fel a TAG változót, az értéke pedig legyen az aktuális release verziószáma.
    2. Vegyük fel a RELEASE_PACKAGE_SUFFIX változót, az értéke pedig legyen a TAG verzió értéke, de cseréljük le a . karaktereket - karakterekre.

    Példa a release változókra

    ReleaseVariables

  5. Ha ez kész, kattintsunk a Run pipeline gombra.

  6. A megnyíló pipeline képernyőről tudjuk elindítani a release jobokat.
  7. A release-create-package stage a nevétől jobbra található gombra kattintva indítható.

    ReleaseStages

  8. A release-create-package stage lefutása után, a többi stage is hasonlóan a nevüktől található gombra kattintva indítható.

A release-merge és release-rollback stage-ek

Fontos, hogy a release-merge és release-rollback stage-eket ne indítsuk automatikusan a release-create-package stage után.

  • A release-merge stage indításanak ideje és szükségessége projekt döntés. A projekt release flow-ja határozza meg, hogy mik az előfeltételei annak, hogy mergelhessük a release branchet a védett branchekre.
  • A release-rollback stage pedig értelemszerűen csak akkor szükséges, ha valamiért törölni szeretnénk egy korábban kiadott tag-et.

2. Release artifactok letöltése

  1. A pipeline képernyőről, ahonnan elindítottuk a jobokat, kattintsunk a create-release-package jobra.

    SelectJobForArtifacts

  2. Az így megnyíló képernyőn látni fogjuk a job logját.

  3. Jobb oldalt keressük meg a Job artifacts szekciót.

    DownloadArtifacts

  4. A Download gombbal letölthetjük .zip archive fájlként az összes release artifactot.

  5. A Browse gombbal a GitLab felületén tömörítetlen formában is kitallózhatjuk, majd letölthetjük a számunkra szükséges artifactot.

Szükség esetén az adott jobra kattintva specifikusan is letölthetünk artifact-okat, például ha valamiért a create-release-package nem futott le.

Az alábbi táblázat tartalmazza, hogy melyik job melyik artifactot állítja elő:

Job neve Előállított artifact
init-release A releaselt verzióhoz tartozó telepítési útmutató.
generate-database-documents Adatbázis dokumentáció.
generate-aggregated-sql A verzió telepítésekor lefutó aggregált SQL scripteket tartalmazó fájl.
release-backend-image A backend alkalmazás docker image-je.
release-admin-image Az admin alkalmazás docker image-je.
release-client-image A client alkalmazás docker image-je.
release-partner-image A partner alkalmazás docker image-je.

3. Release stage-ek

Az OBR release folyamat 3 stage-ből áll, melyek az alábbiak:

  • release-create-package
  • release-merge
  • release-rollback

3.1 A release-create-package stage

3.1.1 Az init-release job

  • Létrehozza (amennyiben még nem léteznek) a release brancheket a develop branchből.
  • Létrehozza a tag-eket, miután beállította a megfelelő api verziókat.

3.1.2 A generate-database-documents job

A generate-database-documents job kikapcsolása

Előfordulhat, hogy a projekten nem része az adatbázis dokumentáció a release csomagnak. Ebben az esetben kapcsoljuk is ki ezt a jobot, hogy ne fusson feleslegesen a projekten.

Ezt az itt leírt módon tehetjük meg.

  • Legenerálja a releasehez tartozó aktuális adatbázis dokumentációt.
  • A generáláshoz SchemaSpy-t használ, melyhez a szükséges konfigurációt a backend projekt ci/scripts/release/ci-db.properties, illetve a jobot is tartalmazó .gitlab-ci-release-flow.yml fájlokban találjuk. Amennyiben a projekten nem PostgreSQL adatbázist használunk, ezek módosítása szükséges.
  • A konfiguráció módosításához az itt található dokumentáció szolgál segítségül.

3.1.3 A generate-aggregated-sql job

A generate-aggregated-sql job kikapcsolása

Előfordulhat, hogy a projekten nem része az aggregált SQL fájl a release csomagnak. Ebben az esetben kapcsoljuk is ki ezt a jobot, hogy ne fusson feleslegesen a projekten.

Ezt az itt leírt módon tehetjük meg.

  • Legenerálja az adott verzióban, a verzió telepítésekor lefutó SQL scriptek aggregált fájlját.

3.1.4 A release-admin-image, release-client-image, release-partner-image, release-backend-image jobok

  • Legenerálják az adott alkalmazás docker image-jét, majd fel is pusholják a container registry-be.
  • Automatikusan indul az init-release job után.

3.1.5 A create-release-package job

Feladata, hogy miután a fenti jobok lefutottak, összegyűjtse az általuk létrehozott artifact-okat, és 1 darab artifactba gyűjtse őket. Ezáltal egyetlen .zip archív fájlban tudjuk letölteni a teljes release csomagot.

3.2 A release-merge stage

3.2.1 Az merge-branches job

  • Amennyiben a release-create-package stage sikeres futása után a projekten mergelni szeretnénk a release branchet a main és develop branchekbe, akkor az ezzel a jobbal tehető meg automatizáltan.
  • A job manuálisan indítható.
  • Előfeltétele, az init-release job sikeres futása.

3.3 A release-rollback stage

3.3.1 rollback-tags job

  • Amennyiben a release-create-package stage sikeres futása után a projekten törölni szeretnénk a kiadott tag-eket, akkor ezzel a jobbal tudjuk megtenni. (Pl.: Szeretnénk újra kiadni ugyanazon verziójú tag-eket, mert javításokat pusholtunk a release branchekre.)
  • A job manuálisan indítható.
  • Előfeltétele, az init-release sikeres futása.