С появлением ИИ-агентов количество пулл-реквестов резко возросло, а нагрузка на CI стала как никогда высокой. Nx Agents — это противовесная сила, которая не дает CI превратиться в узкое место: задачи распределяются автоматически, а крупные сквозные (e2e) тесты разбиваются на части и перераспределяются заново, что повышает как скорость, так и вычислительную эффективность.
Но когда на CI выполняются сотни задач в рамках сотен проектов, становится трудно отслеживать, какие именно задачи выполнялись медленно, на какой машине они запускались и что их блокировало.
Именно поэтому мы представляем режим временной шкалы (timeline view).
Режим временной шкалы
Режим временной шкалы позволяет одним взглядом оценить весь запуск и все его задачи.
Вот запуск из моего собственного монорепозитория:
Вам не нужно читать ни единого названия задачи, чтобы увидеть проблему. В начале есть блок работы, второй блок — значительно позже, а в середине тянется длинный промежуток, когда большинству машин делать абсолютно нечего. Такая форма была обусловлена моим CI-скриптом: он запускал nx affected сначала для одного подмножества проектов, а затем снова для другого подмножества, поэтому вторая группа не могла запуститься до тех пор, пока первая полностью не завершилась.
Рефакторинг этой настройки уже приводит к гораздо более оптимизированному запуску:
Теперь работа распределена равномерно по всему времени выполнения. В самом конце все еще остается несколько отстающих задач — это следующее, на что стоит обратить внимание.
Просмотр неудачных задач и их попыток
Неудачные задачи выделяются красным цветом и сохраняют свое положение на временной шкале, так что вы можете видеть, в какой момент запуска они завершились ошибкой и что еще происходило в этот момент. При клике на задачу открывается боковая панель с метаданными задачи, каждой попыткой и выводом терминала для каждой попытки.
В данном случае первая попытка спецификации Playwright столкнулась с тайм-аутом завершения воркера, а повторная попытка прошла успешно. Обе попытки на месте, их легко отследить, и у каждой есть свой собственный вывод.
Изучение прошлых запусков
В случае сбоя задачи (но не только) вы можете использовать вкладку «История» для изучения предыдущих запусков.
Это даст вам представление о том, был ли это единичный сбой или повторяющаяся проблема. Вы также можете увидеть, стала ли задача выполняться медленнее и начала ли она затрагивать файлы, к которым раньше никогда не обращалась.
Почему задача выполнилась с опозданием
Отстающие задачи в конце запуска обычно представляют наибольший интерес. Вот сбалансированный запуск, где группа задач в самом конце обведена красным:
На боковой панели есть вкладка «Зависимости», в которой перечислены восходящие задачи, которых ждала данная задача, и нисходящие задачи, ожидающие ее завершения.
Обычно это сразу объясняет задержку планирования. Иногда цепочка зависимостей обоснована, и с этим ничего не поделать. Иногда она указывает на проект, от которого зависят все остальные, и перенос его на более ранний этап в графе сокращает весь пайплайн.
Фильтрация конкретных задач
Переключение с «Все задачи» на «По агентам» превращает каждого агента в отдельную полосу. В сочетании с поисковой строкой это отличный способ увидеть, как была распределена работа отдельного проекта. Здесь я отфильтровал результаты до одного e2e-проекта в своем репозитории:
Каждая полоса представляет собой один файл спецификации, распределенный между различными Nx Agents. Это работает Atomizer.
Просмотр данных об использовании агентов Nx
Клик по агенту, а не по задаче, открывает боковую панель для самой машины: шаги рабочего процесса, которые она выполняла, с указанием их длительности, а также графики использования ЦП и памяти за все время ее работы.
Для получения полной детализации по-прежнему доступен режим использования ресурсов, о котором мы недавно писали. Он детализирован вплоть до отдельных процессов и доступен напрямую из панели агента.
Наблюдение за запущенным процессом в реальном времени
Временная шкала отображается в реальном времени. Откройте выполнение пайплайна во время его работы, и задачи будут появляться по мере их планирования.
Попробуйте сами
Если вы уже используете Nx Cloud, опробуйте режим временной шкалы на собственных запусках. Скоро мы сделаем его режимом по умолчанию.
В качестве альтернативы перейдите к запускам Nx Cloud репозитория Nx на GitHub. Найдите запуск и нажмите «Timeline View» на боковой панели.
