How to use Gitbot¶
Gitbot may be run in two ways:
- Console mode
- Runs as a console application, all issues are re-scanned and processed every couple of minutes (interval customizable). Easier to set up, no requirement on setting up GitHub (aside from credentials).
- Web server mode
- Runs as a web application. GitHub repositories that should be processed need to be set up with GitHub web hooks. Application can either be run using embedded webserver, or deployed as s WSGi application.
Labels that will be applied to issues are defined in a rules file (see Labelling rules).
Console mode¶
Gitbot in console mode is started as gitbot console [OPTIONS] REPOSITORIES..., where:
REPOSITORIESis whitespace-separated list of GitHub repositories to process, e.g.melkamar/gitbot foo/bar.- Gitbot must have sufficient permissions to read the repository and push labels. See Authentication.
OPTIONSare following:-a, --auth TEXT- Authentication file. See auth.cfg.sample.
-v, --verbose- Much verbosity. May be repeated multiple times. More v’s, more info!
-r, --rules-file TEXT- File containing tagging rules.
-i, --interval INTEGER- Interval of repository checking in seconds. Default is 60 seconds.
-d, --default-label TEXT- Label to apply to an issue if no other rule applies. If empty, no label is applied. Defaults to no label.
--process-title / --no-process-title- Should the title of the issue be matched against the rules as well? Defaults to true.
--comments / --no-comments- Should comments be also matched against the rules? Defaults to true.
--closed-issues / --no-closed-issues- Should closed issues be still processed? Defaults to false.
--skip-labelled / --no-skip-labelled- Should issues that are labelled already be skipped? Defaults to true.
--remove-current / --no-remove-current- Should the current labels on an issue be removed if a rule matches? Defaults to false.
Web server mode¶
Web server mode may be run from console with embedded server, or as a WSGI app. Both are described at the end of this section.
In order to have web server Gitbot working, the following is necessary:
- Publicly accessible (routable) server.
- Correctly set up authentication token and webhook secret (see Authentication).
- Web hook set up for a repository for which the token has sufficient permissions (see GitHub web hooks).
Running with embedded server¶
Embedded Gitbot server is started using gitbot web. Unlike console mode, it is not currently possible to configure
issue processing options.
Running as WSGI application¶
To run Gitbot through a WSGI server, the following config is used:
import sys
path = '/path/to/script/folder'
if path not in sys.path:
sys.path.append(path)
from web_listener import app as application
GitHub web hooks¶
In order to use Gitbot as a passive web server, GitHub needs to notify it via a HTTP POST every time an issue is created or edited. To do that, go to your GitHub repository and navigate to Settings > Webhooks > Add webhook, and fill in the following information:
- Payload URL
- URL where the notification should be sent. Should be
<gitbot-address>/callback, e.g.https://example.com/callback.
- Content type
application/jsonis what we want.
- Secret
- Enter the same string you set up in the authentication file (see Authentication for more details).
- Which events will trigger this webhook?
- Choose
Let me select individual events>Issues.
GitHub will now send a notification every time an issue is created or edited and Gitbot will react to it. Neat.