Giter Site home page Giter Site logo

sonar-build-breaker's Introduction

DEPRECATED - SonarQube Build Breaker Plugin

Build Status Quality Gate Status

Deprecation Notice

This repository is deprecated, no future releases will happen. You are advised to use the built-in functionality available from SonarQube 8.8. Please check the official documentation to learn more.

Compatibility

SonarQube Version Plugin Version(s)
1.12 - 2.14 1.0
3.0 - 5.1 1.0, 1.1
5.2 Not compatible due to limitations with SonarQube platform
5.3 - 5.4 2.0, 2.1, 2.2
5.5 - 7.2 2.1, 2.2
7.3 - 8.7 2.3, 2.3.1
8.8 - Use the built-in property

Installation

Marketplace

Since the release of SonarQube 8.8, the plugin is no longer in the marketplace because SonarQube introduced a built-in property to break builds.

Manual installation

  1. Download the appropriate sonar-build-breaker-plugin-${version}.jar file from the releases page, based on the compatibility chart
  2. Copy the plugin into /path/to/sonarqube/extensions/plugins/
  3. Remove older versions of the plugin from /path/to/sonarqube/extensions/plugins/, if present
  4. Restart SonarQube

Description

This plugin will mark the build failed if the project fails its quality gate or uses a forbidden configuration. These checks happen after analysis has been submitted to the server, so it does not prevent a new analysis from showing up in SonarQube.

Upon uploading the analysis information, the plugin follows the below workflow to check the quality gate:

  1. Search ${sonar.working.directory}/report-task.txt for ceTaskId, the server-side Compute Engine (CE) task associated with the current analysis.
    1. If the project configures sonar.scanner.metadataFilePath, that file is used instead of ${sonar.working.directory}/report-task.txt
  2. Call the ${sonar.host.url}/api/ce/task?id=${ceTaskId} web service to retrieve analysisId
    1. If the CE Task Status is PENDING or IN_PROGRESS, wait sonar.buildbreaker.queryInterval and repeat step 2
    2. If the CE Task Status is SUCCESS, save the analysisId and proceed to step 3
    3. If the CE Task Status is FAILED or none of the above, break the build
    4. If step 2 has been attempted sonar.buildbreaker.queryMaxAttempts times, break the build
  3. Call the ${sonar.host.url}/api/qualitygates/project_status?analysisId=${analysisId} web service to check the status of the quality gate
    1. If the quality gate status is OK, allow the build to pass
    2. If the quality gate status is WARN, allow the build to pass and log the current warnings
    3. If the quality gate status is ERROR, break the build and log the current warnings and errors

The build "break" is accomplished by throwing an exception, making the analysis return with a non-zero status code. This allows you to benefit from the notifications built into CI engines or use your own custom notifications that check the exit status.

Usage

Quality Gate Build Breaker

  1. Associate a quality gate to your project
  2. Optional: Tune sonar.buildbreaker.queryMaxAttempts and/or sonar.buildbreaker.queryInterval
    1. Check the duration of previous CE (background) tasks for your project, from submission until completion
    2. Ensure sonar.buildbreaker.queryMaxAttempts * sonar.buildbreaker.queryInterval is longer than the above duration (with default values, total wait time is ~5 minutes)
    3. For small projects, a faster interval may be desired so your build times are not longer than necessary
    4. For very large projects or servers with a busy CE queue, more attempts or a longer interval may be necessary
  3. Run an analysis on your project
  4. If analysis fails while waiting for CE to complete, increase either sonar.buildbreaker.queryMaxAttempts, sonar.buildbreaker.queryInterval, or both

Forbidden Configuration Build Breaker

Define the property sonar.buildbreaker.forbiddenConf with comma-separated key=value configurations that will break the build.

For example, if you set the property to sonar.gallio.mode=skip, each analysis on .NET projects executed with Gallio skipped will be marked "broken".

Configuration Parameters

Property Description Default value Example
sonar.buildbreaker.skip If set to true, the quality gate is not checked. By default the build will break if the project does not pass the quality gate. false
sonar.buildbreaker.queryMaxAttempts The maximum number of queries to the API when waiting for report processing. The build will break if this is reached. Total wait time is sonar.buildbreaker.queryMaxAttempts * sonar.buildbreaker.queryInterval. 30
sonar.buildbreaker.queryInterval The interval (ms) between queries to the API when waiting for report processing. Total wait time is sonar.buildbreaker.queryMaxAttempts * sonar.buildbreaker.queryInterval. 10000
sonar.buildbreaker.forbiddenConf Comma-separated list of key=value pairs that should break the build. sonar.gallio.mode=skip
sonar.buildbreaker.alternativeServerUrl URL to use for web service requests. If unset, uses the serverUrl property from ${sonar.working.directory}/report-task.txt.

Authentication

If your SonarQube instance does not allow anonymous analyses, i.e. you're passing sonar.login to your analysis command, you must make sure that the analysis user has one of the following permissions on the project:

  • 'Administer System'
  • or 'Administer' on the specified project
  • or 'Browse' on the specified project

This is required so the plugin can call the api/qualitygates/project_status web service.

Contributing

When reporting issues, please include complete steps to reproduce the issue and all relevant logs.

Pull requests are welcome, but may not always be reviewed immediately. We try our best to respond within a couple of days.

Pull Request Guidelines

  1. This project uses google-java-format. The code is auto-formatted whenever you build it.
  2. For the most part, the project follows standard Oracle Java code conventions
  3. Include unit tests
    1. Do not use PowerMock unless there is no alternative
  4. Update the documentation (this README.md) with new configuration parameters and usage notes
  5. Make sure your change works with all versions of SonarQube starting at the minimum version defined in pom.xml
    1. You can use the scripts in the verification folder to check compatibility. See the verification/README.md for details.
    2. If you need to upgrade the base SonarQube version, create an issue for discussion first
    3. Once upgraded, the base version will not be downgraded

