Sobes.tech
Middle

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

sobes.tech AI

Atsakymas iš AI

Po to, kai GitLab atsisiunčia kodo repozitoriją į darbo katalogą, pradedamas CI/CD pailpajinas, kuris apibrėžtas faile .gitlab-ci.yml.

  1. .gitlab-ci.yml analizė: GitLab Runner (arba pats GitLab, jei naudojamas integruotas CI) skaito konfigūraciją iš .gitlab-ci.yml. Šis failas aprašo etapų (stages) ir užduočių (jobs) pailpajino.
  2. Runner'io inicijavimas: Priskiriamas prieinamas GitLab Runner pailpajino vykdymui. Runner gauna informaciją apie repozitoriją, komitą, šaką ir .gitlab-ci.yml konfigūraciją.
  3. Vykdymo aplinkos paruošimas: Runner paruošia aplinką užduočių vykdymui. Tai gali būti:
    • Virtuali mašina
    • Konteineris (Docker, Kubernetes)
    • Skirtas serveris
    • Shell
  4. Etapų (stages) vykdymas: Pailpajinas vykdomas etapais, apibrėžtais .gitlab-ci.yml. Vieno etapo užduotys gali būti vykdomos lygiagrečiai.
  5. Užduočių (jobs) vykdymas: Kiekviename etape vykdomos konfigūruotos užduotys. Užduotis apima:
    • Atvaizdo arba vykdytojo (executor) nustatymą, jei nėra nurodyta pailpajino ar variables sekcijoje.
    • Repozitorijos klonavimą (jau atliko GitLab, bet Runner gali vykdyti git fetch ar git checkout reikalingai būsenai).
    • Kaso atnaujinimą (jei nustatyta) pagreitinimui (pvz., priklausomybių įkėlimui).
    • Skriptų vykdymą (script): tai pagrindinė užduoties dalis, kur vykdomos statybos, testavimo, analizės ar diegimo komandos.
    • Artefaktų įkėlimą (jei nustatyta): užduoties rezultatai (pvz., sukompiliuoti binariniai failai, ataskaitos) saugomi vėlesniam naudojimui ar įkėlimui.
    • Kaso išsaugojimą (jei nustatyta) būsimų paleidimų spartinimui.
  6. Statuso ataskaita: Runner siunčia būseną kiekvienos užduoties vykdymo (sėkmė, klaida, atšaukimas) atgal į GitLab. Vartotojas mato progresą ir rezultatus pailpajino puslapyje.
  7. Kito etapo perėjimas: Jei visos užduotys dabartiniame etape sėkmingai užbaigtos (arba allow_failure nustatyta), pradedamas kitas etapas. Jei užduotis baigiasi klaida ir allow_failure nėra nustatyta, visas pailpajinas nutraukiamas.
  8. Pailpajino užbaigimas: Po visų etapų vykdymo (arba klaidos atveju) pailpajinas baigiasi. Rezultatai ir artefaktai yra prieinami per GitLab interneto sąsają.

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

// Apibrėžiame pailpajino etapus
stages:
  - build
  - test
  - deploy

// Statybos užduotis build etape
build_job:
  stage: build
  image: docker:latest // Naudojame Docker atvaizdą
  script:
    - echo "Kuriama programa..."
    - docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Kuriame Docker atvaizdą
  artifacts:
    paths:
      - myapp.tar // Išsaugome statybos artefaktą

// Testavimo užduotis test etape
test_job:
  stage: test
  image: python:3.9 // Naudojame Python atvaizdą
  script:
    - echo "Vykdomi testai..."
    - pip install -r requirements.txt
    - pytest // Vykdome testus
  needs: ["build_job"] // Priklauso nuo sėkmingo build_job užbaigimo

// Diegimo užduotis deploy etape
deploy_job:
  stage: deploy
  image: ubuntu:latest // Naudojame Ubuntu atvaizdą
  script:
    - echo "Diegiame programą..."
    - echo "Diegimo scenarijus čia..." // Diegimo scenarijus
  only: // Paleisti tik su master arba žymomis
    - master
    - tags
  needs: ["test_job"] // Priklauso nuo sėkmingo test_job užbaigimo

Taigi, kodo atsisiuntimas yra tik pirmas žingsnis, po kurio seka sudėtingas automatizuotos statybos, testavimo ir diegimo procesas, pagrįstas .gitlab-ci.yml konfigūracija.