mc1arke / sonarqube-community-branch-plugin

A plugin that allows branch analysis and pull request decoration in the Community version of Sonarqube
GNU Lesser General Public License v3.0
2.22k stars 521 forks source link

406 Error When Authing for GHE PR Decorations #107

Closed mjdouble closed 4 years ago

mjdouble commented 4 years ago

Describe the bug PR decoration is failing on Github Enteprise. Appears auth fails with 406 error because it is not directed to the appropriate endpoint for the Github App Installations

Debug logs

2020.02.26 13:34:12 ERROR ce[AXCBtGq-QpZ5otPx5iq6][o.s.c.t.p.a.p.PostProjectAnalysisTasksExecutor] Execution of task class com.github.mc1arke.sonarqube.plugin.ce.pullrequest.PullRequestPostAnalysisTask failed
java.lang.IllegalStateException: Could not decorate Pull Request on Github
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.GithubPullRequestDecorator.decorateQualityGateStatus(GithubPullRequestDecorator.java:38)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.PullRequestPostAnalysisTask.finished(PullRequestPostAnalysisTask.java:132)
    at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.executeTask(PostProjectAnalysisTasksExecutor.java:113)
    at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:107)
    at org.sonar.ce.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:91)
    at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:63)
    at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:81)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:207)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:189)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:156)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:131)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:83)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:51)
    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)
Caused by: java.io.IOException: Server returned HTTP response code: 406 for URL: https://github.XXXXX.com/login?return_to=https%3A%2F%2Fgithub.XXXXX.com%2Fapi%2Fapp%2Finstallations

Sonar Scanner Configs

sonar.host.url=https://sonarqube.stage.XXXXX.com
sonar.login=XXXXXXXXXXXXXX
sonar.pullrequest.key=1392
sonar.pullrequest.branch=newpr
sonar.pullrequest.github.repository=myorg/myrepo
sonar.pullrequest.provider=Github
sonar.pullrequest.github.endpoint=https://github.XXXXX.com/api/
sonar.pullrequest.base=master
sonar.projectKey=myprojectkey

Expected behavior Decorate the Pull request

Software Versions

mc1arke commented 4 years ago

Which version of Github Enterprise are you using?

mjdouble commented 4 years ago

2.19.5

mc1arke commented 4 years ago

I suspect this is related to #100 due to the wrong URL being targetted on Github Enterprise servers since the plugin is defaulting to use the path structure of Github.com requests. I've pushed a proposed fix onto issue/100, is there any chance you could try installing that and see if it fixes the issue for you?

mjdouble commented 4 years ago

Tried plugin built from issue/100 branch. New error:

2020.02.27 15:30:45 ERROR ce[AXCHRR4Y2mq7dHmuYIWL][o.s.c.t.p.a.p.PostProjectAnalysisTasksExecutor] Execution of task class com.github.mc1arke.sonarqube.plugin.ce.pullrequest.PullRequestPostAnalysisTask failed
java.lang.IllegalStateException: Could not decorate Pull Request on Github
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.GithubPullRequestDecorator.decorateQualityGateStatus(GithubPullRequestDecorator.java:38)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.PullRequestPostAnalysisTask.finished(PullRequestPostAnalysisTask.java:132)
    at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.executeTask(PostProjectAnalysisTasksExecutor.java:113)
    at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:107)
    at org.sonar.ce.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:91)
    at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:63)
    at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:81)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:207)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:189)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:156)
    at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:131)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:83)
    at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:51)
    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)
Caused by: io.aexp.nodes.graphql.exceptions.GraphQLException: Found
    at io.aexp.nodes.graphql.Fetch.send(Fetch.java:105)
    at io.aexp.nodes.graphql.GraphQLTemplate.execute(GraphQLTemplate.java:122)
    at io.aexp.nodes.graphql.GraphQLTemplate.mutate(GraphQLTemplate.java:91)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.v4.GraphqlCheckRunProvider.createCheckRun(GraphqlCheckRunProvider.java:162)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.GithubPullRequestDecorator.decorateQualityGateStatus(GithubPullRequestDecorator.java:36)
    ... 20 common frames omitted
mjdouble commented 4 years ago

I'm seeing that others have been successful with this change. By the error I'm receiving it does seem to now find the api

Caused by: io.aexp.nodes.graphql.exceptions.GraphQLException: Found
    at io.aexp.nodes.graphql.Fetch.send(Fetch.java:105)
    at io.aexp.nodes.graphql.GraphQLTemplate.execute(GraphQLTemplate.java:122)
    at io.aexp.nodes.graphql.GraphQLTemplate.mutate(GraphQLTemplate.java:91)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.v4.GraphqlCheckRunProvider.createCheckRun(GraphqlCheckRunProvider.java:162)
    at com.github.mc1arke.sonarqube.plugin.ce.pullrequest.github.GithubPullRequestDecorator.decorateQualityGateStatus(GithubPullRequestDecorator.java:36)
    ... 20 common frames omitted

Any clue what I might have wrong?

mc1arke commented 4 years ago

What do you currently have configured for the base URL for the Github API? I need the full value (domain, port and path) as you have it saved, although I'm happy for you to obfuscate the domain name if you want.

mjdouble commented 4 years ago

sonar.pullrequest.github.endpoint=https://github.XXXXX.com/api/

mc1arke commented 4 years ago

Could you remove the trailing slash from the end of URL and try again please (e.g. https://github.XXXXX.com/api)

mjdouble commented 4 years ago

That did it. Thank you

mc1arke commented 4 years ago

Released in version 1.3.1