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
releasebranchek létrehozásadevelop-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
releasebranchek visszamergelése a védettdevelopésmainbranchekbe. - Szükséges esetén a kiadott
tagtö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
- A
backendprojektbe navigálva a baloldali menüsorból válasszuk ki a Build -> Pipelines menüpontot. - A jobb felső sarokban kattintsunk a Run pipeline gombra.
- A megnyíló Run pipeline képernyőn a legördülő menüből válasszuk ki az aktuális
releasebranchet (amiből a release-t adjuk), ha az még nem létezik, akkor pedig adevelopbranchet. -
A Variables szekcióban:
- Vegyük fel a
TAGváltozót, az értéke pedig legyen az aktuális release verziószáma. - Vegyük fel a
RELEASE_PACKAGE_SUFFIXváltozót, az értéke pedig legyen aTAGverzió értéke, de cseréljük le a.karaktereket-karakterekre.
Példa a release változókra

- Vegyük fel a
-
Ha ez kész, kattintsunk a Run pipeline gombra.
- A megnyíló pipeline képernyőről tudjuk elindítani a release jobokat.
-
A
release-create-packagestage a nevétől jobbra található gombra kattintva indítható.
-
A
release-create-packagestage 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-mergestage 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 areleasebranchet a védett branchekre. - A
release-rollbackstage pedig értelemszerűen csak akkor szükséges, ha valamiért törölni szeretnénk egy korábban kiadotttag-et.
2. Release artifactok letöltése
-
A pipeline képernyőről, ahonnan elindítottuk a jobokat, kattintsunk a
create-release-packagejobra.
-
Az így megnyíló képernyőn látni fogjuk a job logját.
-
Jobb oldalt keressük meg a Job artifacts szekciót.

-
A Download gombbal letölthetjük
.ziparchive fájlként az összes release artifactot. - 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-packagerelease-mergerelease-rollback
3.1 A release-create-package stage
3.1.1 Az init-release job
- Létrehozza (amennyiben még nem léteznek) a
releasebrancheket adevelopbranchbő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
backendprojektci/scripts/release/ci-db.properties, illetve a jobot is tartalmazó.gitlab-ci-release-flow.ymlfá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-releasejob 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-packagestage sikeres futása után a projekten mergelni szeretnénk areleasebranchet amainésdevelopbranchekbe, akkor az ezzel a jobbal tehető meg automatizáltan. - A job manuálisan indítható.
- Előfeltétele, az
init-releasejob sikeres futása.
3.3 A release-rollback stage
3.3.1 rollback-tags job
- Amennyiben a
release-create-packagestage sikeres futása után a projekten törölni szeretnénk a kiadotttag-eket, akkor ezzel a jobbal tudjuk megtenni. (Pl.: Szeretnénk újra kiadni ugyanazon verziójútag-eket, mert javításokat pusholtunk areleasebranchekre.) - A job manuálisan indítható.
- Előfeltétele, az
init-releasesikeres futása.