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:
- Stages: Pipeline yra padalintas į etapus, kurie vykdomi seka. Užduotys viename etape gali būti vykdomos lygiagrečiai.
- Jobs: Kiekviena užduotis vykdoma atskirame Runner'yje. Runner'is yra agentas, kuris paima darbą iš GitLab CI/CD ir jį vykdo.
- Commands: Kiekvienos užduoties viduje vykdomos komandos, nurodytos sekcijoje
script.gitlab-ci.ymlfaile. Š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.
- Dependencies (Priklausomybės): Užduotys gali priklausyti nuo ankstesnių užduočių rezultatų, naudojant žodį
needs. - 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.
- Caching (Kavavimas): Priklausomybės arba laikini failai gali būti kaupiami tarp užduočių vykdymo, siekiant pagreitinti procesą.
- 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.