как включить сонарный сканер в образ докера - PullRequest
0 голосов
/ 28 мая 2019

У меня есть изображение dotnet, которое используется в качестве агента для конвейера Jenkins. Теперь я хочу включить сканер сонара в изображение, чтобы я мог запустить анализ и посмотреть, хорошее ли покрытие. Если покрытие не хорошее, то сборка должна завершиться неудачей. Как включить сонарный сканер в мое изображение.

Я попытался включить в мой Dockerfile файл dotnet образа skilldlabs / sonar-scanner. но когда я запустил контейнер, он непосредственно выполнил команды сонарного куба и потерпел неудачу, так как используется адрес сонара по умолчанию.

Ниже мой текущий Dockerfile

FROM microsoft/dotnet:2.1-sdk
FROM skilldlabs/sonar-scanner:3.3

COPY some-ca.crt /usr/local/share/ca-certificates
COPY NuGet.Config /build/.nuget/NuGet/

VOLUME [ "/build/sources" ]

WORKDIR /build/sources

Когда я побежал:

docker run --name sonar -it sonar

ИНФОРМАЦИЯ: Файл конфигурации сканера: /root/sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

ИНФОРМАЦИЯ: Корневой файл конфигурации проекта: НЕТ

ИНФОРМАЦИЯ: SonarQube Scanner 3.3.0.1492

ИНФОРМАЦИЯ: Java 1.8.0_191 Oracle Corporation (64-разрядная версия)

ИНФОРМАЦИЯ: Linux 4.9.125-linuxkit amd64

ИНФОРМАЦИЯ: Кэш пользователя: /root/.sonar/cache

ОШИБКА: сервер SonarQube [http://sonarqube:9000] не может быть достигнут

ИНФОРМАЦИЯ: --------------------------------------------- ---------------------------

ИНФОРМАЦИЯ: СБОЙ ИСПОЛНЕНИЯ

ИНФОРМАЦИЯ: --------------------------------------------- ---------------------------

ИНФОРМАЦИЯ: Общее время: 5,433 с

ИНФОРМАЦИЯ: Окончательная память: 3M / 39M

ИНФОРМАЦИЯ: --------------------------------------------- ---------------------------

ОШИБКА: ошибка во время выполнения сканера SonarQube

ОШИБКА: невозможно выполнить SonarQube

ОШИБКА: Причина: не удалось получить индекс начальной загрузки с сервера

ОШИБКА: вызвано: sonarqube: попробуйте еще раз

ОШИБКА:

ОШИБКА: перезапустите сканер SonarQube, используя ключ -X, чтобы включить полную отладку регистрация.

Как мне сказать контейнеру предоставить конфигурацию для сонарного сканера?

1 Ответ

0 голосов
/ 18 июня 2019

Вместо того, чтобы использовать изображение сканера сонара в моем изображении, я установил dotnet-sonarscanner, используя следующую команду,

dotnet tool install -g dotnet-sonarscanner

Мне пришлось установить пакет "coverlet" в мой проект модульного тестирования, добавив нижеприведенное в мой файл .csproj проекта модульного теста.

<PackageReference Include="coverlet.msbuild" Version="2.6.1">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  <PrivateAssets>all</PrivateAssets>
</PackageReference>

Теперь, когда я хочу отправить sonarqube мои результаты покрытия, я запускаю команду ниже, чтобы сгенерировать файл покрытия.

dotnet test ./UnitTests/UnitTests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=opencover

Приведенная выше команда сгенерирует файл cover.opencover.xml в папке проекта.

Теперь используйте команды ниже для отправки покрытия

dotnet sonarscanner begin /k:"yourprojectkey" /d:sonar.host.url=https://yoursonarqubedomain.com /d:sonar.cs.opencover.reportsPaths="./UnitTests/coverage.opencover.xml" /d:sonar.coverage.exclusions="**Tests*.cs"
dotnet build
dotnet sonarscanner end

вы можете установить свойства sonarscanner, такие как местоположение отчета, URL и т. Д., Используя /d:

...