Skip to content

Add webhook routing service and client#1887

Merged
vlad-ivanov-name merged 1 commit intomasterfrom
@changes/master/vlad@ivanov.email/If0a6e00de0e2c8211fa27a9bb54910ff6db637ee
Mar 12, 2026
Merged

Add webhook routing service and client#1887
vlad-ivanov-name merged 1 commit intomasterfrom
@changes/master/vlad@ivanov.email/If0a6e00de0e2c8211fa27a9bb54910ff6db637ee

Conversation

@vlad-ivanov-name
Copy link
Collaborator

Add webhook routing service and client

This commit adds a set of tools for local development of josh commit
queue.

Problem

Almost any github app needs to work with webhooks to receive
notifications about changes in remote state. Webhooks are set up on
github app level, and go to a fixed URL address.

When developing an app that needs to receive webhooks, this presents a
problem for testing: if you need to frequently restart/recompile the
app, you need some sort of a tunnel to route webhooks to your machine.
Moveover, without additional tooling, you can only have one webhook
receiver at a time and can't e.g. "sniff" webhook payloads for
debugging.

Implementation

To solve this, this PR adds a couple of tools that will be used for CQ
development.

  • josh-test-webhook-service: a service that runs on a remote server and
    listens to github webhooks
  • josh-test-webhook-client: a crate that lets you connect to that
    service at any time, and start receiving webhook events over websocket.

The webhook target URL never changes, and the client library can connect
at any time. Moreover, multiple receivers can connect to listen to
webhooks.

There are some paid services that accomplish this, but this presents a
minimal, and usecase-specific alternative.

While this is not intended to be used in production, it's very helpful
for testing and has already been tested in a real deployment.

Change-Id: If0a6e00de0e2c8211fa27a9bb54910ff6db637ee

This commit adds a set of tools for local development of josh commit
queue.

### Problem

Almost any github app needs to work with webhooks to receive
notifications about changes in remote state. Webhooks are set up on
github app level, and go to a fixed URL address.

When developing an app that needs to receive webhooks, this presents a
problem for testing: if you need to frequently restart/recompile the
app, you need some sort of a tunnel to route webhooks to your machine.
Moveover, without additional tooling, you can only have one webhook
receiver at a time and can't e.g. "sniff" webhook payloads for
debugging.

### Implementation

To solve this, this PR adds a couple of tools that will be used for CQ
development.

* josh-test-webhook-service: a service that runs on a remote server and
listens to github webhooks
* josh-test-webhook-client: a crate that lets you connect to that
service at any time, and start receiving webhook events over websocket.

The webhook target URL never changes, and the client library can connect
at any time. Moreover, multiple receivers can connect to listen to
webhooks.

There are some paid services that accomplish this, but this presents a
minimal, and usecase-specific alternative.

While this is not intended to be used in production, it's very helpful
for testing and has already been tested in a real deployment.

Change-Id: If0a6e00de0e2c8211fa27a9bb54910ff6db637ee
@vlad-ivanov-name vlad-ivanov-name force-pushed the @changes/master/vlad@ivanov.email/If0a6e00de0e2c8211fa27a9bb54910ff6db637ee branch from 91c15ca to 9190146 Compare March 11, 2026 21:22
@vlad-ivanov-name vlad-ivanov-name added this pull request to the merge queue Mar 12, 2026
Merged via the queue into master with commit 3853c4d Mar 12, 2026
3 checks passed
@vlad-ivanov-name vlad-ivanov-name deleted the @changes/master/vlad@ivanov.email/If0a6e00de0e2c8211fa27a9bb54910ff6db637ee branch March 12, 2026 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants