Почему ваш CI в GitHub Actions... Заметка
DEV Community на русском

Почему ваш CI в GitHub Actions работает медленно (и как его ускорить)

Недавний сбой резервного копирования базы данных на GitHub выявил распространенную проблему: медленные или неудачные рабочие процессы CI. В отличие от явных сбоев, медленные запуски часто остаются незамеченными, что приводит к пустой трате ресурсов. Анализ популярных репозиториев с открытым исходным кодом выявил повсеместную неэффективность в их конфигурациях CI. Многим проектам не хватало таких важных настроек, как контроль параллелизма и тайм-ауты заданий, что приводило к дублированию рабочих процессов.Серьезной проблемой является одновременное срабатывание рабочих процессов при push и pull request, что приводит к дублированию запусков для одних и тех же изменений. Это можно решить, настроив срабатывание только для pull request, за исключением ветки по умолчанию. Другая распространенная проблема — невозможность отмены выполняющихся запусков при отправке нового кода, что приводит к пустой трате слотов в очереди. Реализация групп параллелизма с параметром cancel-in-progress, установленным в true, может предотвратить это.Переустановка зависимостей с нуля при каждом запуске также значительно увеличивает время. Использование функции кэширования в действиях настройки может значительно ускорить этот процесс. Чрезмерно большие матрицы, тестирование всех комбинаций версий ОС, могут быть оптимизированы путем запуска более компактной матрицы для pull request и полной матрицы для ветки по умолчанию или ночных сборок. Неограничение триггеров CI определенными путями к файлам означает, что любое изменение, даже опечатка в документации, может запустить полный набор тестов.Кроме того, задания без тайм-аутов могут зависать часами, потребляя избыточные ресурсы. Установка timeout-minutes для каждого задания имеет важное значение. Существуют инструменты для сканирования общедоступных репозиториев и выявления этих распространенных неэффективностей CI. Проверка оценок Actions для популярных проектов также может дать представление о лучших практиках. Автор предоставляет бесплатный сканер, который поможет выявить эти закономерности в любом общедоступном репозитории.