sonar-build-breaker's People

Contributors

alexvictoor avatar bellingard avatar dgageot avatar dodie avatar ehartmann avatar ganncamp avatar ganntest avatar gaudol avatar ghenzler avatar godin avatar henryju avatar hosszubalazs avatar mjdetullio avatar mstoecklmayr avatar rkrisztian avatar sandro-h avatar simonbrandhof avatar tomverin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sonar-build-breaker's Issues

Cannot compile code

Maven won't compile this code pulled right down from github. I tried adding the google dependency. Any help would be appreciated:

[WARNING] Error injecting: org.sonarsource.pluginpackaging.SonarPluginMojo
java.lang.NoClassDefFoundError: com/google/common/base/Function

Sonar buildbreaker plugin breaking build even when quality gates does have issues reported

Describe the bug
Sonar build breaker plugin breaking build even when quality gates does have issues reported

Context
At the minimum, provide the SonarQube and plugin version:

  • SonarQube server version: ... 6.7.2
  • sonar-build-breaker plugin version: ... 2.1
  • Java version used for the Sonar analysis: ... Java 8
  • Build context: manual execution / CI tool (TravisCI, CircleCI, ...)

To Reproduce
Steps to reproduce the behavior:

I have a project quality gate as -
Blocker Issues is greater than 0
Bugs is greater than 0
Condition Coverage is less than 70
Critical Issues is greater than 0
Line Coverage is less than 80
Major Issues is greater than 0
Unit Test Errors is greater than 0
Unit Test Failures is greater than 0
Vulnerabilities is greater than 0

And Results after a branch scan -

Issues
Type
Bug0 Vulnerability0 Code Smell15
Severity
Blocker0Minor15Critical0Info0Major0
Resolution
Unresolved15Fixed0False Positive0Won't fix0Removed0
Status
Open15 Resolved0 Reopened0 Closed0 Confirmed0

Expected behavior
Quality gate should not break

Logs
SONAR --- Result:[[INFO] Executing post-job org.sonar.plugins.buildbreaker.ForbiddenConfigurationBreaker]
SONAR --- Result:[[INFO] Executing post-job org.sonar.plugins.buildbreaker.QualityGateBreaker]
SONAR --- Result:[[INFO] Waiting for report processing to complete...]
SONAR --- Result:[[INFO] Waiting for report processing to complete...]
SONAR --- Result:[[INFO] Quality gate status: ERROR]
SONAR --- Result:[[ERROR] Code Smells: 15 > 0]
SONAR --- Result:[[ERROR] [BUILD BREAKER] Project did not meet 1 conditions]

Additional context
Add any other context about the problem here.

Support for SonerQube 7?

Hello,
do you plan support for newer sonarQube versions? In my sonarQube 7.5 i get this ClassNotFound exception on startup:
java.lang.IllegalStateException: Fail to load plugin Build Breaker [buildbreaker] at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:82) at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:586) at org.sonar.server.platform.Platform.start(Platform.java:211) at org.sonar.server.platform.Platform.startLevel34Containers(Platform.java:185) at org.sonar.server.platform.Platform.access$500(Platform.java:46) at org.sonar.server.platform.Platform$1.lambda$doRun$0(Platform.java:119) at org.sonar.server.platform.Platform$AutoStarterRunnable.runIfNotAborted(Platform.java:371) at org.sonar.server.platform.Platform$1.doRun(Platform.java:119) at org.sonar.server.platform.Platform$AutoStarterRunnable.run(Platform.java:355) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: org/sonar/api/batch/CheckProject at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125) at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37) at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87) at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76) at org.sonar.plugins.buildbreaker.BuildBreakerPlugin.getExtensions(BuildBreakerPlugin.java:56) at org.sonar.api.SonarPlugin.define(SonarPlugin.java:51) at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:72) ... 9 common frames omitted Caused by: java.lang.ClassNotFoundException: org.sonar.api.batch.CheckProject at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39) at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87) at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76) ... 25 common frames omitted

Or is there any workaround for this exception?

Allow to break build on preview analysis runs

Currently the build breaker ignores preview analysis runs completely:
https://github.com/SonarQubeCommunity/sonar-build-breaker/blob/2.1/src/main/java/org/sonar/plugins/buildbreaker/QualityGateBreaker.java#L86

Albeit it seems not to be possible to check against a quality gate in this mode, it is still possible to check against basic violations local to a certain file. A PostJob can receive these issues via constructor injection, see e.g. https://github.com/AmadeusITGroup/sonar-stash/blob/1.2.0/src/main/java/org/sonar/plugins/stash/StashIssueReportingPostJob.java#L25 for where this works.

I think it would be useful to introduce a BasicIssuesBuildBreaker class (that only becomes active for preview runs) and a configuration what severity should break the build (e.g. if configured to MAJOR, all issues equal or more severe than MAJOR should break the build). Having this in place would be great for feature branch validation and would avoid

  • the need to create a branch in Sonar for every feature branch
  • the performance penality to run a full sonar analysis on every feature branch build

Plugin settings listed under "SonarQube Build Breaker Plugin" in GUI

SonarQube 7.7
sonar-build-breaker 2.3.0

Pre-2.3.0 the plugin settings were listed under "Build Breaker" in the General Settings menu in SonarQube.
Now they are listed under the full plugin name "SonarQube Build Breaker Plugin".
Apparently we need to set the category in our PropertyDefinition builders now.

sonarqube doesnot mark the status as failed while reporting issues.

In my case i have integrated sonar-github-plugin to comment the status in PR,

Problem Description:
sonarqube reports the issues as expected, however it doesn't mark the status as "Failed" when it report the issues.

Screenshot
image

My Expectation
i expect it to mark the status as failed with X mark
image instead of marking it as success with tick mark
image

