A Node.js continuous deployment system for Github
npm install 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.
``sh`
$ npm install -g github-listener
`
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)
`
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:
`json`
{
"processing": "/home/git/deploy/processing",
"repo_dir": "/home/git/deploy/repos",
"getter": "/home/git/deploy/github-getter/get.sh {repo_dir} {output} {repo} {branch}",
"post_receive": "/home/git/deploy/post-receive/bin/post-receive -p {dir}",
"github_secret": "secret_github_secret",
"travis_token": "secret_travis_token",
"url_secret": "secret_url_secret"
}
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 as github_secretconfig.json
- Travis - follow the instructions here and put your user token in as travis_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.
- secret - verify payload if URL secret in config.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
See the DOCUMENTATION.md file.
1. Create an issue with your bug or suggestion
2. Fork the repository
3. Make your changes in your fork
4. Create a pull request here, referencing the original issue
npm test will run some tests which cover the majority of the functionality.payload.js
You can also send test payloads to a server with the program to test the front end: ./payload.js --help.
npm start` will start the server.
See the LICENSE file.