95 lines
3.5 KiB
Markdown
95 lines
3.5 KiB
Markdown
# pm2-io-agent
|
|
|
|
This module is used by [PM2](https://github.com/Unitech/pm2) to communicate with [PM2.io](https://pm2.io/plus)'s servers.
|
|
|
|
## Transporters
|
|
|
|
Two transporters are available now, AxonTransporter and WebsocketTransporter.
|
|
|
|
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.
|
|
|
|
WebsocketTransporter is using [websocket](https://github.com/websockets/ws) to send and receive data from websocket server.
|
|
|
|
## Launch
|
|
|
|
### Using daemon
|
|
|
|
To launch using daemon you need to run :
|
|
|
|
`node src/InteractorDaemon.js`
|
|
|
|
|
|
Before, you need to set these environment vars
|
|
|
|
| Key | Value |
|
|
|------------------|-------------------------------------------|
|
|
| KEYMETRICS_NODE | Where bucket's endpoints will be resolved |
|
|
| PM2_SECRET_KEY | Bucket's secret key |
|
|
| PM2_PUBLIC_KEY | Bucket's public key |
|
|
| PM2_MACHINE_NAME | Machine name |
|
|
| PM2_VERSION | PM2 Version |
|
|
|
|
### Using client
|
|
|
|
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.
|
|
|
|
```js
|
|
const InteractorClient = require('keymetrics-agent/src/InteractorClient')
|
|
|
|
InteractorClient.launchAndInteract({}, {
|
|
secret_key: '',
|
|
public_key: '',
|
|
machine_name: ''
|
|
}, (err, msg) => {
|
|
})
|
|
```
|
|
|
|
## Configuration
|
|
|
|
To configure this agent you can use `config.json`.
|
|
|
|
### Default
|
|
|
|
By default `AxonTransporter` is enabled and using `push` and `reverse` bucket's endpoint.
|
|
You can override this endpoints with `AGENT_PUSH_ENDPOINT` and `AGENT_REVERSE_ENDPOINT` environements' vars
|
|
|
|
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.
|
|
|
|
### Transporters
|
|
|
|
Into this configuration you can put `transporter name` as key and for values, two keys are available `enabled` and `endpoints`.
|
|
|
|
The `enabled` key is using to disable or enable transporter.
|
|
|
|
The `endpoints` key can be a string or an object. It depends on what the connect method of the transporter needs.
|
|
If you set a string, the connect method will be called with endpoint's value or raw value if no endpoint is matched.
|
|
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.
|
|
|
|
## Release
|
|
|
|
To release a new version, first install [gren](https://github.com/github-tools/github-release-notes) :
|
|
```bash
|
|
yarn global add github-release-notes
|
|
```
|
|
|
|
Push a commit in github with the new version you want to release :
|
|
```
|
|
git commit -am "version: major|minor|patch bump to X.X.X"
|
|
```
|
|
|
|
Care for the **versionning**, we use the [semver versioning](https://semver.org/) currently. Please be careful about the version when pushing a new package.
|
|
|
|
Then tag a version with git :
|
|
```bash
|
|
git tag -s vX.X.X
|
|
```
|
|
|
|
Push the tag into github (this will trigger the publish to npm) :
|
|
```
|
|
git push origin vX.X.X
|
|
```
|
|
|
|
To finish update the changelog of the release on github with `gren` (be sure that gren has selected the right tags):
|
|
```
|
|
gren release -o -D commits -u keymetrics -r pm2-io-agent
|
|
``` |