Sobes.tech
Junior

Mi történik, miután a GitLab letölti a kódot?

sobes.tech MI

Válasz az MI-től

A kód letöltése (a repository klónozása) után a GitLab CI/CD egy pipeline-t hajt végre — egy feladatokból (jobs) és szakaszokból (stages) álló sorozatot, amelyeket a .gitlab-ci.yml fájl határoz meg a repository gyökérkönyvtárában.

A kód letöltése után egy tipikus pipeline fő szakaszai:

  1. Stages: A pipeline szakaszokra van osztva, amelyek egymás után kerülnek végrehajtásra. Egy szakaszban lévő feladatok párhuzamosan is futtathatók.
  2. Jobs: Minden feladat egy külön Runner-en fut. A Runner egy ügynök, amely a GitLab CI/CD-től kapja a munkát és végrehajtja azt.
  3. Commands: Minden feladatban a .gitlab-ci.yml script szekciójában megadott parancsok futnak le. Ezek a parancsok tartalmazhatnak:
    • A projekt építése (pl. kód fordítása, artefaktok csomagolása).
    • Tesztek futtatása (egység, integrációs stb.).
    • A kód minőségének ellenőrzése (linting, statikus elemzés).
    • Docker képek készítése.
    • Deployment teszt-, staging vagy produkciós környezetbe.
    • Egyéb szükséges műveletek.
  4. Dependencies (Függőségek): A feladatok függhetnek az előző feladatok eredményeitől, a needs kulcsszó használatával.
  5. Artifacts (Artefaktok): A feladatok eredményei (pl. fordított kód, tesztjelentések, Docker képek) artefaktként menthetők, amelyek letölthetők vagy későbbi feladatokban felhasználhatók.
  6. Caching (Gyorsítótárazás): A függőségek vagy ideiglenes fájlok cache-elhetők a feladatok közötti gyorsítás érdekében.
  7. Reporting (Jelentés): A végrehajtás eredményei (siker/sikertelenség), logok és artefaktok elérhetők a GitLab felületén.

A .gitlab-ci.yml szerkezeti példája:

stages: # Szakaszok meghatározása
  - build
  - test
  - deploy

build_job: # Feladat meghatározása
  stage: build # A szakaszhoz tartozik
  script: # Parancsok a végrehajtáshoz
    - echo "A projekt építése..."
    - mvn package # Maven építési példa
  artifacts: # Artefaktok mentése
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Tesztelés..."
    - mvn test # Teszt futtatási példa
  needs: # Függőség az előző feladattól
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Alkalmazás telepítése..."
    - docker build -t my-app . # Docker kép építése példa
    - docker push my-app # Kép pusholása a tárolóba
  only: # Feltétel a feladat végrehajtásához
    - main # Csak a main ágban történő commit esetén

Így, a kód letöltése után a GitLab CI/CD a felhasználó által meghatározott munkafolyamatot szervezi, amely az alkalmazás építésére, tesztelésére és telepítésére irányul.