jenkinsci / jenkinsci/github-checks-plugin
`GitHubSCMSourceChecksContext` failing to load `SCMRevisionAction` from branch build
- Dominant language
- Java
- Stars
- 89
- Forks
- 50
- Avg merge
- 13h 55m
- Merged PRs (30d)
- 7
Description
Take a look at the stack trace in https://github.com/jenkinsci/junit-plugin/issues/308. @cathychan observed something similar from `junit` on a GitHub branch project build:
```
org.kohsuke.github.GHIOException: Ran out of retries for URL: https://api.github.com/repos/…/…
at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:407)
at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:355)
at org.kohsuke.github.Requester.fetch(Requester.java:76)
at org.kohsuke.github.GHRepository.read(GHRepository.java:132)
at org.kohsuke.github.GitHub.getRepository(GitHub.java:673)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:1685)
at jenkins.scm.api.SCMSource.fetch(SCMSource.java:582)
at io.jenkins.plugins.checks.github.SCMFacade.findRevision(SCMFacade.java:156)
Caused: java.lang.IllegalStateException: Could not fetch revision from repository: … and branch: …
at io.jenkins.plugins.checks.github.SCMFacade.findRevision(SCMFacade.java:159)
at io.jenkins.plugins.checks.github.GitHubSCMSourceChecksContext.resolveHeadSha(GitHubSCMSourceChecksContext.java:131)
at io.jenkins.plugins.checks.github.GitHubSCMSourceChecksContext.(GitHubSCMSourceChecksContext.java:46)
at io.jenkins.plugins.checks.github.GitHubSCMSourceChecksContext.fromRun(GitHubSCMSourceChecksContext.java:24)
at io.jenkins.plugins.checks.github.GitHubChecksPublisherFactory.createPublisher(GitHubChecksPublisherFactory.java:48)
at io.jenkins.plugins.checks.api.ChecksPublisherFactory.lambda$fromRun$0(ChecksPublisherFactory.java:89)
at …
at io.jenkins.plugins.checks.api.ChecksPublisherFactory.fromRun(ChecksPublisherFactory.java:92)
at io.jenkins.plugins.checks.api.ChecksPublisherFactory.fromRun(ChecksPublisherFactory.java:69)
at io.jenkins.plugins.junit.checks.JUnitChecksPublisher.publishChecks(JUnitChecksPublisher.java:41)
at hudson.tasks.junit.JUnitResultArchiver.parseAndSummarize(JUnitResultArchiver.java:310)
at hudson.tasks.junit.pipeline.JUnitResultsStepExecution.run(JUnitResultsStepExecution.java:63)
at hudson.tasks.junit.pipeline.JUnitResultsStepExecution.run(JUnitResultsStepExecution.java:29)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at …
```
Besides the robustness issue covered in the other issue, what is noteworthy here is that `GitHubSCMSourceChecksContext.resolveHeadSha(Job)` is running, which must make a network operation. That is clearly wrong because this is a branch build for which `SCMRevisionAction` should exist, so `resolveHeadSha(Run)` should have been able to get this trivial piece of information from memory. Why then did https://github.com/jenkinsci/github-checks-plugin/blob/3baa65d7486f6298215fbda14cb1b23f752fe73a/src/main/java/io/jenkins/plugins/checks/github/GitHubSCMSourceChecksContext.java#L46 fall back to the `Job` overload?
Contributor guide
Assessment
This issue has not been assessed yet.