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

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


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

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

методология_devops:запуск_пайплайнов_из_.gitlab-ci_в_gitlab_runners [2025/05/31 20:59] (текущий)
kirill создано
Строка 1: Строка 1:
 +# Запуск пайплайнов из .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