Repositoryk létrehozása és beállítása
1. Repositoryk létrehozása
A gbsolutions csoporton belül hozzunk létre egy új subgroup-ot, ami az ügyfél nevére utaljon és azon belül hozzuk létre a projekthez tartozó subgroupot.
Group létrehozás a gbsolutions groupba
Jelenleg csak az alábbi embereknek van jogosultsága új groupot létrehozni a gbsolutions-ön belül:
| név | email cím |
|---|---|
| Kazsik Ádám | adam.kazsik@intuitech.studio |
| Katona Áron | aron.katona@intuitech.studio |
| Surányi Ákos | akos.suranyi@intuitech.studio |
| Lendvai Richárd | richard.lendvai@intuitech.studio |
| Sevcsik-Zajácz András | andras.sevcsik-zajacz@intuitech.studio |
Közülük kérjünk meg valakit az ügyfél subgroup létrehozására, és kérjünk rá „Owner“ jogosultságot. Azon belül így már létre tudjuk majd hozni a projekt subgroupot.
Több subgroup egy ügyfélhez
Ha adott ügyfélnek több izolált projektet is szállítunk, akkor értelemszerűn egy ügyfél subgroupon belül hozzuk létre a projekt subgroupot.
Példa
Ha az ügyfél neve „Példa Cég Kft.“ és a projekt neve „Legjobb Project“ akkor az alábbi módon hozzuk létre GitLab-on a groupkat:
Így ha később ennek a cégnek egy új projektet is fejlesztünk: „Legeslegjobb Project“ akkor ahhoz az alábbi módon tudjuk definiálni a groupot:
A projekt subgroupba hozzuk át a Semi Product éppen aktuális állapotát.
Ehhez használjuk az Import Repo by GitLab export opciót ami a repository konfigurációk jelentős részét is importálja.
Az import lépéseket mindegyik Semi Product projektre hajtsuk végre:
apibackendfrontenddocumentationbot
1.1 Repositoryk importálása
Fontos
A SEMI repository-kat mindenképpen Google Chrome böngészőt használva exportáljuk és importáljuk, az esetleges fájlkiterjesztéssel kapcsolatos hibák elkerülése érdekében.
1.1.1 Export repository
SEMI repositoryk exportálása
Fontos, hogy a SEMI repositoryk exportjához legalább „Maintainer“ jogosultság szükséges a SEMI product subgroupban. Amennyiben nem rendelkezünk a megfelelő jogosultsággal, az itt található SEMI csapattagok valamelyikétől kérjünk jogosultságot.
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> General menüpontot.
- Nyissuk ki az Advanced szekciót.
- Az Export project bekezdésben kattintsunk az Export project gombra.
- Ezt követően pár percen belül a GitLab-ra regisztrált email címünkre kapunk egy üzenet az importhoz szükséges
tar.gzfájl letöltő linkjével. - Mentsük el ezt a fájlt a gépünkre.
Figyelem
A backend exportálása kb. 8 percig tart, és akár 10-15 percig is eltarthat mire megkérkezik az exportot tartalmazó e-mail.
Miután elkészült az export a felületen is megjelenik egy letöltő link.
1.1.2 Import repository
- GitLabon lépjünk be a projekt subgroupba majd kattintsunk a New project gombra.
- Válasszuk az Import project opciót.
-
Az Import project from szekcóban válasszuk ki a GitLab export opciót.
-
A Project name mezőbe adjuk meg a projekt nevét. Nem javasoljuk a repository-k átnevezését. A későbbi problémák és félreértések elkerülése érdekében a
backendprojektet,backendnéven, afrontend-et,frontendnéven importáljuk, és hasonlóan járjunk el a többi projektnél is. -
A GitLab project export szekcióban válasszuk ki az importálni kívánt
tar.gzexport fájlt. -
Kattintsunk az Import project gombra az import befejezéséhez.
SEMI-ből örökölt branchek, issue-k, merge requestek, tag-ek
Az importálás következménye, hogy megkapjuk a teljes SEMI Git History-t is a repositoryhoz, beleértve a nyitott brancheket, merge requesteket, esetleges issue-kat és a SEMI-ben létrehozott tageket.
Épp ezért nézzük át az importált repository-kat, és a projekt elején törüljük ki a számunkra nem szükséges brancheket, tageket, mr-eket és issuekat.
Ez a törlés csak a projekt repository-jára érvényes, így nyugodtan töröljünk ki mindent, csak a develop és a main branch megtartása szükséges.
Fontos
Az importálás a backend esetén legalább 60 percig tart.
2. Subgroup konfigurálása
Az alábbi pontokban subgroup alatt mindig az adott projekt subgroup-ját értjük, azaz amennyiben a gbsolutions/pelda-ceg/ ügyfél subgroupban szerepel a mi projektünk subgroupja: gbsolutions/pelda-ceg/pelda-projekt akkor az alábbi beállításokat a pelda-projekt subgroupra kell végrehajtani.
Fontos, hogy a projekt subgroup nem összekeverendő a GitLab projektekkel (pl.: backend, frontend, api stb.)
2.1 Deploy token létrehozása
Hozzunk létre egy deploy tokent. Ezt fogja a VM használni telepítéskor, hogy leszedje a docker imageket a registryből.
- Az aktuális subgroupba navigálva a baloldali menüsorból válasszuk ki a Settings -> Repository menüpontot.
- Nyissuk ki a Deploy tokens szekciót.
- A Name mezőbe adjuk meg a deploy token nevét.
-
A Scopes szekcióban pipáljuk be az alábbiakat:
read_repositoryread_registrywrite_registryread_package_registrywrite_package_registry
-
A Create deploy token gombra kattintva hozzuk létre a tokent.
Deploy Token Password
Figyeljünk arra, hogy a deploy token jelszavát csak a létrehozáskor tudjuk megtekinteni és elmenteni.
Amennyiben ezen a ponton elfelejtjük megtenni, később nem lesz lehetőség visszakeresni, hanem új deploy tokent kell készítenünk.
2.2 Group access token létrehozása
Group Access Token vs. Project Access Token
Fontos, hogy ebben a lépésben a teljes subgrouphoz hozzuk létre az access tokent (Pl.: semi-product -> Group Access token), és ne egy specifikus projekthez (Pl.: backend, frontend -> Project Access Token)
Azaz fontos, hogy az alábbi lépések eredménye egy Group Access Token legyen!
Hozzunk létre egy Group Access Tokent a subgrouphoz. Ezt fogja használni az OBR release CI job.
- Az aktuális subgroupba navigálva (pl.:
semi-product) a baloldali menüsorból válasszuk ki a Settings -> Access Tokens menüpontot. - Kattintsunk az Add new token gombra.
- A Token name mezőben adjuk meg a token nevét.
- A Select a role legördülő mezőben válasszuk ki a Maintainer role-t.
-
A Select scopes szekcióban pipáljuk be az alábbiakat:
apiread_apiread_repositorywrite_repositoryread_registrywrite_registry
-
Végül kattintsunk a Create group access token gombra kattintva hozzuk létre a tokent.

