Инструмент Sonarscanner MSBuild не работает в конвейере - Дженкинс - PullRequest
1 голос
/ 25 октября 2019

Я запускаю следующий конвейер, на котором есть этап «Анализ сборки + анализ сонара» для dotnetcore 2.2

Этап настроен следующим образом

  1. У меня естьустановил инструмент в глобальной конфигурации в соответствии с рекомендациями Sonarqube Documentation

enter image description here

Определял инструмент в среде следующим образом
// Tools
        MSBUILD_SQ_SCANNER_HOME = tool name: 'Scanner_for_MSBuild_4.7', type: 'hudson.plugins.sonar.MsBuildSQRunnerInstallation'
Стадия конвейера
stage ('Build + SonarQube analysis') {
            agent {
                docker { 
                    image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                }
            }
            steps {
                dir ("app") {
                    withSonarQubeEnv('local') {
                        sh "dotnet ${MSBUILD_SQ_SCANNER_HOME}/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build ${env.DotnetProjectName}"
                        sh "dotnet ${MSBUILD_SQ_SCANNER_HOME}/SonarScanner.MSBuild.dll end"
                    }
                }
            }
        }

Результат

Я получаю, что SonarScanner.MSBuild.dll не выполняется, как виднониже

enter image description here

Проверка

  1. dll существует и разрешенияназначен Jenkins
  2. dll является исполняемым
  3. dll при запуске вручную по этому пути - он запускается

enter image description here

Непосредственно добавлен путь для DLL, он имеет тот же результат
stage ('Build + SonarQube analysis') {
            agent {
                docker { 
                    image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                }
            }
            steps {
                dir ("app") {
                    withSonarQubeEnv('local') {
                        sh "dotnet /var/lib/jenkins/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/Scanner_for_MSBuild_4.7/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build ${env.DotnetProjectName}"
                        sh "dotnet var/lib/jenkins/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/Scanner_for_MSBuild_4.7/SonarScanner.MSBuild.dll end"
                    }
                }
            }
        }

Спасибо за помощь заранее.

1 Ответ

0 голосов
/ 14 ноября 2019

Я смог решить это,

1. Установленный SonarScanner для dotnetcore в Jenkins Tools

Путь к сонарному сканеру будет таким же, как и раньше

Путь по умолчанию

/ var / lib / jenkins / tools / hudson.plugins.sonar.MsBuildSQRunnerInstallation / Scanner_for_MSBuild_4.7 / SonarScanner.MSBuild.dll

2. Инициализируйте инструмент в Jenkinsfile

// Tools
MSBUILD_SQ_SCANNER_HOME = tool name: 'Scanner_for_MSBuild_4.7', type: 'hudson.plugins.sonar.MsBuildSQRunnerInstallation'
stage ('Build + SonarQube analysis')
      agent {
             docker { 
                  image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                  args '-v ${MSBUILD_SQ_SCANNER_HOME}:/opt/sonarscanner'
                }
            }
            steps {
                dir ("app") {
                    withSonarQubeEnv('local') {
                        sh "dotnet /opt/sonarscanner/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build ${env.DotnetProjectName}"
                        sh "dotnet /opt/sonarscanner/SonarScanner.MSBuild.dll end"
                    }
                }
            }
        }

Как это работает?

  1. Я монтирую sonarscanner к официальному образу докера впуть / opt / sonarscanner /
  2. С подключенным файлом в качестве аргумента для контейнера Docker во время инициализации теперь доступна dll для команды docker dotnet
...