webhooks.js icon indicating copy to clipboard operation
webhooks.js copied to clipboard

Project: Extract events logic from `@octokit/webhooks` into `@octokit/events`

Open gr2m opened this issue 4 years ago • 3 comments

Not all GitHub Events are sent via webhooks. Some are only available to GitHub Actions, such as the schedule event.

I would like to move all event-related logic into a new @octokit/events package. It will essentially be EventHandler class from /src/event-handler

@octokit/webhooks should only care about webhooks-specific logic

  1. sign an event payload using a secret
  2. verifying an event payload with a signature
  3. Handle http request lifecycles

With that change, we should rename the @octokit/webhooks-definitions to @octokit/events-defintions, too. The definitions should include a flag whether an event is also sent as a Webhook request by GitHub.

This is also a good opportunity to clean up the code base. @octokit/webhooks is one of the olders @octokit modules, a lot has change since, most importantly the rewrite to TypeScript. When creating @octokit/events, we can start with a blank page and do not need to worry about breaking any APIs. Once the module is done, we will be able to remove a big chunk of the code in @octokit/webhooks and instead replace it with the @octokit/events dependency. We can release a breaking change for @octokit/webhooks if necessary at this point.

This will be a larger effort that I need to be involved in, but it's not time critical. If anyone would like to take a lead on the effort, let's discuss in the comments

gr2m avatar Feb 17 '21 19:02 gr2m

Can you create the repository so we can plan things there and send an initial implementation

wolfy1339 avatar Jun 05 '21 01:06 wolfy1339

I would like to get involved if possible :)

oscard0m avatar Jun 05 '21 12:06 oscard0m

important note: it seems that not only the events but also the payload schemas may differ between webhooks and GitHub Actions events. I found that while the push webhook event includes commits[][added]/commits[][modified]/commits[][removed] the same properties are not present when handling a push event in GitHub Actions. I've contacted support to find out if this is a mistake or intentionally, but I think it's something we should consider when creating @octokit/events

Update: the payload difference between actions and webhook is indeed by design:

image

gr2m avatar Aug 01 '21 19:08 gr2m