У нас есть приложение Javascript/Typescript, которое мы создаем с помощью Azure DevOps. В рамках конвейера мы проводим анализ Sonar.
Ранее мы запускали конвейер с использованием стандартных агентов, размещенных Microsoft, и этап SonarCloudAnalyze занимал около 9 минут. Чтобы ускорить наши сборки, мы перешли на использование автономных агентов, работающих на MacBook Pro с 16 ГБ ОЗУ и процессором M3.
Это изменение существенно сократило время сборки, но не на этапе SonarCloudAnlyze. На самом деле ситуация ухудшилась примерно за 16 минут.
Почему производительность могла ухудшиться, хотя она работает на гораздо более быстром оборудовании? И как мы можем улучшить производительность?
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'Sonar Cloud'
organization: 'XXX'
scannerMode: 'CLI'
configMode: 'file'
- task: SonarCloudAnalyze@1
- task: SonarCloudPublish@1
inputs:
pollingTimeoutSec: '300'
Пробовали ли вы вручную запустить Sonarcloud Analyse на своем MacBook? Это также занимает больше времени?
Проверяли ли вы журналы отладки шага SonarCloudAnlyze в конвейере, чтобы узнать, какие шаги зависли или заняли больше времени?
Не использовать несколько агентов сборки. Я не запускал отладку вручную, но попробую. Я заметил, что проблема заключается в шаге «Предварительная обработка файлов...». На старой медленной машине это заняло 3 секунды. На новой машине это занимает 12 минут. При этом он также создает много пустых строк INFO...





Это было вызвано тем, что сборка запускала «npm install» перед запуском Sonar. Несмотря на то, что «node_modules» находился в списке «sonar.exclusions», оказалось, что эти файлы все еще подвергались предварительной обработке.
Я не осознавал, что задание сборки на старой машине не выполняло «установку npm» перед запуском Sonar.
Проблема решена путем удаления папки «node_modules» перед запуском сонара, и время анализа сократилось до 3 минут, как и ожидалось.
Что еще работает на этом MacBook? Вы используете несколько агентов сборки одновременно?