Показаны различия между двумя версиями страницы.
| — |
методология_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`: | ||
| + | * Состоит из набора **stages** (этапов), | ||
| + | * Каждый stage содержит один или несколько **jobs** (заданий), | ||
| + | * **Jobs** определяют конкретные действия, | ||
| + | |||
| + | ## GitLab Runner: исполнитель задач CI/CD | ||
| + | |||
| + | * **Что такое GitLab Runner?** Агент, который запускает задачи (jobs), определенные в `.gitlab-ci.yml`. | ||
| + | * **Типы GitLab Runners:** | ||
| + | * **Shared Runners:** Доступны для всех проектов в GitLab instance. Управляются администратором GitLab. | ||
| + | * **Group Runners:** Доступны для всех проектов в определенной группе. Управляются администраторами группы. | ||
| + | * **Specific Runners:** Назначаются конкретным проектам. Управляются владельцами проектов или администраторами. | ||
| + | * **Executor: | ||
| + | * **shell:** Выполняет скрипты непосредственно на машине Runner. | ||
| + | * **docker:** Запускает каждое задание в отдельном Docker-контейнере. Обеспечивает изолированность и воспроизводимость. | ||
| + | * **kubernetes: | ||
| + | * **virtualbox, | ||
| + | |||
| + | ## Как GitLab Runner " | ||
| + | |||
| + | 1. **События в репозитории: | ||
| + | 2. **GitLab CI/CD Coordinator: | ||
| + | 3. **Ожидание Runner' | ||
| + | 4. **Выбор Runner' | ||
| + | 5. **Выполнение задания: | ||
| + | 6. **Отчет о статусе: | ||
| + | 7. **Продолжение пайплайна: | ||
| + | |||
| + | ## Ключевые аспекты `.gitlab-ci.yml`, | ||
| + | |||
| + | * **`stages`: | ||
| + | * **`jobs`:** Определяют конкретные задачи для выполнения. | ||
| + | * **`stage`: | ||
| + | * **`script`: | ||
| + | * **`tags`:** Метки, которые используются для выбора подходящих Runner' | ||
| + | * **`only` / `except`:** Определяют, | ||
| + | * **`image`: | ||
| + | * **`services`: | ||
| + | * **`before_script` / `after_script`: | ||
| + | * **`artifacts`: | ||
| + | * **`cache`: | ||
| + | |||
| + | ## Регистрация и настройка GitLab Runner' | ||
| + | |||
| + | 1. **Установка GitLab Runner:** Загрузка и установка пакета GitLab Runner на целевой машине (физической или виртуальной). | ||
| + | 2. **Регистрация Runner' | ||
| + | * Необходимо указать URL GitLab instance и регистрационный токен (можно найти в настройках CI/CD). | ||
| + | * Выбор executor' | ||
| + | * Ввод тегов для Runner' | ||
| + | * Другие настройки (например, | ||
| + | 3. **Настройка Runner' | ||
| + | 4. **Запуск и управление Runner' | ||
| + | |||
| + | ## Принцип работы выбора Runner' | ||
| + | |||
| + | * Когда запускается пайплайн, | ||
| + | * Для каждого задания в пайплайне Coordinator пытается найти Runner, который: | ||
| + | * Не занят выполнением другого задания (если достигнут лимит concurrency). | ||
| + | * Имеет хотя бы одну из меток, указанных в секции `tags` задания (если теги указаны). | ||
| + | * Совместим с требованиями задания (например, | ||
| + | * Если подходящий Runner найден, | ||
| + | * Если подходящих Runner' | ||
| + | |||
| + | ## Лучшие практики: | ||
| + | |||
| + | * **Используйте теги:** Четко определяйте теги для Runner' | ||
| + | * **Оптимизируйте `.gitlab-ci.yml`: | ||
| + | * **Мониторинг Runner' | ||
| + | * **Используйте Docker executor (рекомендуется): | ||
| + | * **Настраивайте concurrency: | ||
| + | |||
| + | ## Заключение: | ||
| + | |||
| + | Понимание того, как GitLab CI/CD Coordinator взаимодействует с GitLab Runners и как `.gitlab-ci.yml` определяет выполнение пайплайнов, | ||