# pm2-githook

> receive http hook from multiple source and ask pm2 to reload the application for you

Latest version **2.0.1** (published 2023-05-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install pm2-githook
pnpm add pm2-githook
yarn add pm2-githook
bun add pm2-githook
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2023-05-17 |
| First published | 2016-10-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 17.2 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 41 |
| Author | vmarchaud |
| Maintainers | vmarchaud |
| Keywords | pm2, github, gitlab, webhook, hook, reload, restart, git, pull, droneci, ci, jenkins, bitbucket |

## Links

- npm: https://www.npmjs.com/package/pm2-githook
- Repository: https://github.com/vmarchaud/pm2-githook
- Homepage: https://github.com/vmarchaud/pm2-githook#readme
- Issues: https://github.com/vmarchaud/pm2-githook/issues
- npm.io page: https://npm.io/package/pm2-githook

## Dependencies (5)

- [pm2](https://npm.io/package/pm2.md) ^5.2.0
- [pmx](https://npm.io/package/pmx.md) ^1.6.7
- [async](https://npm.io/package/async.md) ^2.1.1
- [vizion](https://npm.io/package/vizion.md) ^0.2.13
- [ipaddr.js](https://npm.io/package/ipaddr.js.md) ^1.2.0

## Alternatives

- [random-seedable](https://npm.io/package/random-seedable.md) — 27.9K weekly downloads
- [n2words](https://npm.io/package/n2words.md) — 22.2K weekly downloads
- [@stdlib/math-base-special-factorialln](https://npm.io/package/@stdlib/math-base-special-factorialln.md) — 5.7K weekly downloads
- [@stdlib/math-base-special-abs2](https://npm.io/package/@stdlib/math-base-special-abs2.md) — 1.7K weekly downloads
- [commons-math-interpolation](https://npm.io/package/commons-math-interpolation.md) — 1.4K weekly downloads

## Recent versions

- 2.0.1 (latest) — 2023-05-17
- 2.0.0 — 2022-03-01
- 1.11.0 — 2022-01-13
- 1.10.1 — 2019-10-22
- 1.9.1 — 2017-03-22
- 1.7.2 — 2016-12-04
- 1.6.1 — 2016-11-23
- 1.6.0 — 2016-11-23
- 1.5.0 — 2016-11-22
- 1.3.2 — 2016-10-13
- 1.3.1 — 2016-10-13
- 1.3.0 — 2016-10-13
- 1.2.0 — 2016-10-13
- 1.0.2 — 2016-10-11
- 1.0.1 — 2016-10-11
- … 1 more at https://npm.io/package/pm2-githook/versions

## README

## [Depreciation notice]

This module is not maintained anymore, feel free to fork it to continue using it.

## 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`

---
_Source: https://npm.io/package/pm2-githook · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
