Ответ
На этапе выборки (fetch) в CI/CD-пайплайне происходит подготовка исходного кода и окружения для последующих стадий (сборки, тестирования, развертывания). Это фундаментальный шаг, от которого зависит успех всего пайплайна.
Основные задачи этапа:
- Клонирование/получение кода: Загрузка актуального кода из системы контроля версий (Git, SVN) по указанной ветке или тегу.
- Настройка контекста: Определение переменных окружения, параметров (например, номер коммита, ветка, автор).
- Восстановление зависимостей: Установка библиотек и инструментов, необходимых для работы проекта (например, через
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в примере) ускоряет последующие запуски. - Надёжность: Сбой на этапе выборки (например, недоступность репозитория) сразу останавливает пайплайн, предотвращая выполнение некорректных операций.