В процессе освоения конвейеров Jenkins я конвертирую некоторые старые сборки, использующие проекты типа FreeStyle, в конвейеры.Старая сборка Freestyle работает хорошо.
Мои сборки обычно выполняются в контейнерной среде (ускоряется только для этой сборки по SSH) и заканчиваются анализом SonarQube для QA.
Sonarqubestep (с использованием плагина Jenkins SonarQube) автоматически внедряет сканер sonarqube с правильными аргументами в контейнер для подключения к серверу SonarQube, как показано в этом примере из консольных журналов сборки Jenkins:
22:47:13 Unpacking https://repo1.maven.org/maven2/org/sonarsourc/scanner/cli/sonar-scanner-cli/3.3.0.1492/sonar-scanner-cli-3.3.0.1492.zip to /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube on docker-000b7eccw94td on Docker on master
22:47:13 [g7ctrl-server] $ /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube ******** -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server
22:47:14 INFO: Scanner configuration file: /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/conf/sonar-scanner.properties
22:47:14 INFO: Project root configuration file: /home/jenkins/workspace/g7ctrl-server/sonar-project.properties
22:47:14 INFO: SonarQube Scanner 3.3.0.1492
Прочитав Анализ в конвейере Дженкинса Я пришел к выводу, что он не применяется, поскольку сканер не установлен.Также читаем Выполнить SonarQube Scanner в Jenkins 2 Pipeline , поскольку он предполагает то же самое.
Есть ли какая-либо автоматизация (эквивалентная этапу сборки FreeStyle) или мне нужно написать shell-скрипт для загрузки,распаковать и установить сканер вручную в контейнер?
Был бы признателен, если бы кто-то мог пролить свет на это?(или несколько примеров лучших практик - поскольку я новичок в конвейерном скриптинге), я бы предположил, что другие тоже сталкивались с этой проблемой)
Обновление: (почти решено)
Используя генератор фрагментов, можно настроить стандартные инструменты
stage('SonarQube analysis') {
def sonarqubeScannerHome = tool name: 'Aditus SonarQube', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
withSonarQubeEnv('Aditus SonarQube') {
sh "${sonarqubeScannerHome}/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server"
}
}
Определение инструмента заставит Jenkins загрузить, распаковать и установить Scanner Tool.Однако, несмотря на то, что параметры настройки проекта такие же, как и в сборке freestyle (это работает), сканер считает, что корневой файл не установлен, как видно из журналов
Unpacking https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/3.3.0.1492/sonar-scanner-cli-3.3.0.1492.zip to /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube on docker-000dsh7hwihbw on Docker on master
[Pipeline] sh
+ /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server
INFO: Scanner configuration file: /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
Скорее всего, есть путьпроблема в моем отсутствии мастерства конвейерных скриптов, которые я не вижу.(Сканер вызывается с одинаковыми параметрами как для фристайла, так и для конвейера)