Как заставить SonarQube (работающий в Docker-контейнере) подключиться к localhost: 9000 из Jenkins Pipeline? - PullRequest
0 голосов
/ 04 января 2019

Я запускаю SonarQube на java и javascript-коде внутри виртуальной машины CentOS.Я вытащил изображение докера sonarqube и запускаю контейнер.Я выставил порт 9000 и смог открыть localhost: 9000 и взаимодействовать с графическим интерфейсом sonarqube.Когда я запускаю сонар-сканер из командной строки в коде JavaScript с помощью этой команды:

sonar-scanner -Dsonar.projectKey=javascript_code -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin 

, я получаю полностью проанализированный проект.Как и код JavaScript, я могу запустить его на коде Java с помощью сборки maven.Оба работают правильно из командной строки.

Когда я добавляю его в конвейер Jenkins, я выполняю те же самые команды и получаю следующее:

Error: SonarQube server [http://localhost:9000] can not be reached

Caused by: Fail to get bootstrap index from server

Caused by: Failed to connect to localhost:9000

Caused by: Connection refused (Connection refused)

Я также пытался при запуске контейнера использовать --network = "host"вместо публикации порта 9000, но он все еще не соединяется с конвейером Jenkins.Все работает правильно, когда я запускаю команды из командной строки, просто когда я пытаюсь поместить их в конвейер Jenkins.

Есть предложения, как это исправить?Благодарю.

* Редактировать: Используя плагин sonarqube, я смог запустить свой анализ как задание Дженкинса.Тем не менее, когда я пытаюсь добавить анализ в конвейер, я получаю тот же сервер SonarQube не может быть достигнута ошибка.Он говорит, что пропускает мой проект, потому что проект был заблокирован из сборки из-за предыдущих сбоев, и выдает мне следующее сообщение об ошибке:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project sonarqubeproj: 
Unable to execute SonarQube: Fail to get bootstrap index from server: unexpected end of stream on Connection{localhost:9000, proxy=DIRECT hostAddress=localhost/127.0.0.1:9000 cipherSuite=none protocol=http/1.1}: \n not found: limit=0 content=… -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project feedback-tool-ui: Unable to execute SonarQube

1 Ответ

0 голосов
/ 07 января 2019

Проблема, с которой вы сталкиваетесь, скорее всего, связана с тем, как вы запускаете jenkins.

Полагаю, вы также запускаете jenkins через докер.это означает, что в контексте jenkins localhost - это не ваша хост-система, а контейнер jenkins.Это означает, что вам нужно адаптировать ваш sonarqube-url для ссылки на хост-систему.

Поэтому у вас есть несколько вариантов:

  1. использовать публичный ip хост-системы
  2. используйте IP-адрес докера хост-системы
  3. разрешите IP-адрес через DNS.У docker есть внутренний DNS, и если эти контейнеры работают в одной сети, вы обычно можете связаться с ними по имени контейнера.

sidenote: я не уверен, используете ли вы docker-compose или kubernetes, но еслиВы не используете его, возможно, вы захотите погрузиться в docker-compose, поскольку это просто простой yaml-config, в котором вы можете легко запускать серверы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...