5 лучших практик GitLab CI/CD для ускорения пайплайнов
После лет работы с GitLab CI/CD в различных проектах, вот пять практик, которые стабильно обеспечивают более быстрые и надёжные пайплайны.
1. Умное использование кеширования
Кешируйте зависимости между джобами, чтобы избежать повторной загрузки:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .npm/
key обеспечивает отдельные кеши для разных веток.
2. Параллелизация тестов
Разделите тестовый набор на несколько джобов:
test:
parallel: 4
script:
- npm run test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
Это может сократить время тестирования с 20 минут до 5.
3. Используйте rules: вместо only/except
Новый синтаксис rules: мощнее и читабельнее:
deploy:
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: on_success
- when: never
4. Оптимизация Docker образов
Используйте маленькие базовые образы и multi-stage сборки. Образы на базе Alpine могут быть в 10 раз меньше Ubuntu-based.
5. Быстрый провал
Ставьте быстрые проверки (линтинг, форматирование) в начало пайплайна. Нет смысла запускать 20-минутный тестовый набор, если код даже не компилируется.
Какие ваши любимые оптимизации CI/CD? Мы будем рады о них услышать.