Access Token Password
Figyeljünk arra, hogy az access token jelszavát csak a létrehozáskor tudjuk megtekinteni és elmenteni.
Amennyiben ezen a ponton elfelejtjük megtenni, később nem lesz lehetőség visszakeresni, hanem új access tokent kell készítenünk.

2.3 CI változók definiálása
- Az aktuális subgroupba navigálva a baloldali menüsorból válasszuk ki a Settings -> CI/CD menüpontot.
- Nyissuk ki a Variables szekciót.
- Az Add variable gombbal adjuk hozzá az alábbi változókat:
| Key | Value | Protect variable | Mask variable | Expand variable reference |
|---|---|---|---|---|
DOCKER_AUTH_CONFIG |
Érték | |||
DOCKER_REGISTRY_URL |
Értéke a backend projekt GitLab container registry-jének elérési útvonala. Pl.: registry.gitlab.com/gbsolutions/semi-product/backend. A registry url az itt leírt lépéseket követve a GitLab felületén is megtalálható. Fontos, hogy a container registry url nem tartalmaz nagybetűket, még akkor sem, ha subgroup-ok nevében használtunk nagybetűket! |
|||
DOCKER_REGISTRY_USERNAME |
Értéke legyen a Deploy token létrehozása szekcióban létrehozott deploy token username értéke. | |||
DOCKER_REGISTRY_PASSWORD |
A Deploy token létrehozása szekcióban létrehozott deploy token jelszava. | |||
GITLAB_RELEASE_TOKEN |
A Group Access Token létrehozása szekcióban létrehozott token-hez tartozó password értékét kell itt megadni. | |||
GITLAB_RELEASE_USERNAME |
Tetszőleges név a Release job számára. Ez a név fog megjelenni a Release job-hoz tartozó commit-oknál, ezért célszerű az alábbi módon megadni: ${projekt-név} - Release Job. Pl.: Semi Product - Release Job. |
|||
GITLAB_RELEASE_EMAIL |
A Release job-hoz tartozó commit-oknál megjelenő email cím. Itt célszerű a projekt email csoportjának címét megadni. |
Változók értékei:
-
DOCKER_AUTH_CONFIG: A SEMI által publikált docker image-ek CI jobokból való eléréséhez szükséges. Értéke legyen: -
DOCKER_REGISTRY_URL: Értékét megnézhetjük az alábbi lépéseket követve:- A frissen importált
backendprojekt-be navigálva, baloldali menüsávból kiválasztjukDeploymajdContainer registrymenüpontot. -
A megnyíló Container registry képernyőn megjelennek a parancsok, amikkel image-eket pusholhatunk a registry-be. Innen kimásolhatjuk a registry url-t:

