【问题标题】:sonar-runner using jenkins slave on windows在 Windows 上使用 jenkins slave 的声纳运行器
【发布时间】:2015-01-29 20:37:36
【问题描述】:

我在使用 sonar-runner 在我的 Windows Jenkins 从站上运行声纳分析时遇到问题。 在本地完成分析时,声纳服务器运行良好,并且我已经解决了数据库连接的错误(数据库连接为 masterslave 工作)。

  • 声纳版本:4.4
  • Jenkins 版本:1.59
  • 声纳运行器版本:2.4
  • Jenkins 声纳插件版本:2.1

SONAR_RUNNER_HOME\conf\sonar-runner.properties:

sonar.host.url=http://master:9000
sonar.jdbc.url=jdbc:postgresql://master/sonar
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=somelogin
sonar.jdbc.password=somepassword
sonar.login=somelogin
sonar.password=somepassword
sonar.java.source=1.7

然后,从 Jenkins slave 运行 sonar-runner(声纳属性在 jenkins 作业中设置)

[project] $ C:\jenkins\sonar-runner-2.4\bin\sonar-runner.bat -Dsonar.jdbc.driver=org.postgresql.Driver ******** ******** -Dsonar.host.url=http://master:9000 ******** ******** -Dsonar.projectBaseDir=C:\jenkins\workspace\project -Dsonar.sourceEncoding=UTF-8 -Dsonar.dynamicAnalysis=reuseReports -Dtransformer.sonar.projectBaseDir=Transform -Dsonar.language=java -Dsonar.sources=src -Dsonar.junit.reportsPath=reports -Dsonar.libraries=lib -Dsonar.jacoco.reportPath=reports/jacoco -Dsonar.binaries=build/classes -Dsonar.projectVersion=1.0 -Dsonar.modules=controller,transformer,controlpanel -Dsonar.projectKey=project -Dcontrolpanel.sonar.projectBaseDir=ModeControlPanel -Dcontroller.sonar.projectBaseDir=Controller -Dsonar.tests=test -Dsonar.projectName=project
C:\jenkins\sonar-runner-2.4
SonarQube Runner 2.4
Java 1.7.0_55 Oracle Corporation (64-bit)
Windows 7 6.1 amd64
INFO: Runner configuration file: C:\jenkins\sonar-runner-2.4\conf\sonar-runner.properties
INFO: Project configuration file: NONE
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: C:\jenkins\workspace\project\.\.sonar
INFO: SonarQube Server 4.4
13:35:00.433 INFO  - Load global settings
13:35:00.635 INFO  - User cache: C:\.sonar\cache
13:35:00.646 INFO  - Install plugins
13:35:01.017 INFO  - Install JDBC driver
13:35:01.027 INFO  - Create JDBC datasource for jdbc:postgresql://master/sonar
13:35:01.112 INFO  - Initializing Hibernate
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 4.698s
Final Memory: 11M/248M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources
ERROR: 
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.

嘿嘿!?我已经定义了这些属性!

我为多模块示例道歉,但我保证我已经尝试过单模块,结果是一样的。想法?

【问题讨论】:

    标签: jenkins sonar-runner


    【解决方案1】:

    如果在 Windows 从站上从 Jenkins 运行 sonar-runner,请勿在任何密码字段中包含与号 (&)。我的 sonar.password 有这个字符。这将导致您的其余声纳运行器参数被忽略。此设置是在 Jenkins 系统配置中的 Sonar 设置中配置的。

    抱歉,我无法从我的问题中确定这一点,但如果有人遇到这个奇怪的问题,他们应该检查他们的密码字段。我最终不得不编辑我的 sonar-runner 批处理脚本来显示参数,以便找到问题。

    【讨论】:

      【解决方案2】:

      正如日志中所写,您缺少以下属性(此处填充了示例):

      sonar.projectName=myproject
      sonar.projectVersion=0.1-SNAPSHOT
      sonar.sources=src/main/java
      

      我总是觉得学习sample documentation 很有用。

      【讨论】:

      • 如日志中所写,我已在命令行中提供了这些属性。
      • 抱歉,我没有滚动阅读所有命令行命令。我在这里建议: 1.如果你想使用命令行,请正确编写路径(例如将 c:\jenkins\.. 更改为 c:\\jenkins\..) 2. 请尽量避免使用命令行,以便您可以确保正确传递参数。最简单的方法是使用 jenkins 插件中的选项,在声纳参数字段中指定您需要运行的声纳选项列表。
      • 我在使用jenkins插件时,将参数放在“项目属性”部分。但是,当 jenkins 运行该作业时,它会将所有属性放在命令行上。我会试试你的建议#1
      • 建议 1 很有帮助,但不是我的问题的原因。还是谢谢。
      猜你喜欢
      • 2016-07-20
      • 1970-01-01
      • 2016-12-22
      • 2016-05-11
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多