Агент в непрерывной интеграции это удобно и незаметно дорого. Незаметно, потому что расход растёт вместе с активностью команды, а не с вашими решениями.
Разберём, как оставить пользу и убрать лишний счёт.
Главная ошибка: вешать на каждый коммит
Разработчик пушит десять раз за день, доводя ветку. Если агент запускается на каждый пуш, вы платите за девять прогонов, результат которых никто не читал.
Вешайте на пул-реквест, а не на пуш. Ещё лучше на открытие и на готовность к ревью, а не на каждое обновление ветки.
Ограничьте область
Агент, который смотрит весь репозиторий на каждом запуске, платит за контекст снова и снова. Дайте ему только диф.
Большинство задач в CI это ревью изменений, а не аудит проекта. Разница в расходе на порядок.
Разведите задачи по моделям
В CI обычно живут разные проверки, и им нужны разные модели.
- проверка стиля, поиск забытых отладочных строк, оформление сообщений коммитов, это младшая модель
- ревью логики изменения и поиск ошибок, это модель посильнее
- аудит архитектуры, это флагман и точно не на каждом PR
Не платите дважды за одно и то же
Если пайплайн перезапускается из-за упавшего линтера, агент не должен проходить заново по тому же дифу. Кэшируйте результат по хешу изменений.
То же самое с матрицей сборок: агент должен запускаться один раз, а не в каждой ячейке матрицы.
Поставьте потолок отдельно на автоматизацию
Ключ для CI лучше держать отдельным от человеческого. Тогда видно, сколько ест автоматика, и можно ограничить её независимо.
У нас на каждый ключ настраиваются свои лимиты и своя статистика, а суб-организации позволяют вынести CI в отдельный бюджет. При достижении порога ключ можно заморозить, не трогая ключи разработчиков.
Что мерить
Три цифры, которые стоит держать перед глазами:
- расход на один пул-реквест
- доля прогонов, результат которых никто не прочитал
- сколько стоит один найденный агентом дефект
Третья цифра неудобная, но именно она отвечает на вопрос, окупается ли автоматизация.
Коротко
Пул-реквест вместо пуша, диф вместо репозитория, младшая модель на механику, отдельный ключ с отдельным лимитом на автоматизацию. Этого достаточно, чтобы агент в CI приносил пользу и не удивлял счётом.