Sobes.tech
Middle

Mis juhtub pärast seda, kui GitLab laadib alla koodi?

sobes.tech AI

Vastus AI-lt

Pärast seda, kui GitLab alla laadib koodi hoidla töökausta, algab CI/CD pailpajoon, mis on määratletud failis .gitlab-ci.yml.

  1. .gitlab-ci.yml analüüs: GitLab Runner (või GitLab ise, kui kasutatakse integreeritud CI) loeb konfiguratsiooni .gitlab-ci.yml-st. See fail kirjeldab pailpajooni etappe (stages) ja ülesandeid (jobs).
  2. Runneri initsialiseerimine: määratakse kättesaadav GitLab Runner pailpajooni täitmiseks. Runner saab teavet hoidla, kommi, haru ja .gitlab-ci.yml konfiguratsiooni kohta.
  3. Täitmise keskkonna ettevalmistamine: Runner valmistab ette keskkonna ülesannete täitmiseks. See võib olla:
    • Virtuaalmasin
    • Konteiner (Docker, Kubernetes)
    • Eraldatud server
    • Shell
  4. Etappide (stages) täitmine: pailpajoon täidetakse etappide kaupa, mis on määratletud .gitlab-ci.yml-s. Üks etapp võib sisaldada paralleelselt täidetavaid ülesandeid.
  5. Ülesannete (jobs) täitmine: iga etapi jooksul täidetakse konfigureeritud ülesandeid. Ülesanne hõlmab:
    • Pildi või täitja (executor) määramist, kui see pole määratud pailpajooni või variables sektsioonis.
    • hoidla kloonimist (juba tegi GitLab, kuid Runner võib teha git fetch või git checkout vajaliku oleku jaoks).
    • vahemälu taastamist (kui see on seadistatud) kiirendamiseks (näiteks sõltuvuste allalaadimine).
    • skriptide täitmist (script): see on ülesande põhisisu, kus täidetakse ehitamise, testimise, analüüsi või juurutamise käske.
    • artefaktide üleslaadimist (kui see on seadistatud): ülesande tulemused (näiteks kompileeritud binaarfailid, aruanded) salvestatakse edasiseks kasutamiseks või üleslaadimiseks.
    • vahemälu salvestamist (kui see on seadistatud) tulevaste käivituste kiirendamiseks.
  6. Staatusaruande saatmine: Runner saadab iga ülesande täitmise staatuse (edu, viga, tühistamine) tagasi GitLabile. Kasutaja näeb edenemist ja tulemusi pailpajooni lehel.
  7. Järgmise etapi üleminek: Kui kõik ülesanded käesolevas etapis on edukalt lõpetatud (või on seatud allow_failure), algab järgmine etapp. Kui ülesanne lõpeb veaga ja allow_failure ei ole seatud, katkestatakse kogu pailpajoon.
  8. Pailpajooni lõpetamine: Pärast kõigi etappide täitmist (või vea korral) lõpeb pailpajoon. Tulemused ja artefaktid on kättesaadavad GitLabi veebiliideses.

Näide struktuurist /.gitlab-ci.yml`:

// Määratleme pailpajooni etapid
stages:
  - build
  - test
  - deploy

// Ehitusülesanne build etapil
build_job:
  stage: build
  image: docker:latest // Kasutame Docker-i pilti
  script:
    - echo "Rakenduse ehitamine..."
    - docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Ehitatakse Docker pilt
  artifacts:
    paths:
      - myapp.tar // Salvestame ehituse artefakti

// Testimise ülesanne test etapil
test_job:
  stage: test
  image: python:3.9 // Kasutame Python-i pilti
  script:
    - echo "Testide käivitamine..."
    - pip install -r requirements.txt
    - pytest // Käivitatakse testid
  needs: ["build_job"] // Sõltub edukast build_job lõpetamisest

// Juurutamise ülesanne deploy etapil
deploy_job:
  stage: deploy
  image: ubuntu:latest // Kasutame Ubuntu pilti
  script:
    - echo "Rakenduse juurutamine..."
    - echo "Juurutamise skript siin..." // Juurutamise skript
  only: // Käivitub ainult masteri või siltide puhul
    - master
    - tags
  needs: ["test_job"] // Sõltub edukast test_job lõpetamisest

Seega, koodi allalaadimine on vaid esimene samm, millele järgneb keeruline automatiseeritud ehitamise, testimise ja juurutamise protsess, mis põhineb .gitlab-ci.yml konfiguratsioonil.