Ошибка интеграции SonarQube MSBuild - использование определения MSBuild для построения.Net Application
Это мой первый блог или запрос. Я очень новичок в роли администратора TFS и инструмента sonarqube.
Мы используем TFS 2013 в качестве ALM в нашем проекте, проект основан на.Net Application (также новичок в.NET).
В соответствии с требованиями клиента, я пытаюсь интегрировать "SonarQube 5.2" с настроенным шаблоном процесса сборки вместо шаблона по умолчанию.
Я установил "SonarQube 5.2" на "ABC-сервер", а мой "TFS-сервер / агент сборки" - на "XYZ". Я установил сканер SonarQube для MSBuild 2.1 на XYZ-сервер и соответственно обновил переменные среды и sonarqube runner xml.
Согласно стандартной ссылке, я не использую шаблон по умолчанию: - http://docs.sonarqube.org/display/SCAN/From+Team+Foundation+Server+2013 и использую настроенный шаблон сборки, который не имел предварительно / параметры аргумента после сборки.
Поэтому я отредактировал в настроенном шаблоне процесса сборки, добавил хуки для действий сценариев до / после сборки и обновил свойства, аналогичные упомянутой ссылке: - http://www.colinsalmcorner.com/post/build-script-hooks-for-tfs-2012-builds
Примечание. Согласно приведенной выше ссылке, я не обновлял часть "Задача 2 - Переменные среды" в шаблоне процесса, так как я не запускаю сценарий powershell, только хотел выполнить MSBuild.SonarQube.Runner.exe.
Используются следующие действия и свойства в настроенном шаблоне процесса (см. Ссылку выше):
* ConvertWorkspaceItem Activity, установите следующие свойства:
• DisplayName: “Get pre-build script local path”
• Input: PreBuildScriptPath
• Result: preBuildScriptLocalPath
• Workspace: Workspace
Установите следующие свойства в действии InvokeProcess:
• Arguments: String.Format(" ""& '{0}' {1}"" ", prebuildScriptLocalPath, PreBuildScriptArgs)
• DisplayName: “Run pre-build script”
• FileName: “PowerShell”
• Working Directory: SourcesDirectory*
Примечание: то же самое сделано для скрипта после сборки
Последовательно я разместил эти действия до и после сценария в разделе "Попробуйте, скомпилируйте и протестируйте" шаблона процесса.
В определении сборки MS, использующем настраиваемый шаблон процесса, я устанавливаю следующие значения в параметрах процесса сборки (местоположение / путь к runner.exe на XYZ-сервере):
Путь к сценарию перед сборкой: C:\SonarQube\bin\MSBuild.SonarQube.Runner.exe
Аргументы сценария перед сборкой: begin /n: /v:<версия проекта #> /k:
Путь к сценарию после сборки: C:\SonarQube\bin\MSBuild.SonarQube.Runner.exe
Аргументы сценария после сборки: конец
Но после всех этих изменений моя сборка становится частично успешной, и интеграция sonarqube не удалась со следующей ошибкой:
* Сбой интеграции с SonarQube MSBuild: SonarQube не смог собрать необходимую информацию о ваших проектах.
Возможные причины:
1. Проект не был построен - проект должен быть построен между начальным и конечным этапами
2. Для сборки проекта была использована неподдерживаемая версия MSBuild. В настоящее время поддерживается MSBuild 12.0 и выше
3. Не все шаги начала, сборки или завершения были запущены из одной и той же папки *
Примечание. На сервере XYZ (сервере сборки TFS) у нас установлен MSBuild 12.0, и сборка происходит в SourcesDirectory, поскольку папка ".sonarqube" создается в том же каталоге.
Также в командной строке сервера XYZ (в расположении SourceDirectory или там, где доступен ApplicationName.sln) я выполнил следующие команды sonarqube, мой анализ был успешным, и отчеты были созданы на панели инструментов Sonarqube:
- MSBuild.SonarQube.Runner begin /n:<project name> /v:< project version #> /k: <project key>
- "C:\Program Files (x86)\MSBuild\12.0\Bin\Msbuild.exe" "ApplicationName.sln" /p:Configuration=Debug /p:Platform="Any CPU"
- MSBuild.SonarQube.Runner end
Пожалуйста, пройдите через это, это будет очень полезно, если кто-то может направить меня и дать некоторые конкретные объяснения, чтобы решить эту проблему.
Дайте мне знать, если вам нужна другая информация.
2 ответа
Как я читаю в вашем комментарии:
MSBuild.SonarQube.Runner установлен в "C:\sonarquberunner\", а MSBuild находится в "C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe", а мой каталог сборки на сервере TFS - "D:\data\Build\$(BuildAgentId)\$(BuildDefinitionPath)" (расположение исходного кода для сборки).
Вы установили MSBUILD 12, но агент сборки вызывает версию 4.0
Вам нужно изменить шаблон процесса сборки, чтобы добиться этого.
Найдите действие "Выполнить MSBuild" в своем шаблоне сборки и установите ToolPath = "C:\Program Files (x86)\MSBuild\12.0\bin\" или путь к MSBUILD. 12
Вы можете попытаться указать /n:/k:
аргументы:
/ k: "ключ проекта SonarQube, к которому относится определение сборки"
/ n: "имя проекта проекта SonarQube"
Кроме того, вместо пути к сценарию Post-build и аргументов сценария Post-build попробуйте установить Post-test script path
на полный путь к MSBuild.SonarQube.Runner.exe
и установите Post-test script arguments
в end
,
Проверьте скриншот ниже: