Что реализуют на этапе выборки (fetch) в CI/CD?

«Что реализуют на этапе выборки (fetch) в CI/CD?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На этапе выборки (fetch) в CI/CD-пайплайне происходит подготовка исходного кода и окружения для последующих стадий (сборки, тестирования, развертывания). Это фундаментальный шаг, от которого зависит успех всего пайплайна.

Основные задачи этапа:

  1. Клонирование/получение кода: Загрузка актуального кода из системы контроля версий (Git, SVN) по указанной ветке или тегу.
  2. Настройка контекста: Определение переменных окружения, параметров (например, номер коммита, ветка, автор).
  3. Восстановление зависимостей: Установка библиотек и инструментов, необходимых для работы проекта (например, через npm install, pip install -r requirements.txt, go mod download).

Пример секции в .gitlab-ci.yml:

stages:
  - fetch
  - test
  - deploy

# Этап выборки
fetch_dependencies:
  stage: fetch
  script:
    - echo "Fetching code for $CI_COMMIT_REF_NAME"
    - git fetch origin $CI_COMMIT_REF_NAME
    - git checkout -f $CI_COMMIT_SHA
    # Установка зависимостей для Node.js проекта
    - npm ci --cache .npm --prefer-offline
  artifacts:
    paths:
      - node_modules/
    expire_in: 1 hour

Почему это важно:

  • Изоляция: Каждый запуск пайплайна начинается с чистого состояния, что гарантирует воспроизводимость.
  • Эффективность: Кэширование артефактов (как node_modules в примере) ускоряет последующие запуски.
  • Надёжность: Сбой на этапе выборки (например, недоступность репозитория) сразу останавливает пайплайн, предотвращая выполнение некорректных операций.