频道栏目
首页 > 资讯 > 其他 > 正文

docker中的jenkins和sonarqube问题解析

18-07-21        来源:[db:作者]  
收藏   我要投稿

我的是在docker中配置的 对于docker中的一些步骤可以看我的docker中集成jenkins和sonarqube

[qmkx] $ sonar-scanner scan -X -e -Dsonar.host.url=192.168.1.194:9000 ******** -Dsonar.language=java -Dsonar.projectName=qmkx -Dsonar.projectVersion=1.0 -Dsonar.projectKey=qmkx -Dsonar.sources=/var/jenkins_home/workspace/qmkx/qmkx-service-user/src -Dsonar.java.binaries=/var/jenkins_home/workspace/qmkx/qmkx-service-user/target/test-classes/ -Dsonar.projectBaseDir=/var/jenkins_home/workspace/qmkx
------------------------------------------------------------------------
SONAR ANALYSIS FAILED
------------------------------------------------------------------------
FATAL: command execution failed.
java.io.IOException: Cannot run program "sonar-scanner" (in directory "/var/jenkins_home/workspace/qmkx"): error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at hudson.Proc$LocalProc.(Proc.java:245)
	at hudson.Proc$LocalProc.(Proc.java:214)
	at hudson.Launcher$LocalLauncher.launch(Launcher.java:850)
	at hudson.Launcher$ProcStarter.start(Launcher.java:384)
	at hudson.Launcher$ProcStarter.join(Launcher.java:395)
	at hudson.plugins.sonar.SonarRunnerBuilder.executeSonarQubeScanner(SonarRunnerBuilder.java:336)
	at hudson.plugins.sonar.SonarRunnerBuilder.perform(SonarRunnerBuilder.java:307)
	at hudson.plugins.sonar.SonarRunnerBuilder.perform(SonarRunnerBuilder.java:261)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735)
	at hudson.model.Build$BuildExecution.build(Build.java:206)
	at hudson.model.Build$BuildExecution.doRun(Build.java:163)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:490)
	at hudson.model.Run.execute(Run.java:1735)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:405)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 17 more
ERROR: SonarQube scanner exited with non-zero code: -1
Finished: FAILURE

第一个问题 这种一般是写错了自己的scanner地址 如果不是在docker中搭建直接找地址 填写到jenkins构建中就行(这个填写地方后面会说到)如果在docker中配置的 就去看自己映射出来的目录 改成那个目录即可 我这边有个简单粗暴的方式 直接写点 sonar.sources=. 这个后面会有截图 大家不用着急

[INFO] ------------------------------------------------------------------------
Unpacking https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/3.2.0.1227/sonar-scanner-cli-3.2.0.1227.zip to /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarqube on Jenkins
[qmkx] $ /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarqube/bin/sonar-scanner scan -X -e -Dsonar.host.url=http://192.168.1.194:9002/ ******** -Dsonar.language=java -Dsonar.projectName=qmkx -Dsonar.projectVersion=1.0 -Dsonar.projectKey=qmkx -Dsonar.sources=. -Dsonar.projectBaseDir=/var/jenkins_home/workspace/qmkx
12:02:00.831 INFO: Option -e/--errors is no longer supported and will be ignored
12:02:00.843 INFO: Scanner configuration file: /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarqube/conf/sonar-scanner.properties
12:02:00.845 INFO: Project root configuration file: NONE
12:02:00.863 INFO: SonarQube Scanner 3.2.0.1227
12:02:00.863 INFO: Java 1.8.0_171 Oracle Corporation (64-bit)
12:02:00.864 INFO: Linux 3.10.0-693.el7.x86_64 amd64
12:02:01.046 DEBUG: keyStore is : 
12:02:01.047 DEBUG: keyStore type is : jks
12:02:01.047 DEBUG: keyStore provider is : 
12:02:01.047 DEBUG: init keystore
12:02:01.047 DEBUG: init keymanager of type SunX509
12:02:01.123 DEBUG: Create: /var/jenkins_home/.sonar/cache
12:02:01.124 INFO: User cache: /var/jenkins_home/.sonar/cache
12:02:01.124 DEBUG: Create: /var/jenkins_home/.sonar/cache/_tmp
12:02:01.128 DEBUG: Extract sonar-scanner-api-batch in temp...
12:02:01.136 DEBUG: Get bootstrap index...
12:02:01.136 DEBUG: Download: http://192.168.1.194:9002/batch/index
12:02:01.166 ERROR: SonarQube server [http://192.168.1.194:9002] can not be reached
12:02:01.166 INFO: ------------------------------------------------------------------------
12:02:01.167 INFO: EXECUTION FAILURE
12:02:01.167 INFO: ------------------------------------------------------------------------
12:02:01.167 INFO: Total time: 0.330s
12:02:01.190 INFO: Final Memory: 6M/477M
12:02:01.190 INFO: ------------------------------------------------------------------------
12:02:01.190 ERROR: Error during SonarQube Scanner execution
org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:85)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:74)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:70)
	at org.sonarsource.scanner.api.EmbeddedScanner.doStart(EmbeddedScanner.java:167)
	at org.sonarsource.scanner.api.EmbeddedScanner.start(EmbeddedScanner.java:113)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:73)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.IllegalStateException: Fail to get bootstrap index from server
	at org.sonarsource.scanner.api.internal.BootstrapIndexDownloader.getIndex(BootstrapIndexDownloader.java:42)
	at org.sonarsource.scanner.api.internal.JarDownloader.getScannerEngineFiles(JarDownloader.java:58)
	at org.sonarsource.scanner.api.internal.JarDownloader.download(JarDownloader.java:53)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:76)
	... 7 more