Plugin does not exist, but it is installed already

I use sonarqube in gitlab-runner. And this build breaker plugin worked well before. But recently occasionally this error happened when publish the result to sonarqube.
sonarqube: Version 6.7.1
build breaker: 2.2

Error Details
java.lang.IllegalArgumentException: Plugin [buildbreaker] does not exist
at org.sonar.ce.container.CePluginRepository.getPluginInfo(CePluginRepository.java:95)
at org.sonar.server.computation.task.projectanalysis.step.LoadReportAnalysisMetadataHolderStep.getBasePluginKey(LoadReportAnalysisMetadataHolderStep.java:132)
at org.sonar.server.computation.task.projectanalysis.step.LoadReportAnalysisMetadataHolderStep.lambda$loadQualityProfiles$1(LoadReportAnalysisMetadataHolderStep.java:127)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.sonar.server.computation.task.projectanalysis.step.LoadReportAnalysisMetadataHolderStep.loadQualityProfiles(LoadReportAnalysisMetadataHolderStep.java:125)
at org.sonar.server.computation.task.projectanalysis.step.LoadReportAnalysisMetadataHolderStep.execute(LoadReportAnalysisMetadataHolderStep.java:88)
at org.sonar.server.computation.task.step.ComputationStepExecutor.executeSteps(ComputationStepExecutor.java:64)
at org.sonar.server.computation.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:52)
at org.sonar.server.computation.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:73)
at org.sonar.ce.taskprocessor.CeWorkerImpl.executeTask(CeWorkerImpl.java:134)
at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:97)
at org.sonar.ce.taskprocessor.CeWorkerImpl.withCustomizedThreadName(CeWorkerImpl.java:81)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:73)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:43)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Error when executing task

Iยดm running a build process in VSTS and all the sonar qube steps work properly (prepare, run, so on) except for the break build.
1
2

Any idea??

Thanks in advance.

Disable Build Breaker Plugin

I installed the sonar build breaker on SonarQube Version 6.7 (build 33306). That is, I placed the sonar-build-breaker-plugin-2.2.jar plugin jar file in the /opt/sonarqube/extensions/plugins, and restarted the server. After doing that I noticed the buildbreaker running during the "verify" phase of my Maven build (see printouts below).

Question: Is there a way to disable the buildbreaker from running by default; that is, for every maven build that involves calling the "sonar:sonar" goal during verify? That is, is there a property that I can configure on the server side to disable this plugin from running as default? And a property I can set on my maven build to enable the buildbreaker plugin from my Maven build?

[INFO] Executing post-job org.sonar.plugins.buildbreaker.QualityGateBreaker
[INFO] Waiting for report processing to complete...
[INFO] Quality gate status: ERROR
[ERROR] Condition Coverage: 6.1 < 80
[ERROR] [BUILD BREAKER] Project did not meet 1 conditions
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

Thanks,

Rubens Gomes
www.rubens-gomes.com

Quality Gate Breaker crashes on SQ 8.5.1 (FYI as I'm aware you haven't listed this version on the readme)

Describe the bug
When running Quality Gate Breaker, the build crashes with the following

build	26-Oct-2020 12:54:12	INFO: Executing post-job 'Quality Gate Breaker'
build	26-Oct-2020 12:54:13	INFO: ------------------------------------------------------------------------
build	26-Oct-2020 12:54:13	INFO: EXECUTION FAILURE
build	26-Oct-2020 12:54:13	INFO: ------------------------------------------------------------------------
build	26-Oct-2020 12:54:13	INFO: Total time: 35.199s
error	26-Oct-2020 12:54:13	ERROR: Error during SonarQube Scanner execution
error	26-Oct-2020 12:54:13	ERROR: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either that the input has been truncated or that an embedded message misreported its own length.
error	26-Oct-2020 12:54:13	ERROR: Caused by: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either that the input has been truncated or that an embedded message misreported its own length.

If I enable the Skip quality gate check switch in the plugin configuration, it is fine.

Context
At the minimum, provide the SonarQube and plugin version:

  • SonarQube server version: 8.5.1
  • sonar-build-breaker plugin version: 2.3.1.354
  • Java version used for the Sonar analysis: ...
  • Build context: Bamboo 6.9.1 (Windows)
26-Oct-2020 12:53:38 | INFO: SonarQube Scanner 3.3.0.1492
26-Oct-2020 12:53:38 | INFO: Java 1.8.0_202 AdoptOpenJdk (64-bit)
26-Oct-2020 12:53:38 | INFO: Windows Server 2016 10.0 amd64
26-Oct-2020 12:53:38 | INFO: User cache: C:\Users\Bamboo\.sonar\cache
26-Oct-2020 12:53:40 | INFO: SonarQube server 8.5.1

To Reproduce
Steps to reproduce the behavior:

  • Run a build that was fine on our production SQ setup (8.1) on the 8.5.1 test rig.

Expected behavior

  • For it not to crash

Logs
As above

Additional context
Add any other context about the problem here.

Sonarqube stage in jenkins pipeline fails with 403 error

I have a pipeline job which keeps failing on Sonar Quality Gate stage with the below error:

[Bitbucket] Build result notified
org.sonarqube.ws.client.HttpException: Error 403 on http://illinXXXX:XXXXX/api/qualitygates/project_status?analysisId=XXXXXXXX
    at org.sonarqube.ws.client.BaseResponse.failIfNotSuccessful(BaseResponse.java:34)
I'm able to enter the link and see the projectStatus, so I don't understand the reason for the failure.
Sonarqube version: 6.7.1 (build 35068).

The auth token is configured in the global Jenkins settings.

java.lang.IllegalStateException: Report processing did not complete successfully: FAILED

Hi.

