GoogleCloudPlatform / cloud-builders-community

Community-contributed images for Google Cloud Build
https://cloud.google.com/cloud-build/
Apache License 2.0
1.25k stars 851 forks source link

Error with SonarQube Scanner #233

Open NicolaSpreafico opened 5 years ago

NicolaSpreafico commented 5 years ago

Hi, I have a GAE Std project which I run with Maven as: mvn clean verify sonar:sonar appengine:deploy -Pdevelopment and from my machine is working fine, both Sonar analysis and GAE deployment.

I reproduced the behaviour inside a Cloud Build configuration:

steps:

- id: 'Deploy with mvn'
  name: 'gcr.io/cloud-builders/mvn'
  args:
  - 'clean' 
  - 'verify'
  - 'sonar:sonar'
  - 'package'
  - 'appengine:deploy'
  - '-Pdevelopment'
  - '-Dgit.branch=$BRANCH_NAME'
  - '-Dsonar.host.url=https://xxxxxx'
  - '-Dsonar.login=xxxxxxx'
  dir: 'project'

The GAE deployment works fine, but the SonarQube analysis is failing on every Java file: (note that this log is replicated for every Java file)

INFO] 91 source files to be analyzed
[ERROR] Unable to create symbol table for : /workspace/project/src/main/java/xx/xx/xx.java
java.lang.IllegalArgumentException: null
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:160)
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:143)
    at org.sonar.java.resolve.BytecodeCompleter.loadClass(BytecodeCompleter.java:204)
    at org.sonar.java.resolve.Symbols.<init>(Symbols.java:176)
    at org.sonar.java.resolve.SemanticModel.createFor(SemanticModel.java:59)
    at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:110)
    at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:96)
    at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:68)
    at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:120)
    at org.sonar.java.JavaSquid.scan(JavaSquid.java:114)
    at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:91)
    at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
    at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
    at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)
    at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)
    at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88)
    at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:180)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:288)
    at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:283)
    at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:261)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
    at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121)
    at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
    at com.sun.proxy.$Proxy43.execute(Unknown Source)
    at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
    at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:104)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

The analysis is successfully submitted to SonarQube server (so configuration and authentication is correct), but the analysis shows that 0 files has been processed

After that I tried to use the SonarScanner image, as suggested in this example: https://github.com/GoogleCloudPlatform/cloud-builders-community/blob/master/sonarqube/examples/cloudbuild.yaml

But I'm getting a different kind of error:

HEAD is now at 47c595c no message
BUILD
Pulling image: gcr.io/my-project-id/sonar-scanner:latest
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
Error response from daemon: manifest for gcr.io/my-project-id/sonar-scanner:latest not found
ERROR: failed to pull because we ran out of retries.
ERROR
ERROR: build step 0 "gcr.io/my-project-id/sonar-scanner:latest" failed: error pulling build step 0 "gcr.io/my-project-id/sonar-scanner:latest": exit status 1

Both solutions are not working, do you have any suggest?

nof20 commented 5 years ago

Hi there, im afraid I have no idea what the first error is about, but I can tell you in the second one that you have to replace the literal string "my-project-id" with your actual Google Cloud project ID. And just to be clear, you need to build the SonarQube builder before you can use it (ie, run gcloud builds submit . in the sonarqube directory cloned from the GitHub repo)

NicolaSpreafico commented 5 years ago

Sorry I did not clarify, "my-project-id" is only a placeholder 'cause I removed my actual project-id, in my true build file there is the proper value. I'm unable to solve the problem using "sonar:sonar" goal with Maven, but I made it work with SonarScanner image, so is now working.

Any thoughts about Maven problems?