Ошибка интеграции 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,

Проверьте скриншот ниже:

Другие вопросы по тегам