Skip to content
/ hookah Public

GitHub / GitLab webhook handler with Telegram integration

License

Notifications You must be signed in to change notification settings

worg/hookah

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hoookah

Hookah

A tool written in Go [golang] to handle GitHub and GitLab webhooks [trigger deployments, tests, etc] and send Telegram notifications

GoDoc Go Report Card

Installing

Assuming you have a working Go setup

go get -u github.com/worg/hookah/cmd/hookah

Usage

You'll need to create a JSON config file named config.json.

Example:

{
    "host": "127.0.0.1",
    "port": 8080,
    "repos": [
        {
            "name": "hookah",
            "branch": "*",
            "tasks" : [
                {
                    "cwd": "/home/user/hookah/",
                    "cmd": "./test.sh",
                    "args": ["prod", "dev"]
                }
            ],
            "notify": {
                "telegram" : {
                    "token": "bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
                    "chat_id": 123456
                }
            }
        }
    ]
}

Config Field definition

field type definition required
host string ip/name to listen on NO
port number port to listen on YES
repos array[object] list of repositories to check YES
repos:name string repository name YES
repos:branch string repository branch
tip: you can use * to match any
YES
repos:tasks arrray[object] list of tasks to execute NO
repos:tasks:cwd string working directory of command to execute NO
repos:tasks:cmd string command to execute YES
repos:tasks:args string arguments passed to command NO
repos:notify object notification configuration NO
repos:notify:telegram:token string Telegram bot token YES
repos:notify:telegram:chat_id string Telegram Chat ID to send notifications to YES

For a complete JSON example see config.sample.json.

Running

Execute hookah on the same path where config.json is or specify its path hookah -path="/path/to/config/" .

Hookah should start and listen for webhook events on:

  • /gitlab for GitLab Webhooks.
  • /github for GitHub Webhooks.

If any payload matches branch/repo then it will execute the corresponding tasks and [if configured] notify a commit summary.

Development

The package github.com/worg/hookah/webhooks contains structures matching GitHub/GitLab payloads for JSON unmarshalling, both meet Context interface that provides common fields to both payloads.

About

GitHub / GitLab webhook handler with Telegram integration

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages