-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
Jenkins 2.164.2 on fully updated CentOS 7 host
Many plugins installed (all updated), I can provide a list if necessary.
-
Powered by SuggestiMate
I have been experiencing problems with my pipeline after updating the "GitHub Branch Source" plugin from 2.4.5 to 2.5.0. I'm running the latest Jenkins with all plugins updated. After updating my pipeline is immediately failing with the following error. As soon as I roll the plugin back to 2.4.5 the tests begin passing again. Some have suggested to close and re-open the PR. I tried another test this morning, first I updated the plugin then I pushed up a completely new PR, it failed immediately. I then rolled the GitHub Branch Source plugin back to 2.4.5 and the pipeline completed successfully.
The commit SHA referenced in the error is not found even when I do a manual call to the API using the same info. I'm not sure where this commit SHA in the error is coming from.
The full trace:
Pull request #12 opened
Connecting to https://api.github.com using xxxxxxxx/****** (xxxxxxxxx Github Personal Access Token)
GitHub has been notified of this commit’s build result
java.io.FileNotFoundException: https://api.github.com/repos/xxxxxxx/xxxxx/commits/xxxxxxxxxxxxx1db43d9ee079016f549a11a0
at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.squareup.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
at org.kohsuke.github.Requester.parse(Requester.java:625)
at org.kohsuke.github.Requester.parse(Requester.java:607)
at org.kohsuke.github.Requester._to(Requester.java:285)
Caused: org.kohsuke.github.GHFileNotFoundException: {"message":"No commit found for SHA: xxxxxxxxxxxxxxxxdb43d9ee079016f549a11a0","documentation_url":"https://developer.github.com/v3/repos/commits/#get-a-single-commit"}
at org.kohsuke.github.Requester.handleApiError(Requester.java:699)
at org.kohsuke.github.Requester._to(Requester.java:306)
at org.kohsuke.github.Requester.to(Requester.java:247)
at org.kohsuke.github.GHRepository.getCommit(GHRepository.java:973)
at org.jenkinsci.plugins.github_branch_source.PullRequestSCMRevision.validateMergeHash(PullRequestSCMRevision.java:118)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem.<init>(GitHubSCMFileSystem.java:91)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem$BuilderImpl.build(GitHubSCMFileSystem.java:296)
at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:294)
at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:103)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE
[JENKINS-57257] No commit found for SHA after updating github branch source plugin
PR #12 is a brand new PR opened for testing after updating the github branch source plugin. I get the same error when I open any other new PR, until downgrading github branch source plugin to previous verison (2.4.5)
Also just ran into this issue. Jenkins 2.164.2 running in a container inside GKE. Downgrading GitHub Branch Source from 2.5.0 down to 2.4.5 resolved the issue. It seems Jenkins is combining the PR commit with the master branch commit to produce a new commit, which does not exist at GitHub, but Jenkins is making an API call into GitHub for commit info, resulting in the error.
Caleb that is similar to what I'm seeing. The commit referenced in the error does not exist as far as I can see, I cannot access it through the github api manually either. The commit SHA does NOT match the commit SHA shown on the PR in github.
calebd
Stack trace would be helpful. Also, is this occurring when scanning the PR or from github hook? Has the PR that is failing been around a while untouched or has it been opened/updated recently?
silverorange, calebd
The commit sha that 2.5.0 is looking for is the
that is valid. Could you please give that a try?
To be clear, there is still a bug here and I'm working on that, but I want to make sure my theory is correct so I'm fixing the right thing.
Liam, here are the steps I followed. Hope this is helpful:
- Updated github branch source plugin to 2.5.0 again
- Closed PR #12 (same PR as mentioned in original post).
- Re-opened PR #12
In jenkins the closing of the PR spawned a CI check which failed with similar error as before.
Pull request #12 closed
Connecting to https://api.github.com using xxxxxxxx/****** (xxxxxxxx Github Personal Access Token)
GitHub has been notified of this commit’s build result
java.io.FileNotFoundException: https://api.github.com/repos/xxxxxx/xxxxxxxxx/commits/xxxxxxxxxxxxdbe80d1e82bf97cb9e6ae867
at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.squareup.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
at org.kohsuke.github.Requester.parse(Requester.java:625)
at org.kohsuke.github.Requester.parse(Requester.java:607)
at org.kohsuke.github.Requester._to(Requester.java:285)
Caused: org.kohsuke.github.GHFileNotFoundException: {"message":"No commit found for SHA: xxxxxxxxxxxxc14dbe80d1e82bf97cb9e6ae867","documentation_url":"https://developer.github.com/v3/repos/commits/#get-a-single-commit"}
at org.kohsuke.github.Requester.handleApiError(Requester.java:699)
at org.kohsuke.github.Requester._to(Requester.java:306)
at org.kohsuke.github.Requester.to(Requester.java:247)
at org.kohsuke.github.GHRepository.getCommit(GHRepository.java:973)
at org.jenkinsci.plugins.github_branch_source.PullRequestSCMRevision.validateMergeHash(PullRequestSCMRevision.java:118)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem.<init>(GitHubSCMFileSystem.java:91)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem$BuilderImpl.build(GitHubSCMFileSystem.java:296)
at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:294)
at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:103)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE
The GitHub PR re-open process did not seem to spawn a new CI run so I added a new commit, the new commit spawned CI which also failed:
Pull request #12 updated
Connecting to https://api.github.com using xxxxxxxxxx/****** (xxxxx Github Personal Access Token)
GitHub has been notified of this commit’s build result
java.io.FileNotFoundException: https://api.github.com/repos/xxxxxxx/xxxxxxxxxxx/commits/xxxxxxxxxxxxc2b7cd41940bbc762409886a5e84ef
at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.squareup.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
at org.kohsuke.github.Requester.parse(Requester.java:625)
at org.kohsuke.github.Requester.parse(Requester.java:607)
at org.kohsuke.github.Requester._to(Requester.java:285)
Caused: org.kohsuke.github.GHFileNotFoundException: {"message":"No commit found for SHA: xxxxxxxxxxx7cd41940bbc762409886a5e84ef","documentation_url":"https://developer.github.com/v3/repos/commits/#get-a-single-commit"}
at org.kohsuke.github.Requester.handleApiError(Requester.java:699)
at org.kohsuke.github.Requester._to(Requester.java:306)
at org.kohsuke.github.Requester.to(Requester.java:247)
at org.kohsuke.github.GHRepository.getCommit(GHRepository.java:973)
at org.jenkinsci.plugins.github_branch_source.PullRequestSCMRevision.validateMergeHash(PullRequestSCMRevision.java:118)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem.<init>(GitHubSCMFileSystem.java:91)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem$BuilderImpl.build(GitHubSCMFileSystem.java:296)
at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:294)
at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:103)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE
In my case, the pull request that I first noticed with this issue existed before updating to 2.5.0. Before 2.5.0 the pipeline timed out while waiting for an approval.
After upgrading to 2.5.0 the PR couldn't be built because it immediately failed on the first attempt to interact with GitHub. Builds failed regardless of how the build was triggered, via GitHub webhook or as a rerun inside Jenkins.
I also made a brand new PR with different commits and it failed the same way, both via webhook and rerun attempts.
Here is a stacktrace with some of the details made private:
Pull request #1 updated 14:14:01 Connecting to https://api.github.com using xxxxxx/****** GitHub has been notified of this commit’s build result java.io.FileNotFoundException: https://api.github.com/repos/xxxxxx/xxxxxx/commits/xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243) at com.squareup.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) at com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25) at org.kohsuke.github.Requester.parse(Requester.java:625) at org.kohsuke.github.Requester.parse(Requester.java:607) at org.kohsuke.github.Requester._to(Requester.java:285) Caused: org.kohsuke.github.GHFileNotFoundException: {"message":"No commit found for SHA: xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb","documentation_url":"https://developer.github.com/v3/repos/commits/#get-a-single-commit"} at org.kohsuke.github.Requester.handleApiError(Requester.java:699) at org.kohsuke.github.Requester._to(Requester.java:306) at org.kohsuke.github.Requester.to(Requester.java:247) at org.kohsuke.github.GHRepository.getCommit(GHRepository.java:973) at org.jenkinsci.plugins.github_branch_source.PullRequestSCMRevision.validateMergeHash(PullRequestSCMRevision.java:118) at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem.<init>(GitHubSCMFileSystem.java:91) at org.jenkinsci.plugins.github_branch_source.GitHubSCMFileSystem$BuilderImpl.build(GitHubSCMFileSystem.java:296) at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:294) at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:103) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Finished: FAILURE
From the pull request event log:
Changes detected: PR-1 (xxxxxxxxxxxxxxxxxxxx723d39265d8c2206c7f9+xxxxxxxxxxxxxxxxxxxxe1ca98cf39f9c2c75b54 (UNKNOWN_MERGE_STATE) → xxxxxxxxxxxxxxxxxxxx0b218e1baa39a7af38ca+xxxxxxxxxxxxxxxxxxxxe1ca98cf39f9c2c75b54 (xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb)) Scheduled build for branch: PR-1
Where xxxxxxxxxxxxxxxxxxxxe1ca98cf39f9c2c75b54 is the master branch commit.
The commit xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb exists as part of the org but not the PR author's repo fork.
So to add a little more information here. Forgive me, I'm not an expert on this subject. Jenkins is looking for the SHA on the GitHub user the repo was forked by (in which the commits were pushed from). I.e. https://api.github.com/repos/MY-GITHUB-USER
If I query the github API for htps://api.github.com/repos/MY-GITHUB-USER/MY-REPO/pulls I get nothing returned (because there are no PRs under my fork).
If I query the user (our org's github username) in which the commits were pushed to I get results returned.
Could this issue be related to how the PR is opened from a user's fork?
I get info about the commit SHA if I query:
api.github.com/repos/MY-ORGS-GITHUB-ACCOUNT/xxxxxx/commits/xxxxxx7cd41940bbc762409886a5e84ef
but not if I query my user account in which the PR was opened from:
api.github.com/repos/MY-GITHUB-USER/xxxxx/commits/xxxxxxxx7cd41940bbc762409886a5e84ef
After double checking I can confirm the same behavior on my side as silverorange observed. The commit can be seen from the org repo but not the PR author's repo fork. GitHub Branch Source 2.5.0 looks to be querying against the PR author's repo fork which leads to the error.
calebd silverorange
Thanks for taking the time to do this.
Are you working on a private repo? I assume that is why you are redacting repo, org, and commit info.
I wonder if there's some problem private repo's.
The produced commit xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb doesn't exist in GitHub.
I believe the commit does exist, and this feature depends on it existing.
Let's see if we can verify that. On a local clone (not on Jenkins):
git fetch REMOTE pull/PR_ID/head:pr-PR_ID-head
{{ git fetch REMOTE pull/PR_ID/merge:pr-PR_ID-merge}}
REMOTE = remote where the PR is (not your fork, but it's upstream)
PR_ID = the PR number
Then if you
{git checkout pr-PR_ID-merge}, it should have the SHA. If it doesn't... Well, I'll be very confused.
(Based on https://help.github.com/en/articles/checking-out-pull-requests-locally but with one modification)
Jenkins is looking for the SHA on the GitHub user the repo was forked by (in which the commits were pushed from). I.e. https://api.github.com/repos/MY-GITHUB-USER
Could you be a bit more specific? The query should be going to the repo the pull is in not the forked repo. But what you're saying is that the "not found" is coming from the fork?
Liam,
I am indeed working on a private repo in the examples I've provided.
To me it looks like the query is going to the user the repo is forked by and the commit does not exist there.
https://api.github.com/repos/MY-GITHUB-USERNAME/repo/commits/xxxxxx5c2b7cd41940bbc762409886a5e84ef <-- this is what is shown in the jenkins error.
A query for that commit results in a not found message from the github api but works if I do the same query against my github ORG's username
$ git fetch upstream pull/12/head:pr-12-head
$ git fetch upstream pull/12/merge:pr-12-merge
$ git checkout pr-12-merge
Switched to branch 'pr-12-merge'
$ git show
commit xxxxxxxd41940bbc762409886a5e84ef (HEAD -> pr-12-merge)
Merge: 4721939 e6f1a82
Author: xxxxxx <32715263+xxxxxxxx@users.noreply.github.com>
Date: Tue Apr 30 17:09:11 2019 +0000
Merge xxxxxxxx5096722968a844f45447 into xxxxxx14faf2f0db4199a06cfb17440c209b7
silverorange
Thank you that is really useful information. This is good progress.
I think I see where the problem is.
No problem at all, thanks for working on it! Let me know if you want me to do any more tests/provide any further details about my environment. Thanks!
My observations match silverorange. bitwiseman, you're right, the merge commit exists. I can even see it in the GitHub web UI at https://github.com/MY-GITHUB-ORG/REPO/commit/xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb
GitHub Branch Source is trying to get commit details by hitting https://api.github.com/repos/MY-GITHUB-USERNAME/REPO/commits/xxxxxxxxxxxxxxxxxxxxabec08e96270c1de09bb when it seems it should be hitting MY-GITHUB-ORG.
calebd silverorange
If you're willing, please try this plugin on your Jenkins.
https://drive.google.com/open?id=1v06oUnCiN0KSZF47JXjteByPxIS6FBZ1
It incorporates the code from https://github.com/jenkinsci/github-branch-source-plugin/pull/222
Liam,
For sure, I can give it a try tomorrow morning and will report my findings.
bitwiseman, I tested the provided 2.5.1 snapshot build and it worked as expected. The bug reported by this issue appears to be resolved by that build.
Thank you for the swift action on this!
I can confirm that this build appears to have resolved the problem for me as well. I'll echo what Caleb said, thanks for the quick help with this!
silverorangecalebd
Thanks for the fast turn around on information and testing. Update released - 2.5.1.
silverorange
The PR above (#12), is that the new PR that you opened? Or is that the old PR?