After updating to 5.6.1 LTS , our maven sonar analysis jobs fail with following errors :
I installed todays's plugin snapshot build (2.2 - from source ) as well , but it keeps failing.

11:17:08 [INFO] [11:17:16.863] Waiting for report processing to complete...
11:17:18 [ERROR] Report processing did not complete successfully: FAILED
11:17:18 [INFO] ------------------------------------------------------------------------
11:17:18 [INFO] Reactor Summary:
11:17:18 [INFO] 
11:17:18 [INFO] XXXX-integration-head ........................... SKIPPED
11:17:18 [INFO] XXXX-integration-head ........................... FAILURE [21.281s]
11:17:18 [INFO] ------------------------------------------------------------------------
11:17:18 [INFO] BUILD FAILURE
11:17:18 [INFO] ------------------------------------------------------------------------
11:17:18 [INFO] Total time: 21.625s
11:17:18 [INFO] Finished at: Tue Aug 30 11:17:26 CEST 2016
11:17:18 [INFO] Final Memory: 26M/1255M
11:17:18 [INFO] ------------------------------------------------------------------------
11:17:18 [ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.4:sonar (default-cli) on project XXXXXX: Report processing did not complete successfully: FAILED -> [Help 1]
11:17:18 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.4:sonar (default-cli) on project XXXX: Report processing did not complete successfully: FAILED
11:17:18    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
11:17:18    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
11:17:18    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
11:17:18    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
11:17:18    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
11:17:18    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
11:17:18    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
11:17:18    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
11:17:18    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
11:17:18    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
11:17:18    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
11:17:18    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
11:17:18    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:17:18    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:17:18    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:17:18    at java.lang.reflect.Method.invoke(Method.java:483)
11:17:18    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
11:17:18    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
11:17:18    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
11:17:18    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
11:17:18 Caused by: org.apache.maven.plugin.MojoExecutionException: Report processing did not complete successfully: FAILED
11:17:18    at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:42)
11:17:18    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.java:135)
11:17:18    at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:136)
11:17:18    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
11:17:18    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
11:17:18    ... 19 more
11:17:18 Caused by: java.lang.IllegalStateException: Report processing did not complete successfully: FAILED
11:17:18    at org.sonar.plugins.buildbreaker.QualityGateBreaker.getAnalysisId(QualityGateBreaker.java:152)
11:17:18    at org.sonar.plugins.buildbreaker.QualityGateBreaker.execute(QualityGateBreaker.java:108)
11:17:18    at org.sonar.plugins.buildbreaker.QualityGateBreaker.executeOn(QualityGateBreaker.java:95)
11:17:18    at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:65)
11:17:18    at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:55)
11:17:18    at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:87)
11:17:18    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
11:17:18    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
11:17:18    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
11:17:18    at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
11:17:18    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
11:17:18    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
11:17:18    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
11:17:18    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
11:17:18    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
11:17:18    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
11:17:18    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
11:17:18    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
11:17:18    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
11:17:18    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
11:17:18    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:79)
11:17:18    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
11:17:18    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:17:18    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:17:18    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:17:18    at java.lang.reflect.Method.invoke(Method.java:483)
11:17:18    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
11:17:18    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
11:17:18    at java.security.AccessController.doPrivileged(Native Method)
11:17:18    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
11:17:18    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
11:17:18    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
11:17:18    at org.sonar.runner.api.Runner.execute(Runner.java:100)
11:17:18    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.java:131)
11:17:18    ... 22 more
11:17:18 [ERROR] 
11:17:18 [ERROR] 
11:17:18 [ERROR] For more information about the errors and possible solutions, please read the following articles:
11:17:18 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
11:17:18 [ERROR] 

[BuildBreaker] Link to the report is missing

When build breaker detects issues in the report it just shows numbers of errors in logs.
example:

[error]ERROR: Open Issues: 2 > 0
ERROR: [BUILD BREAKER] Project did not meet 1 conditions
ERROR: Open Issues: 2 > 0

It needs additional efforts for developers to open SonarQube UI and try to find report for the specific project and specific branch.

It would be great to have link to the report in logs or even better to shows what specific errors we have in our code and what should be corrected.

Looks like that 2nd point is too complex, that is why I would suggest to throw just link to the report with errors in logs.

image

Build Breaker 2.0 not compatible with 5.5-RC1

Caused by: java.lang.NoSuchMethodError: org.sonar.api.batch.SensorContext.analysisMode()Lorg/sonar/api/batch/AnalysisMode;
  at org.sonar.plugins.buildbreaker.QualityGateBreaker.executeOn(QualityGateBreaker.java:71)
  at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:65)
  at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:55)

API query limit (30) reached

Foreword: this may not even be an issue - I'm just not sure where to put the buildbreaker properties.

per QualityGateBreaker.java:159 this plugin will break if the API query limit is exceeded.

I've attempted to modify /usr/local/sonar/conf/sonar.properties and add

sonar.buildbreaker.queryMaxAttempts=100
sonar.buildbreaker.queryInterval=10000

but it doesn't seem to be reading these at all! It still says "queryMaxAttempts" is 30. Am I putting these properties in the wrong place?

How can I apply these properties successfully?

BuildBreaker Version 2.2 *NOT* working with SonarQube 7.7

After installing the buildbreaker plugin version 2.2 on SonarQube 7.7 I see the following errors in the SonarQube "web.log" file:

2019.03.27 12:43:28 INFO web[][o.s.p.ProcessEntryPoint] Starting web
2019.03.27 12:43:29 INFO web[][o.a.t.u.n.NioSelectorPool] Using a shared selector for servlet write/read
2019.03.27 12:43:31 INFO web[][o.e.p.PluginsService] no modules loaded
2019.03.27 12:43:31 INFO web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019.03.27 12:43:31 INFO web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019.03.27 12:43:31 INFO web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] -Dio.netty.noUnsafe: false
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] Java version: 8
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] sun.misc.Unsafe.theUnsafe: available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] sun.misc.Unsafe.copyMemory: available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] java.nio.Buffer.address: available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] direct buffer constructor: available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] java.nio.Bits.unaligned: available, true
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent0] java.nio.DirectByteBuffer.(long, int): available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] sun.misc.Unsafe: available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] -Dio.netty.tmpdir: /opt/sonarqube-7.7/temp (java.io.tmpdir)
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] -Dio.netty.bitMode: 64 (sun.arch.data.model)
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] -Dio.netty.maxDirectMemory: 891289600 bytes
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] -Dio.netty.uninitializedArrayAllocationThreshold: -1
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.CleanerJava6] java.nio.ByteBuffer.cleaner(): available
2019.03.27 12:43:31 DEBUG web[][i.n.u.i.PlatformDependent] -Dio.netty.noPreferDirect: false
2019.03.27 12:43:32 DEBUG web[][i.n.c.MultithreadEventLoopGroup] -Dio.netty.eventLoopThreads: 4
2019.03.27 12:43:32 DEBUG web[][i.n.c.n.NioEventLoop] -Dio.netty.noKeySetOptimization: false
2019.03.27 12:43:32 DEBUG web[][i.n.c.n.NioEventLoop] -Dio.netty.selectorAutoRebuildThreshold: 512
2019.03.27 12:43:32 DEBUG web[][i.n.u.i.PlatformDependent] org.jctools-core.MpscChunkedArrayQueue: available
2019.03.27 12:43:32 DEBUG web[][i.n.c.DefaultChannelId] -Dio.netty.processId: 2682 (auto-detected)
2019.03.27 12:43:32 DEBUG web[][i.netty.util.NetUtil] -Djava.net.preferIPv4Stack: false
2019.03.27 12:43:32 DEBUG web[][i.netty.util.NetUtil] -Djava.net.preferIPv6Addresses: false
2019.03.27 12:43:32 DEBUG web[][i.netty.util.NetUtil] Loopback interface: lo (lo, 127.0.0.1)
2019.03.27 12:43:32 DEBUG web[][i.netty.util.NetUtil] /proc/sys/net/core/somaxconn: 128
2019.03.27 12:43:32 DEBUG web[][i.n.c.DefaultChannelId] -Dio.netty.machineId: 00:50:56:ff:fe:b8:33:36 (auto-detected)
2019.03.27 12:43:32 DEBUG web[][i.n.u.i.InternalThreadLocalMap] -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
2019.03.27 12:43:32 DEBUG web[][i.n.u.i.InternalThreadLocalMap] -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
2019.03.27 12:43:32 DEBUG web[][i.n.u.ResourceLeakDetector] -Dio.netty.leakDetection.level: simple
2019.03.27 12:43:32 DEBUG web[][i.n.u.ResourceLeakDetector] -Dio.netty.leakDetection.targetRecords: 4
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.numHeapArenas: 4
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.numDirectArenas: 4
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.pageSize: 8192
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.maxOrder: 11
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.chunkSize: 16777216
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.tinyCacheSize: 512
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.smallCacheSize: 256
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.normalCacheSize: 64
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.maxCachedBufferCapacity: 32768
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.cacheTrimInterval: 8192
2019.03.27 12:43:32 DEBUG web[][i.n.b.PooledByteBufAllocator] -Dio.netty.allocator.useCacheForAllThreads: true
2019.03.27 12:43:32 DEBUG web[][i.n.b.ByteBufUtil] -Dio.netty.allocator.type: pooled
2019.03.27 12:43:32 DEBUG web[][i.n.b.ByteBufUtil] -Dio.netty.threadLocalDirectBufferSize: 0
2019.03.27 12:43:32 DEBUG web[][i.n.b.ByteBufUtil] -Dio.netty.maxThreadLocalCharBufferSize: 16384
2019.03.27 12:43:32 DEBUG web[][i.n.b.AbstractByteBuf] -Dio.netty.buffer.checkAccessible: true
2019.03.27 12:43:32 DEBUG web[][i.n.b.AbstractByteBuf] -Dio.netty.buffer.checkBounds: true
2019.03.27 12:43:32 DEBUG web[][i.n.u.ResourceLeakDetectorFactory] Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@394de9e8
2019.03.27 12:43:32 DEBUG web[][i.n.util.Recycler] -Dio.netty.recycler.maxCapacityPerThread: 4096
2019.03.27 12:43:32 DEBUG web[][i.n.util.Recycler] -Dio.netty.recycler.maxSharedCapacityFactor: 2
2019.03.27 12:43:32 DEBUG web[][i.n.util.Recycler] -Dio.netty.recycler.linkCapacity: 16
2019.03.27 12:43:32 DEBUG web[][i.n.util.Recycler] -Dio.netty.recycler.ratio: 8
2019.03.27 12:43:32 INFO web[][o.s.s.e.EsClientProvider] Connected to local Elasticsearch: [127.0.0.1:9001]
2019.03.27 12:43:32 INFO web[][o.s.s.p.LogServerVersion] SonarQube Server / 7.7.0.23042 / 1dcac8b8de36b377a1810cc8f1c4c31744e12729
2019.03.27 12:43:32 INFO web[][o.sonar.db.Database] Create JDBC data source for jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStat ements=true&useConfigs=maxPerformance&useSSL=false
2019.03.27 12:43:32 WARN web[][o.s.db.dialect.MySql] MySQL support is deprecated and will be dropped soon.
2019.03.27 12:43:34 INFO web[][o.s.s.p.ServerFileSystemImpl] SonarQube home: /opt/sonarqube-7.7
2019.03.27 12:43:34 INFO web[][o.s.s.u.SystemPasscodeImpl] System authentication by passcode is disabled
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin Build Breaker / 2.2 / 641556a
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin Git / 1.8.0.1574 / aec3dc8f5228aabd218e1cd31ac6e6515a43715d
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin JaCoCo / 1.0.1.143 / 65c55e41e32c114704fd597ccea91fc55becb4ec
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarCSS / 1.0.3.724 / 3ad5232345519caed38a24c70fb77e91757833bf
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarHTML / 3.1.0.1615 / 4181edb5eff5605bec82dc0aa15ecd70eaa5857f
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarJS / 5.1.1.7506 / 7537ba97d4de0e1dbc862ddff9fadaed8cc02127
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarJava / 5.11.0.17289 / af4a10d32a35370facd63e239fd8d452d981798a
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarTS / 1.9.0.3766 / 4a4080b78001a78d758d1d0fa0190fb9496b6f57
2019.03.27 12:43:35 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarXML / 2.0.1.2020 / c5b84004face582d56f110e24c29bf9c6a679e69
2019.03.27 12:43:35 DEBUG web[][o.s.c.i.DefaultI18n] Loaded 2526 properties from l10n bundles
2019.03.27 12:43:35 INFO web[][o.s.s.p.w.MasterServletFilter] Initializing servlet filter org.sonar.server.ws.WebServiceFilter@358107d6 [pattern=UrlPattern{inclusions=[/api/system/migrate_db., ...], exclusions=[/api/properties, ...]}]
2019.03.27 12:43:35 DEBUG web[][o.s.s.a.TomcatAccessLog] Tomcat is started
2019.03.27 12:43:35 INFO web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
2019.03.27 12:43:37 ERROR web[][o.s.s.p.Platform] Background initialization failed. Stopping SonarQube
java.lang.IllegalStateException: Fail to load plugin Build Breaker [buildbreaker]
at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:82)
at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:571)
at org.sonar.server.platform.Platform.start(Platform.java:211)
at org.sonar.server.platform.Platform.startLevel34Containers(Platform.java:185)
at org.sonar.server.platform.Platform.access$500(Platform.java:46)
at org.sonar.server.platform.Platform$1.lambda$doRun$0(Platform.java:119)
at org.sonar.server.platform.Platform$AutoStarterRunnable.runIfNotAborted(Platform.java:371)
at org.sonar.server.platform.Platform$1.doRun(Platform.java:119)
at org.sonar.server.platform.Platform$AutoStarterRunnable.run(Platform.java:355)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: org/sonar/api/batch/CheckProject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125)
at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
at org.sonar.plugins.buildbreaker.BuildBreakerPlugin.getExtensions(BuildBreakerPlugin.java:56)
at org.sonar.api.SonarPlugin.define(SonarPlugin.java:51)
at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:72)
... 9 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.sonar.api.batch.CheckProject
at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
... 25 common frames omitted
2019.03.27 12:43:37 DEBUG web[][o.s.s.p.Platform] Background initialization of SonarQube done
2019.03.27 12:43:37 INFO web[][o.s.p.StopWatcher] Stopping process

