Middle
Mi történik, miután a GitLab letölti a kódot?
sobes.tech MI
Válasz az MI-től
Miután a GitLab letölti a repository kódját a munkakönyvtárba, megkezdődik a .gitlab-ci.yml fájlban meghatározott CI/CD csővezeték végrehajtása.
- A
.gitlab-ci.ymlelemzése: A GitLab Runner (vagy beépített CI esetén a GitLab) beolvassa a konfigurációt a.gitlab-ci.yml-ből. Ez a fájl leírja a szakaszokat (stages) és a feladatokat (jobs) a csővezetékben. - A Runner inicializálása: Egy elérhető GitLab Runner kijelölése a csővezeték végrehajtására. A Runner információkat kap a repository-ról, commit-ról, branch-ről és a
.gitlab-ci.ymlkonfigurációról. - Végrehajtási környezet létrehozása: A Runner előkészíti a környezetet a feladatok végrehajtására. Ez lehet:
- Virtuális gép
- Konténer (Docker, Kubernetes)
- Dedikált szerver
- Shell
- A szakaszok (stages) végrehajtása: A csővezeték szakaszok szerint egymás után fut. Egy szakaszban lévő feladatok párhuzamosan is futtathatók.
- Feladatok (jobs) végrehajtása: Minden szakaszban a konfigurált feladatok kerülnek végrehajtásra. Egy feladat tartalmazza:
- Az executor vagy kép meghatározását, ha nem lett megadva a csővezeték szintjén vagy a
variablesszekcióban. - A repository klónozását (már megtörtént a GitLab által, de a Runner futtathat
git fetch-t vagygit checkout-t a kívánt állapothoz). - A cache visszaállítását (ha be van állítva) a gyorsabb build érdekében (pl. függőségek betöltése).
- A szkriptek futtatását (
script): Ez a feladat fő tartalma, ahol a build, tesztelés, elemzés vagy telepítés parancsai futnak. - Artefaktok feltöltése (ha konfigurálva van): A feladat eredményei (pl. fordított binárisok, jelentések) tárolódnak a későbbi felhasználás vagy feltöltés céljából.
- A cache mentése (ha be van állítva) a jövőbeli gyorsabb indításokhoz.
- Az executor vagy kép meghatározását, ha nem lett megadva a csővezeték szintjén vagy a
- Állapotjelentés: A Runner visszaküldi minden feladat végrehajtási státuszát (siker, hiba, megszakítás) a GitLab-nek. A felhasználó a pipeline oldalán látja az előrehaladást és az eredményeket.
- A következő szakaszhoz lépés: Ha az aktuális szakasz összes feladata sikeresen befejeződött (vagy a
allow_failurebeállításra került), akkor a következő szakasz kezdődik. Ha egy feladat hibával zárul és azallow_failurenincs beállítva, akkor az egész csővezeték megszakad. - A csővezeték befejezése: Minden szakasz végrehajtása után (vagy hiba esetén) a csővezeték befejeződik. Az eredmények és az artefaktok elérhetők a GitLab webes felületén.
Példa a .gitlab-ci.yml szerkezetére:
// A csővezeték szakaszainak meghatározása
stages:
- build
- test
- deploy
// Build feladat a build szakaszban
build_job:
stage: build
image: docker:latest // Docker kép használata
script:
- echo "Az alkalmazás építése..."
- docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Docker kép építése
artifacts:
paths:
- myapp.tar // Az építési artefakt mentése
// Teszt feladat a test szakaszban
test_job:
stage: test
image: python:3.9 // Python kép használata
script:
- echo "Tesztelés futtatása..."
- pip install -r requirements.txt
- pytest // Tesztek futtatása
needs: ["build_job"] // A build_job sikeres befejezése után fut
// Deployment feladat a deploy szakaszban
deploy_job:
stage: deploy
image: ubuntu:latest // Ubuntu kép használata
script:
- echo "Az alkalmazás telepítése..."
- echo "A telepítési szkript ide kerül..." // Telepítési szkript
only: // Csak a master vagy tagek esetén fut
- master
- tags
needs: ["test_job"] // A test_job sikeres befejezése után fut
Így a kód letöltése csak az első lépés, amit egy összetett automatizált build, tesztelés és telepítés folyamat követ a .gitlab-ci.yml konfigurációja alapján.