2014-03-27 22 views
0

我的配置是SonarQube 3.1.1,構建穩定性的插件1.2,詹金斯1.467聲納構建穩定的插件提供了403 sonarqube版本禁止錯誤3.1.1

我已經配置爲構建穩定在項目級插件的設置截至http://docs.codehaus.org/display/SONAR/Build+Stability+Plugin

控制檯輸出提到這個分析有以下錯誤這個插件:

> [INFO] [05:17:18.108] CI URL: Jenkins:http://<host>/job/<job-name>/ 
> 
> [ERROR] [05:17:18.702] Received 403 when trying to access 
> http://<host>/job/<job-name>//lastBuild/api/xml/ 
> org.sonar.api.utils.SonarException: Received 403 when trying to access 
> http://<host>/job/<job-name>//lastBuild/api/xml/ at 
> org.sonar.plugins.buildstability.ci.CiConnector.execute(CiConnector.java:132) 
> ~[na:na] at 
> org.sonar.plugins.buildstability.ci.CiConnector.executeGet(CiConnector.java:120) 
> ~[na:na] at 
> org.sonar.plugins.buildstability.ci.CiConnector.getLastBuild(CiConnector.java:68) 
> ~[na:na] at 
> org.sonar.plugins.buildstability.ci.CiConnector.getBuildsSince(CiConnector.java:106) 
> ~[na:na] at 
> org.sonar.plugins.buildstability.BuildStabilitySensor.analyse(BuildStabilitySensor.java:105) 
> ~[na:na] at 
> org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:64) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.phases.Phases.execute(Phases.java:93) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.Module.start(Module.java:83) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:115) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:105) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.Module.start(Module.java:83) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:111) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrap.Module.start(Module.java:83) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:73) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.batch.bootstrapper.Batch.execute(Batch.java:60) 
> [sonar-batch-3.1.1.jar:na] at 
> org.sonar.maven3.SonarMojo.execute(SonarMojo.java:142) 
> [sonar-maven3-plugin-3.1.1.jar:na] at 
> org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:104) 
> [sonar-maven-plugin-2.2.jar:na] at 
> org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:67) 
> [sonar-maven-plugin-2.2.jar:na] at 
> org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:109) 
> [sonar-maven-plugin-2.2.jar:na] at 
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
> [maven-core-3.0.4.jar:3.0.4] at 
> org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
> [maven-embedder-3.0.4.jar:3.0.4] at 
> org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
> [maven-embedder-3.0.4.jar:3.0.4] at 
> org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
> [maven-embedder-3.0.4.jar:3.0.4] at 
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.6.0_33] at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> ~[na:1.6.0_33] at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> ~[na:1.6.0_33] at java.lang.reflect.Method.invoke(Method.java:597) 
> ~[na:1.6.0_33] at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
> [plexus-classworlds-2.4.jar:na] at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
> [plexus-classworlds-2.4.jar:na] at 
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
> [plexus-classworlds-2.4.jar:na] at 
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
> [plexus-classworlds-2.4.jar:na] [INFO] [05:17:18.704] Sensor 
> [email protected] done: 
> 597 ms 

鏈接:http://<host>/job/<job-name>//lastBuild/api/xml/是通過Web瀏覽器訪問,是一個正確的URL。

我甚至在版本的聲吶配置中提供了-Dsonar.login=admin -Dsonar.password=admin,但仍出現同樣的錯誤。

任何幫助表示讚賞。

+0

只能肯定被它們的實際值取代?你可以使用捲曲工具從Sonar正在運行的盒子中訪問該網址嗎?你有網址或403嗎? –

+0

您是否在Java密鑰庫中導入了Jenkins實例的SSL證書?如果不是,那麼這可能是它失敗的原因。 –

+0

道歉..但在上面的帖子中的網址是http代替https – user3467270

回答

0

我正面臨同樣的問題。如果可以提供幫助,這裏有一個解決方法:在Jenkins> Manage Jenkins>配置全局安全性中,授予匿名用戶同時閱讀Overall和Job。

+0

我試過這個解決方法,它確實在聲納儀表板上生成了構建穩定性圖。但是該版本的控制檯輸出顯示以下消息: [INFO] [06:57:33.643] CI URL:Jenkins:http:// /job/ [WARN] [06:57:35.755] Received 404嘗試訪問http:// /job//408/api/xml/ [WARN] [06:57:35.758]嘗試訪問http:// /job//407/api時收到404/xml/ [警告] [06:57:35.765]嘗試訪問http:// /job//406/api/xml/ 等時收到404。 – user3467270

+0

對於其中一個作業,在構建穩定性圖上表示21個構建,1個失敗,但該圖具有20個欄,所有綠色表示成功構建,但紅色欄中沒有欄表示失敗。 這是對的還是什麼是一個小姐? – user3467270

+0

也許看看這個:https://jira.codehaus.org/browse/SONARPLUGINS-2864 –

2

看起來像Sonar身份驗證失敗,取決於您在Jenkins服務器上使用的安全性。如果Jenkins安全領域委託給servlet容器(tomcat server.xml),我相信可以設置sonar.build-stability.use_jsecuritycheck=true

在我自己的情況下,我沒有別的選擇,只能使用標準安全(Jenkins數據庫),而且在配置SonarQube構建穩定性時遇到了問題,即使我確定使用正確的URL與匹配的憑據。

然後我嘗試另一個構建穩定的配置,刪除用戶名和密碼,幷包括URL的憑據: Jenkins:http(s)://<user>:<pass>@<hostname>/job/<jobname> ... ...失敗

最後我嘗試另一個鏈接模式,使用給定的API令牌(jenkins中的用戶配置)而不是密碼: Jenkins:http(s)://<user>:<api-token>@<hostname>/job/<jobname>

這最後一次嘗試是成功的。我甚至從Jenkins的全球安全列表中刪除了我的SonarQube用戶,並且只是在項目級別讀取/發現了它,並且它仍然有效。

它並不滿足我在Sonar配置中填寫「用戶名/密碼」的深切願望(我想要使用這些字段......),無論如何它比授予匿名訪問更安全。但是,URL中仍然有一個安全令牌,所以安全性不如我想要的那麼好。

希望它有幫助。

  • 編輯

1)隨着詹金斯角色策略插件,用戶需要整體的讀取權限,除了項目的讀取權限。 2)當Jenkins將身份驗證委託給servlet容器並在Sonar中設置sonar.build-stability.user_jsecuritycheck=true時,您可能會在Build Stability v1.2中遇到錯誤。當它嘗試在Jenkins上進行身份驗證時,會生成一個錯誤的url(url中缺少一個,生成類似http://<my_host>/jenkinsloginEntry而不是http://<my_host>/jenkins/loginEntry)。應該在v1.3中修復。