Directory / iohk-ops / github-webhook-util.md

You are browsing a mirror of a file hosted on GitHub. View original

GitHub Webhook Util

GitHub Webhook Util is a tool written in haskell that listens for GitHub webhook events processes those events.

It requires a token to be able to check status events. In our case, since both run on the hydra server, we use the same token.

It also requires setting up a webhook on the repositories you want to collect data from.

Both credentials are loaded from an EnvironmentFile by systemd that is deployed using nixops deployment keys.

Secrets

A secret file needs to be created with the following format:

GITHUB_SERVANT_SECRET=foo
GITHUB_TOKEN=bar

The Servant secret is the one that should be configured in github webhook. The token is the personal access token being used to query API.

Setup

Setup consists of adding a webhook to the repository. This webhook needs to have access to Status Data. Then both tokens should be place in static/github-webhook-util.secret. After a deploy, the service should start and nginx should be listening for github notification requests.

Webhooks

GitHub Status Event Data Collection

Any GitHub Status event will check if the commit attached to that status has all statuses completed (Success or Failure, not pending or error). If so, it will query some extra data about those statuses, mainly how long each one took to complete from the time the first status check arrived.

It will then take that data and write it to influxDB to be viewed by devops/developers with grafana.

TODO

  • Add integration to grab hydra phase metrics for all statuses and insert them into influxDB as well.
  • Integrate with the servant graphing utility for generating time lines of hydra derivations.
  • get PR metadata for commits if exists, so individual PR’s can be graphed.