Middle
Šta se dešava nakon što GitLab preuzme kod?
sobes.tech АИ
Одговор од АИ
Након што GitLab преузме код репозиторијума у радни директоријум, почиње извршавање CI/CD цевовода дефинисаног у фајлу .gitlab-ci.yml.
- Анализа
.gitlab-ci.yml: GitLab Runner (или сам GitLab ако се користи уграђени CI) чита конфигурацију из.gitlab-ci.yml. Овај фајл описује фазе (stages) и задатке (jobs) цевовода. - Иницијализација Runner-а: Додељује се доступан GitLab Runner за извршавање цевовода. Runner добија информације о репозиторијуму, комиту, грани и конфигурацији
.gitlab-ci.yml. - Креирање окружења за извршавање: Runner припрема окружење за извршавање задатака. Ово може бити:
- Виртуелна машина
- Контејнер (Docker, Kubernetes)
- Посебан сервер
- Shell
- Извршавање фаза (stages): Цевовод се извршава редом по фазама дефинисаним у
.gitlab-ci.yml. Задаци у једној фази могу се извршавати паралелно. - Извршавање задатака (jobs): Унутар сваке фазе се извршавају конфигурисане задатке. Задатак укључује:
- Одређивање слике или извршитеља (executor), ако није задат на нивоу цевовода или секције
variables. - Клонирање репозиторијума (већ је урађено од стране GitLab-а, али Runner може извршити
git fetchилиgit checkoutза потребно стање). - Враћање кеша (ако је подешен) ради убрзања изградње (нпр. учитавање зависности).
- Извршавање скрипти (
script): Ово је основни садржај задатка, где се извршавају команде за изградњу, тестирање, анализу или распоређивање. - Учитавање артефаката (ако је конфигурисано): Резултати задатка (нпр. компајлиране бинарне датотеке, извештаји) се чувају за накнадну употребу или учитавање.
- Сачување кеша (ако је подешен) за убрзање будућих покретања.
- Одређивање слике или извршитеља (executor), ако није задат на нивоу цевовода или секције
- Извештавање о статусу: Runner шаље статус извршења сваког задатка (успех, грешка, отказ) назад у GitLab. Корисник види напредак и резултате на страници цевовода.
- Премина у следећу фазу: Ако су сви задаци у тренутној фази успешно завршени (или је подешен
allow_failure), почиње следећа фаза. Ако задатак заврши са грешком иallow_failureније подешен, цео цевовод се прекида. - Завршетак цевовода: Након извршења свих фаза (или у случају грешке), цевовод се завршава. Резултати и артефакти су доступни преко веб интерфејса GitLab.
Пример структуре /.gitlab-ci.yml`:
// Одређујемо фазе извршења цевовода
stages:
- build
- test
- deploy
// Задатак за изградњу у фази build
build_job:
stage: build
image: docker:latest // Користимо Docker слику
script:
- echo "Изградња апликације..."
- docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Изградња Docker слике
artifacts:
paths:
- myapp.tar // Складиштење артефакта изградње
// Задатак за тестирање у фази test
test_job:
stage: test
image: python:3.9 // Користимо Python слику
script:
- echo "Извршавање тестова..."
- pip install -r requirements.txt
- pytest // Извршавање тестова
needs: ["build_job"] // Зависност од успешног завршетка build_job
// Задатак за распоређивање у фази deploy
deploy_job:
stage: deploy
image: ubuntu:latest // Користимо Ubuntu слику
script:
- echo "Распоређивање апликације..."
- echo "Тут се налази скрипта за распоређивање..." // Скрипта за распоређивање
only: // Покреће се само при комитима на master или таговима
- master
- tags
needs: ["test_job"] // Зависност од успешног завршетка test_job
Дакле, преузимање кода је само први корак, након чега следи сложен аутоматизован процес изградње, тестирања и распоређивања заснован на конфигурацији .gitlab-ci.yml.