Libraries to handle GitHub Webhooks in .NET applications.
dotnet add package Octokit.Webhooks.AspNetCoreCreate a class that derives from
WebhookEventProcessorand override any of the virtual methods to handle webhooks from GitHub. For example, to handle Pull Request webhooks:publicsealedclassMyWebhookEventProcessor:WebhookEventProcessor{protectedoverrideValueTaskProcessPullRequestWebhookAsync(WebhookHeadersheaders,PullRequestEventpullRequestEvent,PullRequestActionaction,CancellationTokencancellationToken=default){ ...}}
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.AzureFunctionsCreate a class that derives from
WebhookEventProcessorand override any of the virtual methods to handle webhooks from GitHub. For example, to handle Pull Request webhooks:publicsealedclassMyWebhookEventProcessor:WebhookEventProcessor{protectedoverrideValueTaskProcessPullRequestWebhookAsync(WebhookHeadersheaders,PullRequestEventpullRequestEvent,PullRequestActionaction,CancellationTokencancellationToken=default){ ...}}
Register your implementation of
WebhookEventProcessor:.ConfigureServices(collection =>{ ...collection.AddSingleton<WebhookEventProcessor,MyWebhookEventProcessor>(); ...})
Configure the webhook function:
newHostBuilder() ....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.