Github Listener
A Node.js continuous deployment system for Github and TravisCI. It detects a hook from Github when a repo is pushed, or from Travis when tests are complete, and pulls the changes in the server side repo using github-getter. Then it runs the script in post-receive to build and push live.
An example setup script that we use to set up the deployment system can be found here.
Installation
$ npm install -g github-listener
Help
Usage: github-listener [options]
-h|--help display this help message
-v|--version display the version number
-q|--quiet suppress logging
-p|--port port to run Github Listener on
-c|--config path to JSON config file (default ./config.json)
Config
A config.json
file is needed to tell the server what commands are run and the secret used in the Github or Travis hook.
Example:
Setting up webhooks
In order for your listener to receive payloads you need to set up a webhook on Github or Travis:
- Github - follow the instructions here and put the webhook secret in
config.json
asgithub_secret
- Travis - follow the instructions here and put your user token in
config.json
astravis_token
If the service you are using does not sign the payloads or provide authorisation headers, you can use the url_secret
option and add a ?secret=
to the webhook url.
URL Parameters
secret
- verify payload if URL secret inconfig.json
matches thisbranch
- run build if branch in payload matches this (defaults to master if omitted)semver
- run build if branch in payload matches semver (e.g. v1.2.3)
Example: https://git.example.com/?semver&secret=pass1234&branch=dev
Documentation
See the DOCUMENTATION.md file.
Contributing
- Create an issue with your bug or suggestion
- Fork the repository
- Make your changes in your fork
- Create a pull request here, referencing the original issue
Testing
npm test
will run some tests which cover the majority of the functionality.
You can also send test payloads to a server with the payload.js
program to test the front end: ./payload.js --help
.
npm start
will start the server.
License
See the LICENSE file.