Назад к вопросам
Middle
75
questionbank
Расскажите о правилах и процессах рабочего потока (workflow) в GitLab CI.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
GitLab CI/CD workflow основан на файле .gitlab-ci.yml в корне репозитория, описывающем пайплайн, состоящий из стадий (stages) и задач (jobs). Запуск пайплайна происходит автоматически при различных триггерах (пуши, теги, расписания).
Ключевые правила:
- Декларативность: Пайплайн описывается в YAML-файле.
- Стадии: Победи последовательно. По умолчанию: build, test, deploy. Можно определить свои.
- Задачи: Могут выполняться параллельно в пределах одной стадии.
- Исполнители (Runners): Выполняют задачи. Могут быть shared или specific, на различных платформах (Docker, Shell, Kubernetes и др.).
- Артефакты: Файлы, генерируемые задачами, которые могут быть переданы следующим задачам или скачаны пользователем.
- Кэш: Позволяет сохранять зависимости и другие файлы между запусками пайплайна для ускорения выполнения.
- Правила (Rules): Определяют, когда задача должна выполняться, на основе условий (ветки, теги, изменения в файлах и др.).
- Переменные: Позволяют параметризировать пайплайн (предопределенные, защищенные, групповые, проектные).
- Секреты: Хранение чувствительных данных через GitLab CI/CD Variables с маскированием.
Процессы рабочего потока:
- Code Commit: Разработчик делает изменения в коде и пушит их в репозиторий GitLab.
- Pipeline Trigger: GitLab автоматически запускает пайплайн на основе
.gitlab-ci.yml. - Stage Execution: Пайплайн начинает выполнять задачи стадий последовательно.
- Job Execution: Задачи в текущей стадии выполняются параллельно на доступных исполнителях.
- Build: Задача сборки компилирует код, создает артефакты.
- Test: Задача тестирования запускает юниты, интеграционные тесты.
- Deploy: Задача деплоя разворачивает приложение в окружения (Staging, Production).
- Artifacts & Cache Management: Артефакты собираются, кэш используется/обновляется.
- Notifications: GitLab отправляет уведомления о статусе пайплайна (успех, провал).
- Monitoring & Logging: Статус выполнения задач, логи доступны в UI GitLab.
Пример структуры .gitlab-ci.yml:
stages:
- build
- test
- deploy
variables:
IMAGE_NAME: my-app
build:
stage: build
script:
- echo " building..."
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHORT_SHA .
test:
stage: test
script:
- echo " testing..."
- docker run $IMAGE_NAME:$CI_COMMIT_SHORT_SHA npm test
deploy:
stage: deploy
script:
- echo " deploying..."
# Пример деплоя, зависит от окружения (Kubernetes, VM, etc.)
- echo "Deploying to staging..."
rules:
- if: $CI_COMMIT_BRANCH == "main" # Деплой только из ветки main