Ответ
В CI/CD пайплайне получение кода — это первый шаг. Обычно его автоматически выполняет runner, но важно управлять параметрами для оптимизации.
Как это настраиваю я:
-
В GitLab CI используется автоматический
git clone. Для ускорения часто применяю shallow clone:variables: GIT_DEPTH: 1 # Клонирует только последний коммит -
В GitHub Actions стандартный шаг
actions/checkout@v4:steps: - uses: actions/checkout@v4 with: fetch-depth: 1 # Аналог shallow clone ref: ${{ github.event.pull_request.head.sha }} # Для PR — чекаутим код из ветки PR -
Для приватных репозиториев или сабмодулей необходимо корректно настроить аутентификацию. В GitLab CI используются предустановленные
CI_JOB_TOKEN. В GitHub Actions нужно создать Deploy Key или использовать токен (GITHUB_TOKEN или PAT), переданный вsecrets. -
Кэширование репозитория: На self-hosted runner'ах можно настроить кэширование рабочей директории (хотя это требует осторожности), чтобы избежать полного клонирования при каждом запуске, если изменения небольшие.
Основная цель — получить минимально необходимый для сборки код как можно быстрее, поэтому depth: 1 — стандартная практика для CI.