Sobes.tech
Junior

Ce se întâmplă după ce GitLab descarcă codul?

sobes.tech AI

Răspuns de la AI

După descărcarea codului (clonarea depozitului), GitLab CI/CD execută un pipeline — un set de sarcini (jobs) și etape (stages), definite în fișierul .gitlab-ci.yml din rădăcina depozitului.

Etapele principale ale unui pipeline tipic după descărcarea codului:

  1. Stages: Pipeline-ul este împărțit în etape, care sunt executate secvențial. Sarcinile din aceeași etapă pot fi executate în paralel.
  2. Jobs: Fiecare sarcină este executată pe un Runner separat. Un Runner este un agent care preia munca de la GitLab CI/CD și o execută.
  3. Commands: În interiorul fiecărei sarcini, se execută comenzile specificate în secțiunea script din .gitlab-ci.yml. Aceste comenzi pot include:
    • Construirea proiectului (de exemplu, compilarea codului, împachetarea artefactelor).
    • Rularea testelor (unitare, de integrare etc.).
    • Verificarea calității codului (linting, analiză statică).
    • Crearea imaginilor Docker.
    • Deployment în medii de testare, staging sau producție.
    • Alte acțiuni necesare.
  4. Dependencies (Dependențe): Sarcinile pot depinde de rezultatele sarcinilor anterioare, folosind cuvântul cheie needs.
  5. Artifacts (Artefacte): Rezultatele sarcinilor (de exemplu, cod compilat, rapoarte de testare, imagini Docker) pot fi salvate ca artefacte, disponibile pentru descărcare sau utilizate în sarcini ulterioare.
  6. Caching (Cache): Dependențele sau fișierele temporare pot fi cache-uite între rulările sarcinilor pentru a accelera execuția.
  7. Reporting (Raportare): Rezultatele execuției (succes/eșec), jurnalele și artefactele sunt disponibile în interfața GitLab.

Structura aproximativă a .gitlab-ci.yml:

stages: # Definirea etapelor
  - build
  - test
  - deploy

build_job: # Definirea sarcinii
  stage: build # Apartenența la etapă
  script: # Comenzi de executat
    - echo "Construiesc proiectul..."
    - mvn package # Exemplu de comandă de build cu Maven
  artifacts: # Salvarea artefactelor
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Execut testele..."
    - mvn test # Exemplu de comandă pentru rularea testelor
  needs: # Dependență de sarcina anterioară
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Se face deploy aplicației..."
    - docker build -t my-app . # Exemplu de construire a unei imagini Docker
    - docker push my-app # Exemplu de trimitere a imaginii în depozit
  only: # Condiție pentru executarea sarcinii
    - main # Doar la commit pe branch-ul main

Astfel, după descărcarea codului, GitLab CI/CD orchestrează executarea unui proces definit de utilizator, orientat spre construirea, testarea și implementarea aplicației.