-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
-
2.0-66.vc21d0c1d936d
Bug description
Webhooks get received by Jenkins but do not create jobs or start builds. This only happens sometimes.
Other info
I noticed clock drift on GitHub servers but it wasn't a factor.
I verified GitHub API servers have about a 12 second clock drift currently compared to time.gov.
We've been having several webhooks issues and I'm suspicious about the clock differences (I haven't nailed down a specific bug in code, yet).
For example, GitHub will send a webhook at 22:07:04 and Jenkins will process the hook payload with signature verification at 22:07:03. No builds trigger for this clock difference and the log is missing from the multibranch pipeline event log.
However, if I close and re-open the pull request to trigger another webhook its timestamps are in chronological order and succeed. Is it possible there's a clock drift bug in code? I'm still struggling to track it down with traces.
Custom loggers
I installed the support-core plugin and created a custom logger named "GitHub webhooks debugging".
I have logging enabled for the following classes currently (level ALL):
com.cloudbees.jenkins.GitHubWebHook org.jenkinsci.plugins.github.webhook.WebhookManager org.jenkinsci.plugins.github.admin.GitHubHookRegisterProblemMonitor org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber org.jenkinsci.plugins.github.webhook.subscriber.PingGHEventSubscriber org.jenkinsci.plugins.github.webhook.GHEventHeader$PayloadHandler org.jenkinsci.plugins.github.webhook.GHEventPayload$PayloadHandler org.jenkinsci.plugins.github.webhook.GHWebhookSignature org.jenkinsci.plugins.github.webhook.RequirePostWithGHHookPayload$Processor org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty org.jenkinsci.plugins.github_branch_source.GitHubRepositoryEventSubscriber org.jenkinsci.plugins.github_branch_source.PushGHEventSubscriber org.jenkinsci.plugins.github_branch_source.PullRequestGHEventSubscriber org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject jenkins.branch.buildstrategies.basic.TagBuildStrategyImpl jenkins.branch.buildstrategies.basic.ChangeRequestBuildStrategyImpl jenkins.scm.api.SCMHeadEvent jenkins.branch.MultiBranchProject
I'm able to trace webhook events from GitHub to Jenkins and inside of Jenkins: pull request event, payload received, signature verification succeeded.
However, the trail stops at signature verification and there's no multibranch pipeline event log. If I retry it goes through all of the above and an event shows up in multibranch pipeline event log with a build being started.
Sample job
See attachment sample-job.xml
Jenkins war and plugin versions
See dependencies.gradle and the companion comment "How to reproduce" in the comments section of this issue.
- is related to
-
JENKINS-62095 Webhook not working with return Processed
-
- Reopened
-
[JENKINS-72047] scm-filter-jervis gives up after 1 API request to GitHub which can lead to missed webhooks
Description |
Original:
I verified GitHub API servers have about a 12 second clock drift currently compared to time.gov.
We've been having several webhooks issues and I'm suspicious about the clock differences (I haven't nailed down a specific bug in code, yet). For example, GitHub will send a webhook at 22:07:04 and Jenkins will process the hook payload with signature verification at 22:07:03. No builds trigger for this clock difference and the log is missing from the multibranch pipeline event log. However, if I close and re-open the pull request to trigger another webhook its timestamps are in chronological order and succeed. Is it possible there's a clock drift bug in code? I'm still struggling to track it down with traces. I have logging enabled for the following classes currently (level ALL): {noformat} com.cloudbees.jenkins.GitHubWebHook org.jenkinsci.plugins.github.webhook.WebhookManager org.jenkinsci.plugins.github.admin.GitHubHookRegisterProblemMonitor org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber org.jenkinsci.plugins.github.webhook.subscriber.PingGHEventSubscriber org.jenkinsci.plugins.github.webhook.GHEventHeader$PayloadHandler org.jenkinsci.plugins.github.webhook.GHEventPayload$PayloadHandler org.jenkinsci.plugins.github.webhook.GHWebhookSignature org.jenkinsci.plugins.github.webhook.RequirePostWithGHHookPayload$Processor org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty {noformat} I'm able to trace webhook events from GitHub to Jenkins and inside of Jenkins: pull request event, payload received, signature verification succeeded. However, the trail stops at signature verification and there's no multibranch pipeline event log. If I retry it goes through all of the above and an event shows up in multibranch pipeline event log with a build being started. |
New:
I verified GitHub API servers have about a 12 second clock drift currently compared to time.gov.
We've been having several webhooks issues and I'm suspicious about the clock differences (I haven't nailed down a specific bug in code, yet). For example, GitHub will send a webhook at 22:07:04 and Jenkins will process the hook payload with signature verification at 22:07:03. No builds trigger for this clock difference and the log is missing from the multibranch pipeline event log. However, if I close and re-open the pull request to trigger another webhook its timestamps are in chronological order and succeed. Is it possible there's a clock drift bug in code? I'm still struggling to track it down with traces. I have logging enabled for the following classes currently (level ALL): {noformat} com.cloudbees.jenkins.GitHubWebHook org.jenkinsci.plugins.github.webhook.WebhookManager org.jenkinsci.plugins.github.admin.GitHubHookRegisterProblemMonitor org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber org.jenkinsci.plugins.github.webhook.subscriber.PingGHEventSubscriber org.jenkinsci.plugins.github.webhook.GHEventHeader$PayloadHandler org.jenkinsci.plugins.github.webhook.GHEventPayload$PayloadHandler org.jenkinsci.plugins.github.webhook.GHWebhookSignature org.jenkinsci.plugins.github.webhook.RequirePostWithGHHookPayload$Processor org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty org.jenkinsci.plugins.github_branch_source.GitHubRepositoryEventSubscriber org.jenkinsci.plugins.github_branch_source.PushGHEventSubscriber org.jenkinsci.plugins.github_branch_source.PullRequestGHEventSubscriber org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject {noformat} I'm able to trace webhook events from GitHub to Jenkins and inside of Jenkins: pull request event, payload received, signature verification succeeded. However, the trail stops at signature verification and there's no multibranch pipeline event log. If I retry it goes through all of the above and an event shows up in multibranch pipeline event log with a build being started. |
Attachment | New: sample-job.xml [ 61173 ] |
Example
The second timestamp matches time.gov
It's worth noting that some GitHub server timestamps are wildly different and do not appear to be synchonized on GitHub's end (while some do appear to be synchronized). I filed a support ticket for this with GitHub already but the dropped builds are a bug concern which is why I filed this ticket.