- A frissen importált
2.4 Package Registry konfiguráció
Kapcsoljuk ki, hogy ne lehessen duplikáltan (ugyanazon a néven) package-eket feltölteni a GitLab package registry-be.
- Az aktuális subgroupba navigálva a baloldali menüsorból válasszuk ki a Settings -> Packages and registries menüpontot.
-
A Duplicate packages szekcióban a Package format-ok közül keressük ki a Generic-et, és az Allow duplicates kapcsolót állítsuk kikapcsolt állapotra.

3. Repositoryk konfigurálása
Első lépésként minden projekten hozzuk létre a main és develop brancheket. (Amennyiben még nem léteznek.)
Az alábbi konfigurációs lépéseket szintén mindegyik projektre hajtsuk végre:
apibackendfrontenddocumentation
3.1 A default branch beállítása
Default branch beállítása
Az itt található konfigurációt, amennyiben a fent leírt módon importáljuk a projektet, akkor nem kell végrehajtanunk, de érdemes ellenőriznünk, hogy a leírtaknak megfelelő beállításokat látjuk-e a projekten.
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> Repository menüpontot.
- Nyissuk ki a Branch defaults szekciót.
- A legördülő menüből válasszuk ki a
developbranchet. - Az Auto-close referenced issues on default branch opciót pipáljuk be.
- Kattintsunk a Save changes gombra.
3.2 A protected branchek beállítása
3.2.1 Alapbeállítások
Alapbeállítások
Az itt található konfigurációt, amennyiben az fent leírt módon importáljuk a projektet, akkor nem kell végrehajtanunk, de érdemes ellenőriznünk, hogy a leírtaknak megfelelő beállításokat látjuk-e a projekten.
Importált push/merge jogok törlése
Az import következtében, az importálást végző felhasználó alapértelmezetten be lesz állítva a develop és main branchekhez.
Ezt a felhasználót az projekt indulásánál vegyük ki a push/merge joggal rendelkező felhasználók közül develop és main brancheknél.
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> Repository menüpontot.
- Nyissuk ki a Protected branches szekciót.
-
A Protect a branch form segítségével adjuk hozzá a brancheket az alábbi táblázat alapján:
Branch Allowed to merge Allowed to push Allowed to force push Code owner approval main no one no one false false develop maintainers no one false false release/* maintainers maintainers false false hotfix/* maintainers maintainers false false epic/* maintainers maintainers false false Ha mindent jól csináltunk az alábbi eredményt kell látnunk a Protected branches szekcióban:
3.2.2 Group Access Token user push/merge jog beállítása a protected branchekhez
Ahhoz, hogy a release job képes legyen a release kiadása után a release brancheket visszamergelni a védett develop és main branchekre, az alábbi beállításokat el kell végeznünk az összes projekten:
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> Repository menüpontot.
- Nyissuk ki a Protected branches szekciót.
-
A
developés amainbrancheken hajtsuk végre az alábbi lépéseket:- Az Allow to push and merge oszlopban nyissuk ki a legördülő menüt, majd a keresőbe kezdjük el begépelni a Group Access Token létrehozása szekcióban létrehozott token nevét.
- Válasszuk ki az Accesss Tokenhez tartozó user-t, ezzel hozzádva azon felhasználókhoz, akik pusholhatnak a branch-re.

3.3 Merge requestek konfigurálása
Merge requestek konfigurálása
Az itt található konfigurációt, amennyiben az fent leírt módon importáljuk a projektet, akkor csak a Squash commits when merging bekezdéshez tartozó konfigurációt kell elvégeznünk, de érdemes a többi beállítást is ellenőriznünk.
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> Merge request menüpontot.
-
A Merge method bekezdésnél válasszuk ki a Fast-forward merge opciót.
-
A Squash commits when merging bekezdésnél válasszuk ki Encourage opciót.
-
A Merge checks bekezdésnél pipáljuk be a Pipelines must succeed és az All discussions must be resolved opciókat.
3.4 Continous Integration konfigurálása
3.4.1 Instance runnerek kikapcsolása
Instance runnerek kikapcsolása
Az itt található konfigurációt, amennyiben az fent leírt módon importáljuk a projektet, akkor nem kell végrehajtanunk, de érdemes ellenőriznünk, hogy a leírtaknak megfelelő beállításokat látjuk-e a projekten.
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> CI/CD menüpontot.
- Nyissuk ki a Runners szekciót.
-
Az Instance Runners bekezdésben kapcsoljuk ki az instance runnert az Enable instance runners for this project opció disabledre állításával. Helyét az autoscaling manager veszi át automatikusan, mint group runner. Az autoscaling managerről részletesebben itt olvashatsz.

3.4.2 Job token permissions bekapcsolása
Az alábbi konfigurációs lépéseket az alábbi projektre hajtsuk végre:
apibackendfrontend
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> CI/CD menüpontot.
- Nyissuk ki a Job token permissions szekciót.
-
Az Limit access to this project kapcsolót állítsuk bekapcsolt állapotba.

Az alábbi konfigurációs lépéseket csak az api projektre hajtsuk végre.
- Az
apiprojektbe navigálva a baloldali menüsorból válasszuk ki a Settings -> CI/CD menüpontot. - Nyissuk ki a Job token permissions szekciót.
- Az Allow CI job tokens from the following projects to access this project táblázat jobb felső sarkában kattintsunk az Add project or group gombra.
-
Az input mezőbe adjuk meg a
backendprojekt elérési útvonalát:gbsolutions/${projekt-nev}/backend, majd kattintsunk az Add gombra.
-
Ugyanígy adjuk hozzá a
frontendprojektet is.
3.4.3 Scheduled pipeline konfigurálása
Annak érdekében, hogy ne kelljen minden egyes job futása során letölteni ugyanazokat a maven/npm függőségeket, a recreate-caches job
naponta egyszer lefut, és feltölti ezeket a függőségeket egy .zip archív fájlban a GitLab szerverre. Ezt a fájlt a megfelelő
jobok induláskor letöltik és felhasználják.
Az alábbi konfigurációs lépéseket az következő projektre hajtsuk végre:
backendfrontend
- Az aktuális projektbe navigálva a baloldali menüsorból válasszuk ki a Build -> Pipeline schedules menüpontot.
-
A Schedules képernyőn a
recreate-cachessorban, jobb oldalt kattintsunk a „ceruza“ inkonra.
-
Az így megnyíló Edit Pipeline Schedules képernyőn pipáljuk be az Activated opciót, majd kattintsunk a Save pipeline schedule gombra.

4. Tagok hozzáadása
A repositoryk létrehozásakor a láthatóságnál szándékosan a Private opciót választottuk. Ennek oka, hogy explicit lehessen definiálni, hogy mely csapattagok milyen projektekhez férhessenek hozzá.
Ebből következően a projekten egyénenként kell eldönteni azt is, hogy projekt vagy subgroup szinten akarjuk hozzáadni az egyes tagokat.
Ezt az alapján lehet eldönteni, hogy mi a célunk:
- A hozzáadni kívánt csapattag csak bizonyos projektekhez férjen hozzá.
- A hozzáadni kívánt csapattag a subgroup alatti összes projekthez hozzáférjen.
Új tag hozzáadása:
- Az aktuális projektbe/subgroupba navigálva a baloldali menüsorból válasszuk ki a Project information -> Members (Subgroup information -> Members subgroup scope esetén) menüpontot.
- A jobb felső sarokban kattintsunk az Invite members gombra.
- A GitLab member or email address adjuk meg a meghívni kívánt csapattag céges email címét.
- A Select a role szekcióban válasszuk ki milyen jogosultsággal kell rendelkeznie az új tagnak.
- Az Access expiration date szekcióban megadhatjuk meddig legyen hozzáférése az új tagnak a projekthez/subgrouphoz. (Amennyiben nem töltjük ki nem fog lejárni a hozzáférése.)
- Kattintsunk az Invite gombra az új tag meghívásához.