Назад к вопросам
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 с маскированием.

Процессы рабочего потока:

  1. Code Commit: Разработчик делает изменения в коде и пушит их в репозиторий GitLab.
  2. Pipeline Trigger: GitLab автоматически запускает пайплайн на основе .gitlab-ci.yml.
  3. Stage Execution: Пайплайн начинает выполнять задачи стадий последовательно.
  4. Job Execution: Задачи в текущей стадии выполняются параллельно на доступных исполнителях.
  5. Build: Задача сборки компилирует код, создает артефакты.
  6. Test: Задача тестирования запускает юниты, интеграционные тесты.
  7. Deploy: Задача деплоя разворачивает приложение в окружения (Staging, Production).
  8. Artifacts & Cache Management: Артефакты собираются, кэш используется/обновляется.
  9. Notifications: GitLab отправляет уведомления о статусе пайплайна (успех, провал).
  10. 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