Sobes.tech
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.

  1. A .gitlab-ci.yml elemzé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.
  2. 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.yml konfigurációról.
  3. 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
  4. 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.
  5. 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 variables szekcióban.
    • A repository klónozását (már megtörtént a GitLab által, de a Runner futtathat git fetch-t vagy git 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.
  6. Á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.
  7. A következő szakaszhoz lépés: Ha az aktuális szakasz összes feladata sikeresen befejeződött (vagy a allow_failure beállításra került), akkor a következő szakasz kezdődik. Ha egy feladat hibával zárul és az allow_failure nincs beállítva, akkor az egész csővezeték megszakad.
  8. 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.