Build Breaker Hangs Up

Hi,

The build breaker plugin is taking a long time to finish, almost 3 hours. can you help us find the root cause. Even after the CE side finished the processing, it still keeps waiting.

Another point - There is another project which goes through which is 10 times the source code size on the same Build Breaker plugin without any issues.

image

Why does that happen and what can we do to fix this?

Configuration:-

Linux , JDK8 , Jenkins , SonarQube 5.6.5, Sonar Build Breaker 2.2

https://github.com/SonarQubeCommunity/sonar-build-breaker/releases/download/2.2/sonar-build-breaker-plugin-2.2.jar

One more possibility - we drilled down to the code and found that it is blocked at the Thread.sleep line in the GateQualityBreaker.java file.

Can you please fix this bug? It looks like it may be affecting a lot of folks since 2 applications on our side are already facing this issue at hand. Perhaps we can replace the Thread.sleep call with a TimerTask/Timer function ( or any other way) since Thread.sleep is known to cause problems in certain environments. Also, it is not recommended to use in some code these days

Thanks,
Jitesh

Migration to Sonar 5.2

Hey I wanted to ask, if you are plannig to migrate the Build Braker Plugin to Sonarqube 5.2/5.3?

License Information on Using Code

Currently this code is not released under any open source license. For organizations to benefit from the plugin they will need legal assurances about code use.

sonar.buildbreaker.skip for SonarQube 5.3

This is more of a query than an issue. Has the buildbreaker skip been tested for SQ5.3. I didnt work for me, but then I havent tested in any other version as well. So i'm not sure if my implementation is incorrect or if this feaure is in-compatible with SQ 5.3

sun.security.validator.ValidatorException

Hi.

I installed plugin.

When I run sonar:sonar maven goal on Jenkins I get this error:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar (default-cli) on project inther-checksum-generator: Fail to request http://some-host.com/api/ce/task?id=AVPH3FfHKrEvHdLkEnJL: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

But in browser the link is open ok

thanks

Any ETA for next Release?

Just wanted to try out the -Dsonar.buildbreaker.preview.issuesSeverity flag, but nothing happened.

After looking at the v2.1 version tag, it seems this functionality is new in master but not released yet.

Any ETA for the next release of this plugin?

Sonar analysis fails with 403 when SonarQube plugin is installed

Setup:
Jenkins 2.7.4, SonarQube plugin 2.5
Maven 3.3.9, sonar-maven-plugin 3.3.0.603.
SonarQube 5.6.6 LTS

Error description:
Sonar analysis in Maven jobs on Jenkins fail as soon as we installed the build breaker plugin on SonarQube (see error message below). Sonar security is configured that users need to authenticate and maven goal in jenkins is configured with the appropriate security token:
$SONAR_MAVEN_GOAL $SONAR_EXTRA_PROPS -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN -Dsonar.branch=${branch}
It seems that access to the SonarQube API fails. When we remove the build breaker plugin, analysis completes wihout error.

