Sobes.tech
Junior

Kas vyksta po to, kai GitLab atsisiunčia kodą?

sobes.tech AI

Atsakymas iš AI

Po to, kai atsisiųsite kodą (klonuosite repozitoriją), GitLab CI/CD vykdo pipeline — užduočių (jobs) ir etapų (stages) rinkinį, apibrėžtą .gitlab-ci.yml faile repozitorijos šakninėje direktorijoje.

Tipinio pipeline pagrindiniai etapai po kodo atsisiuntimo:

  1. Stages: Pipeline yra padalintas į etapus, kurie vykdomi seka. Užduotys viename etape gali būti vykdomos lygiagrečiai.
  2. Jobs: Kiekviena užduotis vykdoma atskirame Runner'yje. Runner'is yra agentas, kuris paima darbą iš GitLab CI/CD ir jį vykdo.
  3. Commands: Kiekvienos užduoties viduje vykdomos komandos, nurodytos sekcijoje script .gitlab-ci.yml faile. Šios komandos gali apimti:
    • Projekto surinkimą (pvz., kodo kompiliavimą, artefaktų pakavimą).
    • Testų vykdymą (vienetinius testus, integracinius testus ir kt.).
    • Kodo kokybės patikrinimą (linting, statinę analizę).
    • Docker vaizdų kūrimą.
    • Diegimą (deployment) į testavimo, staging ar gamybos aplinką.
    • Kitas būtinus veiksmus.
  4. Dependencies (Priklausomybės): Užduotys gali priklausyti nuo ankstesnių užduočių rezultatų, naudojant žodį needs.
  5. Artifacts (Artefaktai): Užduočių vykdymo rezultatai (pvz., sukompiliuotas kodas, testų ataskaitos, Docker vaizdai) gali būti išsaugoti kaip artefaktai, kurie yra prieinami atsisiuntimui arba naudojimui vėlesnėse užduotyse.
  6. Caching (Kavavimas): Priklausomybės arba laikini failai gali būti kaupiami tarp užduočių vykdymo, siekiant pagreitinti procesą.
  7. Reporting (Ataskaitos): Vykdymo rezultatai (sėkmė/nepavykimas), žurnalai ir artefaktai yra prieinami GitLab sąsajoje.

Pavyzdinė .gitlab-ci.yml struktūra:

stages: # Etapų apibrėžimas
  - build
  - test
  - deploy

build_job: # Užduoties apibrėžimas
  stage: build # Priklausymas etapui
  script: # Vykdomos komandos
    - echo "Building the project..."
    - mvn package # Maven surinkimo pavyzdys
  artifacts: # Artefaktų išsaugojimas
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - mvn test # Testų vykdymo pavyzdys
  needs: # Priklausomybė nuo ankstesnės užduoties
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the application..."
    - docker build -t my-app . # Docker vaizdo kūrimo pavyzdys
    - docker push my-app # Vaizdo įkėlimo į saugyklą pavyzdys
  only: # Sąlyga užduočiai vykdyti
    - main # Tik šakos main pakeitimai

Taigi, po kodo atsisiuntimo, GitLab CI/CD organizuoja vykdymo procesą, skirtą programos surinkimui, testavimui ir diegimui.