Инструменты пользователя

Инструменты сайта


методология_devops:запуск_пайплайнов_из_.gitlab-ci_в_gitlab_runners

Запуск пайплайнов из .gitlab-ci.yml в GitLab Runners

Обзор CI/CD Pipeline в GitLab

  • .gitlab-ci.yml: Файл в корне репозитория, определяющий конфигурацию CI/CD pipeline.
    • Состоит из набора stages (этапов), которые выполняются последовательно (по умолчанию).
    • Каждый stage содержит один или несколько jobs (заданий), которые выполняются параллельно на доступных Runners.
    • Jobs определяют конкретные действия, такие как сборка, тестирование, развертывание.

GitLab Runner: исполнитель задач CI/CD

  • Что такое GitLab Runner? Агент, который запускает задачи (jobs), определенные в .gitlab-ci.yml.
  • Типы GitLab Runners:
    • Shared Runners: Доступны для всех проектов в GitLab instance. Управляются администратором GitLab.
    • Group Runners: Доступны для всех проектов в определенной группе. Управляются администраторами группы.
    • Specific Runners: Назначаются конкретным проектам. Управляются владельцами проектов или администраторами.
  • Executor: Определяет, как Runner выполняет задачи. Наиболее распространенные:
    • shell: Выполняет скрипты непосредственно на машине Runner.
    • docker: Запускает каждое задание в отдельном Docker-контейнере. Обеспечивает изолированность и воспроизводимость.
    • kubernetes: Запускает задания как Pods в кластере Kubernetes.
    • virtualbox, parallels, ssh, docker-ssh, custom: Другие варианты для специфических сценариев.

Как GitLab Runner "подхватывает" пайплайны?

  1. События в репозитории: Пайплайн запускается автоматически при определенных событиях (push нового кода, создание Merge Request, merge, расписание и т.д.) или вручную.
  2. GitLab CI/CD Coordinator: Компонент GitLab Server, который обрабатывает события и создает пайплайны на основе .gitlab-ci.yml.
  3. Ожидание Runner'а: GitLab CI/CD Coordinator ищет доступного Runner'а, который соответствует требованиям задания (теги, executor).
  4. Выбор Runner'а: Когда подходящий Runner найден, GitLab CI/CD Coordinator передает ему информацию о задании.
  5. Выполнение задания: Runner получает задание и выполняет шаги, определенные в секции script этого задания, используя настроенный executor.
  6. Отчет о статусе: Runner отправляет отчет о статусе выполнения задания обратно в GitLab CI/CD Coordinator.
  7. Продолжение пайплайна: В зависимости от статуса задания (success, failed), запускаются следующие этапы или задания в текущем этапе.

Ключевые аспекты `.gitlab-ci.yml`, влияющие на запуск на Runner'ах:

  • stages: Определяют последовательность выполнения этапов.
  • jobs: Определяют конкретные задачи для выполнения.
    • stage: Указывает, к какому этапу относится задание.
    • script: Содержит команды, которые будут выполнены Runner'ом.
    • tags: Метки, которые используются для выбора подходящих Runner'ов. Runner должен иметь хотя бы одну из указанных меток.
    • only / except: Определяют, при каких условиях (ветки, теги, события) должно выполняться задание.
    • image: (Для Docker executor) Определяет Docker-образ, который будет использоваться для выполнения задания.
    • services: (Для Docker executor) Определяет сервисы, которые будут запущены вместе с основным контейнером задания.
    • before_script / after_script: Скрипты, выполняемые до и после основного скрипта задания.
    • artifacts: Файлы или директории, которые будут сохранены после выполнения задания.
    • cache: Настройка кэширования зависимостей между заданиями и пайплайнами.

Регистрация и настройка GitLab Runner'а:

  1. Установка GitLab Runner: Загрузка и установка пакета GitLab Runner на целевой машине (физической или виртуальной).
  2. Регистрация Runner'а: Связывание установленного Runner'а с конкретным GitLab instance, группой или проектом с помощью команды gitlab-runner register. * Необходимо указать URL GitLab instance и регистрационный токен (можно найти в настройках CI/CD). * Выбор executor'а. * Ввод тегов для Runner'а. * Другие настройки (например, concurrency - количество параллельных заданий).
  3. Настройка Runner'а: Редактирование конфигурационного файла config.toml для более тонкой настройки (например, лимиты ресурсов, настройки Docker).
  4. Запуск и управление Runner'ом: Использование команд gitlab-runner start, gitlab-runner stop, gitlab-runner restart, gitlab-runner status.

Принцип работы выбора Runner'а:

  • Когда запускается пайплайн, GitLab CI/CD Coordinator ищет активных Runner'ов.
  • Для каждого задания в пайплайне Coordinator пытается найти Runner, который:
    • Не занят выполнением другого задания (если достигнут лимит concurrency).
    • Имеет хотя бы одну из меток, указанных в секции tags задания (если теги указаны).
    • Совместим с требованиями задания (например, executor).
  • Если подходящий Runner найден, задание назначается ему для выполнения.
  • Если подходящих Runner'ов нет, задание остается в состоянии «pending» до тех пор, пока Runner не станет доступен.

Лучшие практики:

  • Используйте теги: Четко определяйте теги для Runner'ов и заданий, чтобы обеспечить выполнение заданий на подходящих ресурсах.
  • Оптимизируйте .gitlab-ci.yml: Делайте пайплайны эффективными, используйте кэширование, параллельное выполнение заданий.
  • Мониторинг Runner'ов: Следите за состоянием Runner'ов, их загрузкой и доступностью.
  • Используйте Docker executor (рекомендуется): Обеспечивает изоляцию и воспроизводимость окружения выполнения заданий.
  • Настраивайте concurrency: Определите оптимальное количество параллельных заданий для каждого Runner'а в зависимости от его ресурсов.

Заключение:

Понимание того, как GitLab CI/CD Coordinator взаимодействует с GitLab Runners и как .gitlab-ci.yml определяет выполнение пайплайнов, является ключевым для эффективной автоматизации процессов разработки и доставки программного обеспечения. Правильная настройка Runner'ов и конфигурация пайплайнов позволяют максимально использовать возможности GitLab CI/CD.

методология_devops/запуск_пайплайнов_из_.gitlab-ci_в_gitlab_runners.txt · Последнее изменение: 2025/05/31 20:59 — kirill

DokuWiki Appliance - Powered by TurnKey Linux