Caused by: java.net.ConnectException: Failed to connect to /192.168.1.194:9002
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.RealConnection.connectSocket(RealConnection.java:225)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.RealConnection.connect(RealConnection.java:149)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:195)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.RealCall.execute(RealCall.java:69)
	at org.sonarsource.scanner.api.internal.ServerConnection.callUrl(ServerConnection.java:113)
	at org.sonarsource.scanner.api.internal.ServerConnection.downloadString(ServerConnection.java:98)
	at org.sonarsource.scanner.api.internal.BootstrapIndexDownloader.getIndex(BootstrapIndexDownloader.java:39)
	... 10 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.platform.Platform.connectSocket(Platform.java:124)
	at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.RealConnection.connectSocket(RealConnection.java:223)
	... 30 more
ERROR: SonarQube scanner exited with non-zero code: 1
Finished: FAILURE

这个报错有两个点 第一是服务器连不上 因为之前写9000端口也不行 我换成 9002还不行 最后换回去才好了 大家多试几次 然后 在我翻墙找了很多答案之后才看见一个 也不是很成熟的解决办法 :在系统管理——Global Tool Configuration中

直接选择自动安装 这仅对docker中安装sonar适用 不在docker中装的也可以这样选择 但是不在docker中装的话自己安装Scanner 也知根知底 好维护

报错:Error during SonarQube Scanner execution

这个如果普通安装的话直接在项目的根目录中创建配置文件:sonar-project.properties即可 内容百度很多 在这里重点说docker中的sonar遇见这个问题

附上一个很好的解决方法:

Method 1: If you installed a scanner in Jenkins then just add the following in this location on your job
Post Steps -> Execute SonarQube Scanner -> Analysis properties

sonar.projectKey=myProject1
sonar.sources=.
Method 2: Another alternative is using the deprecated method which still works fine Post-build Actions -> SonarQube analysis with Maven

Method 3: Build -> Goals and options -> "enter the below script" -Dmaven.test.skip=true install sonar:sonar -Dsonar.forceAnalysis=true -Dsonar.host.url=http://localhost:9000/ -Dsonar.branch=my-branch-1

用方法1即可 直接在最后添加方式1的两行即可

最后附上 整个的jenkins配置流程:

名字随便起 然后URL写浏览器能访问的sonar地址 去docker inspect 查一下sonar是哪个版本 5.3以上的是token token获取在最上面的链接里 5.3以下的用户密码就行

这个之前说过了 这两个配置完成后就能在项目中配置了

重点来了 项目中的地方 这也是最上面说到的后面会说这个 之前有说过不在docker中安装的写一个sonar-project.properties文件 没有尝试过这些在sonar-project.properties文件中是否实用 大家可以尝试一下。

这一步走完就可以构建了 遇到问题别慌 查日志 翻墙搜答案 解决办法总是有的

最后再加一点 可能是中文报错 去sonar里面的配置中吧这个关掉就好了

相关TAG标签
上一篇:tomcat的配置与部署实例教程
下一篇:.M4A格式转换成.MP3格式的三种方法简介
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站