Libraries to handle GitHub Webhooks in .NET applications.
-
dotnet add package Octokit.Webhooks.AspNetCore
-
Create a class that derives from
WebhookEventProcessor
and override any of the virtual methods to handle webhooks from GitHub. For example, to handle Pull Request webhooks:public sealed class MyWebhookEventProcessor : WebhookEventProcessor { protected override Task ProcessPullRequestWebhookAsync(WebhookHeaders headers, PullRequestEvent pullRequestEvent, PullRequestAction action) { ... } }
-
Register your implementation of
WebhookEventProcessor
:builder.Services.AddSingleton<WebhookEventProcessor, MyWebhookEventProcessor>();
-
Map the webhook endpoint:
app.UseEndpoints(endpoints => { ... endpoints.MapGitHubWebhooks(); ... });
MapGitHubWebhooks()
takes two optional parameters:
path
. Defaults to/api/github/webhooks
, the URL of the endpoint to use for GitHub.secret
. The secret you have configured in GitHub, if you have set this up.
NOTE: Support is only provided for isolated process Azure Functions.
-
dotnet add package Octokit.Webhooks.AzureFunctions
-
Create a class that derives from
WebhookEventProcessor
and override any of the virtual methods to handle webhooks from GitHub. For example, to handle Pull Request webhooks:public sealed class MyWebhookEventProcessor : WebhookEventProcessor { protected override Task ProcessPullRequestWebhookAsync(WebhookHeaders headers, PullRequestEvent pullRequestEvent, PullRequestAction action) { ... } }
-
Register your implementation of
WebhookEventProcessor
:.ConfigureServices(collection => { ... collection.AddSingleton<WebhookEventProcessor, MyWebhookEventProcessor>(); ... })
-
Configure the webhook function:
new HostBuilder() ... .ConfigureGitHubWebhooks() ... .Build();
ConfigureGitHubWebhooks()
either takes an optional parameter:
secret
. The secret you have configured in GitHub, if you have set this up.
or:
configure
. A function that takes an IConfiguration instance and expects the secret you have configured in GitHub in return.
The function is available on the /api/github/webhooks
endpoint.
All packages in this repository are licensed under the MIT license.