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.
.gitlab-ci.ymlanalizė: 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.- Runner'io inicijavimas: Priskiriamas prieinamas GitLab Runner pailpajino vykdymui. Runner gauna informaciją apie repozitoriją, komitą, šaką ir
.gitlab-ci.ymlkonfigūraciją. - 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
- Etapų (stages) vykdymas: Pailpajinas vykdomas etapais, apibrėžtais
.gitlab-ci.yml. Vieno etapo užduotys gali būti vykdomos lygiagrečiai. - 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
variablessekcijoje. - Repozitorijos klonavimą (jau atliko GitLab, bet Runner gali vykdyti
git fetchargit checkoutreikalingai 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.
- Atvaizdo arba vykdytojo (executor) nustatymą, jei nėra nurodyta pailpajino ar
- 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.
- Kito etapo perėjimas: Jei visos užduotys dabartiniame etape sėkmingai užbaigtos (arba
allow_failurenustatyta), pradedamas kitas etapas. Jei užduotis baigiasi klaida irallow_failurenėra nustatyta, visas pailpajinas nutraukiamas. - 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.