Error message:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli) on project liferay-util: Error 403 on http://jenkins.internal.com:9090/api/qualitygates/project_status?analysisId=14672893 -> [Help 1]

Make 2.1 a non rc?

With the official release of 5.5 can you make 2.1 a final?

Thanks!
Mike

Compatibility with sonar 6.5

Hey guys.
I noticed that version 6.5 is not part of your compatibility matrix.
Have you tested it? Is it compatible or do you plan to add compatibility in a next release?

Cheers,
Tiago

IllegalStateException: Report processing did not complete successfully: FAILED

Hi,

Need help!
Seems like QualityGateBreaker is unable to get the Analysis ID. Need to know why.

INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 57.677s
INFO: Final Memory: 48M/430M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Report processing did not complete successfully: FAILED
at org.sonar.plugins.buildbreaker.QualityGateBreaker.getAnalysisId(QualityGateBreaker.java:152)
at org.sonar.plugins.buildbreaker.QualityGateBreaker.execute(QualityGateBreaker.java:108)
at org.sonar.plugins.buildbreaker.QualityGateBreaker.executeOn(QualityGateBreaker.java:95)
at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:65)
at org.sonar.batch.phases.PostJobsExecutor.execute(PostJobsExecutor.java:55)
at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:107)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:185)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:132)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:243)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:238)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:228)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:132)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117)
at org.sonar.batch.task.ScanTask.execute(ScanTask.java:55)
at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:132)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117)
at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:122)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:240)
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:110)
at org.sonarsource.scanner.cli.Main.execute(Main.java:72)
at org.sonarsource.scanner.cli.Main.main(Main.java:60)
Build step 'Execute SonarQube Scanner' marked build as failure

When I use the BuildBreaker plug-in, I want to make the build fail when the requirements are not set through the Quality Gate, but when the setting of the Quality Gate is met, the error in the Jenkins build is as follows

When I use the BuildBreaker plug-in, I want to make the build fail when the requirements are not set through the quality gate, but when the setting of the quality gate is met, the error in the Jenkins build is as follows

ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: Fail to request https://192.168.1.213/api/ce/task?id=AXSgCm12UKz6R0ZFtZdf
...
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
ERROR: SonarQube scanner exited with non-zero code: 1

The following is the version I used for sonarqube

  • SonarQube server version: Community Edition-8.4.2(build 36762)
  • sonar-build-breaker plugin version: 2.3.1 (build 347)
  • Java version used for the Sonar analysis: openJDK11
  • Build context: manual execution / CI tool :Jenkins

The full logs as follows

15:08:08.370 INFO: CPD Executor CPD calculation finished (done) | time=45ms
15:08:08.379 DEBUG: SCM revision ID '04c3f5a218283b13b22d475f8e0c6f68c95a6436'
15:08:08.489 INFO: Analysis report generated in 104ms, dir size=352 KB
15:08:08.829 INFO: Analysis report compressed in 340ms, zip size=227 KB
15:08:08.829 INFO: Analysis report generated in /data/jenkins/workspace/XXX/.scannerwork/scanner-report
15:08:08.829 DEBUG: Upload report
15:08:09.031 DEBUG: POST 200 http://192.168.1.213:9000/api/ce/submit?projectKey=xxx&projectName=xxx | time=200ms
15:08:09.033 INFO: Analysis report uploaded in 204ms
15:08:09.035 DEBUG: Report metadata written to /data/jenkins/workspace/cloudpacs-preposed-Test/.scannerwork/report-task.txt
15:08:09.035 INFO: ANALYSIS SUCCESSFUL, you can browse https://192.168.1.213/dashboard?id=xxx
15:08:09.035 INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
15:08:09.035 INFO: More about the report processing at https://192.168.1.213/api/ce/task?id=AXSgCm12UKz6R0ZFtZdf
15:08:09.040 DEBUG: Post-jobs : Forbidden Configuration Breaker -> Quality Gate Breaker
15:08:09.040 INFO: Executing post-job 'Forbidden Configuration Breaker'
15:08:09.040 INFO: Executing post-job 'Quality Gate Breaker'
15:08:09.041 DEBUG: Loading report task properties from /data/jenkins/workspace/xxx/.scannerwork/report-task.txt
15:08:09.239 INFO: ------------------------------------------------------------------------
15:08:09.239 INFO: EXECUTION FAILURE
15:08:09.239 INFO: ------------------------------------------------------------------------
15:08:09.240 INFO: Total time: 11.516s
15:08:09.293 INFO: Final Memory: 12M/50M
15:08:09.293 INFO: ------------------------------------------------------------------------
15:08:09.293 ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: Fail to request https://192.168.1.213/api/ce/task?id=AXSgCm12UKz6R0ZFtZdf
at org.sonarqube.ws.client.HttpConnector.doCall(HttpConnector.java:190)
at org.sonarqube.ws.client.HttpConnector.get(HttpConnector.java:124)
at org.sonarqube.ws.client.HttpConnector.call(HttpConnector.java:111)
at org.sonar.plugins.buildbreaker.QualityGateBreaker.getAnalysisId(QualityGateBreaker.java:188)
at org.sonar.plugins.buildbreaker.QualityGateBreaker.execute(QualityGateBreaker.java:266)
at org.sonar.scanner.postjob.PostJobWrapper.execute(PostJobWrapper.java:49)
at org.sonar.scanner.postjob.PostJobsExecutor.execute(PostJobsExecutor.java:48)
at org.sonar.scanner.postjob.PostJobsExecutor.execute(PostJobsExecutor.java:39)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:368)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:144)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
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(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:268)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:238)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:149)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:192)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
at okhttp3.RealCall.execute(RealCall.java:69)
at org.sonarqube.ws.client.HttpConnector.doCall(HttpConnector.java:188)
... 27 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at java.base/sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at java.base/sun.security.validator.Validator.validate(Unknown Source)
at java.base/sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 58 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.base/java.security.cert.CertPathBuilder.build(Unknown Source)
... 64 more
ERROR: SonarQube scanner exited with non-zero code: 1
Finished: FAILURE

