1 | # pm2-io-agent
|
2 |
|
3 | This 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 |
|
7 | Two transporters are available now, AxonTransporter and WebsocketTransporter.
|
8 |
|
9 | AxonTransporter 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 |
|
11 | WebsocketTransporter is using [websocket](https://github.com/websockets/ws) to send and receive data from websocket server.
|
12 |
|
13 | ## Launch
|
14 |
|
15 | ### Using daemon
|
16 |
|
17 | To launch using daemon you need to run :
|
18 |
|
19 | `node src/InteractorDaemon.js`
|
20 |
|
21 |
|
22 | Before, 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 |
|
34 | You 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
|
37 | const InteractorClient = require('keymetrics-agent/src/InteractorClient')
|
38 |
|
39 | InteractorClient.launchAndInteract({}, {
|
40 | secret_key: '',
|
41 | public_key: '',
|
42 | machine_name: ''
|
43 | }, (err, msg) => {
|
44 | })
|
45 | ```
|
46 |
|
47 | ## Configuration
|
48 |
|
49 | To configure this agent you can use `config.json`.
|
50 |
|
51 | ### Default
|
52 |
|
53 | By default `AxonTransporter` is enabled and using `push` and `reverse` bucket's endpoint.
|
54 | You can override this endpoints with `AGENT_PUSH_ENDPOINT` and `AGENT_REVERSE_ENDPOINT` environements' vars
|
55 |
|
56 | By 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 |
|
60 | Into this configuration you can put `transporter name` as key and for values, two keys are available `enabled` and `endpoints`.
|
61 |
|
62 | The `enabled` key is using to disable or enable transporter.
|
63 |
|
64 | The `endpoints` key can be a string or an object. It depends on what the connect method of the transporter needs.
|
65 | If you set a string, the connect method will be called with endpoint's value or raw value if no endpoint is matched.
|
66 | For 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 |
|
70 | To release a new version, first install [gren](https://github.com/github-tools/github-release-notes) :
|
71 | ```bash
|
72 | yarn global add github-release-notes
|
73 | ```
|
74 |
|
75 | Push a commit in github with the new version you want to release :
|
76 | ```
|
77 | git commit -am "version: major|minor|patch bump to X.X.X"
|
78 | ```
|
79 |
|
80 | Care for the **versionning**, we use the [semver versioning](https://semver.org/) currently. Please be careful about the version when pushing a new package.
|
81 |
|
82 | Then tag a version with git :
|
83 | ```bash
|
84 | git tag -s vX.X.X
|
85 | ```
|
86 |
|
87 | Push the tag into github (this will trigger the publish to npm) :
|
88 | ```
|
89 | git push origin vX.X.X
|
90 | ```
|
91 |
|
92 | To finish update the changelog of the release on github with `gren` (be sure that gren has selected the right tags):
|
93 | ```
|
94 | gren release -o -D commits -u keymetrics -r pm2-io-agent
|
95 | ``` |
\ | No newline at end of file |