UNPKG

3.61 kBMarkdownView Raw
1# pm2-io-agent
2
3This module is used by [PM2](https://github.com/Unitech/pm2) to communicate with [PM2.io](https://pm2.io/plus)'s servers.
4
5## Transporters
6
7Two transporters are available now, AxonTransporter and WebsocketTransporter.
8
9AxonTransporter is using [axon pub-emitter](https://github.com/tj/axon) to send data (PushInteractor) to interaction server and [nssocket](https://github.com/foreverjs/nssocket) to receive data from reverse interaction server.
10
11WebsocketTransporter is using [websocket](https://github.com/websockets/ws) to send and receive data from websocket server.
12
13## Launch
14
15### Using daemon
16
17To launch using daemon you need to run :
18
19`node src/InteractorDaemon.js`
20
21
22Before, you need to set these environment vars
23
24| Key | Value |
25|------------------|-------------------------------------------|
26| KEYMETRICS_NODE | Where bucket's endpoints will be resolved |
27| PM2_SECRET_KEY | Bucket's secret key |
28| PM2_PUBLIC_KEY | Bucket's public key |
29| PM2_MACHINE_NAME | Machine name |
30| PM2_VERSION | PM2 Version |
31
32### Using client
33
34You can use `src/InteractorClient.js` and method `launchAndInteract` with constants as first argument (empty object is authorized), options as second argument which is an object with key `secret_key`, `public_key`, `machine_name` and callback as third argument.
35
36```js
37const InteractorClient = require('keymetrics-agent/src/InteractorClient')
38
39InteractorClient.launchAndInteract({}, {
40 secret_key: '',
41 public_key: '',
42 machine_name: ''
43}, (err, msg) => {
44})
45```
46
47## Configuration
48
49To configure this agent you can use `config.json`.
50
51### Default
52
53By default `AxonTransporter` is enabled and using `push` and `reverse` bucket's endpoint.
54You can override this endpoints with `AGENT_PUSH_ENDPOINT` and `AGENT_REVERSE_ENDPOINT` environements' vars
55
56By default `WebsocketTransporter` is disabled, you can enabled it with `AGENT_TRANSPORT_WEBSOCKET` environement's var, it's using `websocket` bucket's endpoint but you can override it with `AGENT_WEBSOCKET_ENDPOINT` environement's var.
57
58### Transporters
59
60Into this configuration you can put `transporter name` as key and for values, two keys are available `enabled` and `endpoints`.
61
62The `enabled` key is using to disable or enable transporter.
63
64The `endpoints` key can be a string or an object. It depends on what the connect method of the transporter needs.
65If you set a string, the connect method will be called with endpoint's value or raw value if no endpoint is matched.
66For objects, the connect method will be called with this object, and value of the keys will be replaced by endpoint's value or raw value if no endpoint is matched.
67
68## Release
69
70To release a new version, first install [gren](https://github.com/github-tools/github-release-notes) :
71```bash
72yarn global add github-release-notes
73```
74
75Push a commit in github with the new version you want to release :
76```
77git commit -am "version: major|minor|patch bump to X.X.X"
78```
79
80Care for the **versionning**, we use the [semver versioning](https://semver.org/) currently. Please be careful about the version when pushing a new package.
81
82Then tag a version with git :
83```bash
84git tag -s vX.X.X
85```
86
87Push the tag into github (this will trigger the publish to npm) :
88```
89git push origin vX.X.X
90```
91
92To finish update the changelog of the release on github with `gren` (be sure that gren has selected the right tags):
93```
94gren release -o -D commits -u keymetrics -r pm2-io-agent
95```
\No newline at end of file