GitHub - dontcallmedom/github-notify-ml: index.py is a python CGI script that provides a Webhook to be used as a github hook endpoint to send mail to a set of email addresses when specific GitHub events happen (original) (raw)

index.py is a python CGI script that provides a Webhook to be used as a github hook endpoint to send mail to a set of email addresses when specific events (e.g. push, new issues, etc) happen in specific repos.

It can also be used without a hook to send a digest of activity across a set of defined repositories for a given period. In that mode, it is limited to 300 events in the said period for a given repo.

It can also be used as a W3C hook endpoint to send mail when TR documents get published.

The set of mailing lists, repos / TR documents and events is configured in a JSON file, named mls.json that lives in the same directory as the webhook, with the following structure:

{ "email@example.com": { "githubaccount/repo": { "events": ["issues.opened", "issues.closed", "issue_comment.created", "pull_request.opened", "pull_request.labeled"], "eventFilter": {"label":["important"]}, "branches": { "master": ["push"] } } }, "email2@example.com": { "http://www.w3.org/TR/wake-lock": { "events": ["tr.published"] } }, "email3@example.com": { "digest:tuesday": [ { "repos": ["githubaccount/repo", "githubaccount/repo2"] }, { "repoList": "https://example.org/repos.json" }, { "topic": "All of repo4 and some of repo3", "sources": [ { "repos": ["githubaccount/repo3"], "eventFilter": {"label": ["enhancement"]} }, { "repos": ["githubaccount/repo4"] } ] } ] } }

In other words:

Only events for which templates have been defined (in the templates/generic directory) will be notified. Each mail target can have customized templates by creating an email@example.com directory in templates/mls and having a file named after the event. Templates use Mustache-based pystache as their engines and are fed with payload data from the event. The first line of the template is used as the subject of the email.

In addition to configuring targets of notifications, an instance of this webhook needs to define a config.json file with the SMTP host, the address from which messages will be sent, and set a GitHub OAUTH token that can be used to retrieve information via the GitHub API.

See also how to make use of the W3C instance of this service.

Testing

Run the test suite with:

A typical test consists of: