Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vmarchaud/pm2-githook
receive webhook from github/gitlab and ask pm2 to reload the application for you
https://github.com/vmarchaud/pm2-githook
bitbucket devops github gitlab jenkins module pm2 webhook
Last synced: 3 months ago
JSON representation
receive webhook from github/gitlab and ask pm2 to reload the application for you
- Host: GitHub
- URL: https://github.com/vmarchaud/pm2-githook
- Owner: vmarchaud
- License: mit
- Archived: true
- Created: 2016-10-11T18:53:44.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-05-17T12:03:20.000Z (over 1 year ago)
- Last Synced: 2024-09-26T10:34:29.532Z (3 months ago)
- Topics: bitbucket, devops, github, gitlab, jenkins, module, pm2, webhook
- Language: JavaScript
- Homepage:
- Size: 121 KB
- Stars: 42
- Watchers: 3
- Forks: 20
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## [Depreciation notice]
This module is not maintained anymore as i stopped using PM2 a long time ago, feel free to fork it to continue using it, fix your bugs or dev your features !
## Description
PM2 module to receive http webhook from github, execute pre/post hook and gracefull reload the application using pm2.
## Install
`pm2 install pm2-githook`
## Configure
- `port` (Defaults to `8888`) : The port that will be used by the http server to receive hooks.
- `apps` : Contains definition of applications in JSON :```json
{
"APP_NAME" : {
"secret" : "supersecret",
"prehook" : "npm install --production && git submodule update --init",
"posthook" : "echo done",
"errorhook" : "echo error",
"service": "github"
}
}
```- `APP_NAME` is the name of the api **in pm2** and in the **url** defined on github or gitlab (eg: : `http://127.0.0.1:8888/APP_NAME`).
- `secret` is the secret you put in github/gitlab to verify that the transaction is made by github/gitlab.
- `prehook` is the shell command executed in the `cwd` **(care of this)** of the app after the `pull` and before the `gracefullReload`.
- `posthook` is the shell command executed in the `cwd` **(care of this)** of the app after making the `gracefullReload`.
- `errorhook` is the shell command executed in the `cwd` **(care of this)** of the app if an error occurs.
- `service` is the service used to make the http call (`github` is the default)
- `github` : you'll need to set the same secret as defined in github (can specify branch)
- `gogs` : (applies to forks such as gitea) you'll need to set the same secret as defined in gogs (can specify branch)
- `gitlab` : you'll need to set the secret as the token defined in gitlab
- `jenkins` : you'll need to set the secret as the ip of the jenkins (can specify branch)
- `bitbucket` : secret not needed, bitbucket ip range is inside the code (can specify branch)
- `droneci` : you'll need to set the secret to match the `Authorization` header defined inside the [plugin](http://addons.drone.io/webhook/) (can specify branch)
- `nopm2` if set to true, we will not reload the application using pm2 (default to `false`)
- `cwd` if provided we don't resolve the cwd using pm2 and will take this value (defaults to `undefined`)`(can specify branch)` mean that you can use a addional configuration to run the posthook on a specific branch
#### How to set these values ?
After having installed the module you have to type :
`pm2 set pm2-githook:key value`To set the `apps` option and since its a json string, i advice you to escape it to be sure that the string is correctly set ([using this kind of tool](http://bernhardhaeussner.de/odd/json-escape/)).
e.g:
- `pm2 set pm2-githook:port 8080` (bind the http server port to 8080)
- `pm2 set pm2-githook:apps "{\"APP_NAME\":{\"secret\":\"supersecret\",\"prehook\":\"npm install --production && git submodule update --init\",\"posthook\":\"echo done\",\"errorhook\":\"echo error\"}}"`## Uninstall
`pm2 uninstall pm2-githook`