Build breaker not working

Hello,

I setup SonarQube locally, and I copied the extention files into the correct directory.

I added 2 unused variables into my code, and executed a maven clean test command like below:

mvn --settings settings/settings.xml clean verify sonar:sonar -DskipTests -Dsonar.analysis.mode=issues

The build passes even though I see 2 major issues in the Sonar page (localhost:9000).

I want the build to break, but its not happening. What am I doing wrong?

Sonarqube 6.7.3 Issue - Build Breaker plugin

Hi,

We are having an issue with the Build Breaker plugin 2.2.0 such that when an analysis, which is tied to a quality gate, is running, it breaks the build even though there are no issues related to the condition specified in the logs of it.

Description:-

We have the following quality gate:-
image

As you can see, there are no code smells present as a condition here. Thus, there should be no check on this.

Next, we run the analysis for this project ( which is already tied to this project)

INFO: Analysis report uploaded in 161ms
INFO: ANALYSIS SUCCESSFUL, you can browse <SONAR_PROJECT_LINK>
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://SONAR_SERVER/api/ce/task?id=AWMH2d6biqBKdZ2nt0_e
INFO: Executing post-job org.sonar.plugins.buildbreaker.QualityGateBreaker
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Waiting for report processing to complete...
INFO: Quality gate status: ERROR
ERROR: Code Smells: 1 > 0
ERROR: [BUILD BREAKER] Project did not meet 1 conditions
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 34.833s
INFO: Final Memory: 85M/1821M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Project does not pass the quality gate.
at org.sonar.plugins.buildbreaker.QualityGateBreaker.checkQualityGate(QualityGateBreaker.java:212)
at org.sonar.plugins.buildbreaker.QualityGateBreaker.executeOn(QualityGateBreaker.java:117)
at org.sonar.scanner.phases.PostJobsExecutor.execute(PostJobsExecutor.java:66)
at org.sonar.scanner.phases.PostJobsExecutor.execute(PostJobsExecutor.java:55)
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:94)
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.executeTask(Batch.java:111)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:110)
at org.sonarsource.scanner.cli.Main.execute(Main.java:74)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
[Pipeline] }

In short, even though the condition is not there, it is still catching the code smells and breaking the build.
INFO: Quality gate status: ERROR
ERROR: Code Smells: 1 > 0
ERROR: [BUILD BREAKER] Project did not meet 1 conditions
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE

Next, if we do onto the UI of the project dashboard, you can see that the Quality Gate is passed.
image

Environment Used:-
Sonarqube 6.7.3
Jenkins ver. 2.89.4
INFO: SonarQube Scanner 2.8
INFO: Java 1.8.0_77 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-693.2.2.el7.x86_64 amd64

Can you please help us fix this issue?

Thanks,

Build Breaker Plugin not working as expected

i have enabled build breaker plugin but its not working as expected.

20:37:13.171 INFO: Quality gate status: ERROR
20:37:13.179 ERROR: Coverage on New Code: 73.33333333333333 > 70
20:37:13.179 ERROR: [BUILD BREAKER] Project did not meet 1 conditions
20:37:13.208 INFO: ------------------------------------------------------------------------
20:37:13.208 INFO: EXECUTION FAILURE
20:37:13.208 INFO: ------------------------------------------------------------------------

Build Breaker[2.2]: Quality Gating is still checking when global Skip quality gate check key is enabled

I installed the sonar build breaker on SonarQube Version 6.7.3 That is, I placed the sonar-build-breaker-plugin-2.2.jar plugin jar file in the /opt/sonarqube/extensions/plugins, and restarted the server.

Then I enabled the key "Skip quality gate check" from global setting (when this is enabled then quality gating should not be checked) however when I run the sonar build then its still checking the quality gate

And also I have observed when I enable the project level setting with enabling "Skip quality gate check" key then it is not checking quality gate

Question: How can I disable the Build Breaker on a global level?

sonar global setting

Handling of proxies / alternative webservice URLs

Hi!

At our company, we have a reverse proxy in front of our Sonar installation which provides SSO.
Therefore, for most usecases involving users, we want to set sonar.core.serverBaseURL to the proxy URL, so they can use Sonar without a separate login.

However, the buildbreaker of course uses this url via report-task.txt to query the server. This does not work since the proxy demands authentication.

There's various solutions for this:

  1. We configure our proxy to allow the REST calls without any authentication (not that simple in terms of process and configuration)
  2. We use the non-proxy url and users won't have the convenience of SSO
  3. The plugin provides a way to either retrieve the non-proxy url automatically, or a way to set a different URL via property.

Do you think this last option is something that would be feasible and of use? I suspect there is no simple way for the plugin to get access to the non-proxy url, but a property to set a different URL would be very helpful.

compatibily matrix Jenkins and SonarQube v6.7.3

HI,

I can't see compatibility matrix of SonarQ and build breaker compaitibiliy matrix for SonarQube v6.7.3. Is build breaker v2.2 compatible with sonarQube v6.7.3. Do you know of a better way to break a Jenkins pipeline if this doesn't work?

Thanks, Raju

Plugin breaks analysis on server error

Seems polling the Sonar API does not tolerate slow response or temporary network failures, because randomly I get this error

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar (default-cli) on project test: Protocol message end-group tag did not match expected tag

Re-triggering the same job does work, said error pops quite randomly. If the communication steps are still the ones described in http://www.sonarqube.org/why-you-shouldnt-use-build-breaker/ maybe an additional retry-on-server-error parameter would help?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.