mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
Chore: Add guide for how to use eventHook to send updates to Slack (#459)
* Add guide for how to use eventHook to send updates to Slack * better slack url * use require instead of import
This commit is contained in:
parent
de1a9e29a5
commit
d41daf716c
@ -59,7 +59,7 @@ Available unleash options include:
|
||||
- `custom` - use this when you implement your own custom authentication logic.
|
||||
- **ui** (object) - Set of UI specific overrides. You may set the following keys: `headerBackground`, `environment`, `slogan`.
|
||||
- **getLogger** (function) - Used to register a [custom log provider](#How do I configure the log output).
|
||||
- **eventHook** (`function(event, data)`) - If provided, this function will be invoked whenever a feature is mutated. The possible values for `event` are `'feature-created'`, `'feature-updated'`, `'feature-archived'`, `'feature-revived'`. The `data` argument contains information about the mutation. Its fields are `type` (string) - the event type (same as `event`); `createdBy` (string) - the user who performed the mutation; `data` - the contents of the change. The contents in `data` differs based on the event type; For `'feature-archived'` and `'feature-revived'`, the only field will be `name` - the name of the feature. For `'feature-created'` and `'feature-updated'` the data follows a schema defined in the code [here](https://github.com/Unleash/unleash/blob/master/lib/routes/admin-api/feature-schema.js#L38-L59).
|
||||
- **eventHook** (`function(event, data)`) - If provided, this function will be invoked whenever a feature is mutated. The possible values for `event` are `'feature-created'`, `'feature-updated'`, `'feature-archived'`, `'feature-revived'`. The `data` argument contains information about the mutation. Its fields are `type` (string) - the event type (same as `event`); `createdBy` (string) - the user who performed the mutation; `data` - the contents of the change. The contents in `data` differs based on the event type; For `'feature-archived'` and `'feature-revived'`, the only field will be `name` - the name of the feature. For `'feature-created'` and `'feature-updated'` the data follows a schema defined in the code [here](https://github.com/Unleash/unleash/blob/master/lib/routes/admin-api/feature-schema.js#L38-L59). See an example [here](./guides/feautre-updates-to-slack.md).
|
||||
|
||||
### 3. Docker
|
||||
|
||||
|
76
docs/guides/feautre-updates-to-slack.md
Normal file
76
docs/guides/feautre-updates-to-slack.md
Normal file
@ -0,0 +1,76 @@
|
||||
# Add Slack hook to Unleash
|
||||
|
||||
## Create a custom Slack WebHook url:
|
||||
|
||||
1. Go to [https://slack.com/apps/manage/custom-integrations](https://slack.com/apps/manage/custom-integrations)
|
||||
1. Click Incoming WebHooks
|
||||
1. Click “Add Configuration”
|
||||
1. This is Slack's help page on how to do this: https://api.slack.com/custom-integrations/incoming-webhooks
|
||||
- Choose a channel, follow the wizard, get the custom URL.
|
||||
|
||||
## Send data to Slack using an event hook function
|
||||
|
||||
Using the `eventHook` option, create a function that will send the data you'd like into Slack when mutation events happen.
|
||||
|
||||
```javascript
|
||||
const unleash = require('unleash-server');
|
||||
const axios = require('axios');
|
||||
|
||||
function onEventHook(event, eventData) {
|
||||
const { createdBy: user, data } = eventData;
|
||||
let text = '';
|
||||
|
||||
const unleashUrl = 'http://your.unleash.host.com';
|
||||
const feature = `<${unleashUrl}/#/features/strategies/${data.name}|${
|
||||
data.name
|
||||
}>`;
|
||||
|
||||
switch (event) {
|
||||
case 'feature-created':
|
||||
case 'feature-updated': {
|
||||
const verb =
|
||||
event === 'feature-created' ? 'created a new' : 'updated the';
|
||||
text = `${user} ${verb} feature ${feature}\ndescription: ${
|
||||
data.description
|
||||
}\nenabled: ${data.enabled}\nstrategies: \`${JSON.stringify(
|
||||
data.strategies,
|
||||
)}\``;
|
||||
break;
|
||||
}
|
||||
case 'feature-archived':
|
||||
case 'feature-revived': {
|
||||
const verb = event === 'feature-archived' ? 'archived' : 'revived';
|
||||
text = `${user} ${verb} the feature ${feature}`;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
console.error(`Unknown event ${event}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
axios
|
||||
.post(
|
||||
'https://hooks.slack.com/services/THIS_IS_WHERE_THE_CUSTOM_URL_GOES',
|
||||
{
|
||||
username: 'Unleash',
|
||||
icon_emoji: ':unleash:', // if you added a custom emoji, otherwise you can remove this field.
|
||||
text: text,
|
||||
},
|
||||
)
|
||||
.then(res => {
|
||||
console.log(`Slack post statusCode: ${res.status}. Text: ${text}`);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
});
|
||||
}
|
||||
|
||||
const options = {
|
||||
eventHook: onEventHook,
|
||||
};
|
||||
|
||||
unleash.start(options).then(server => {
|
||||
console.log(`Unleash started on http://localhost:${server.app.get('port')}`);
|
||||
});
|
||||
```
|
Loading…
Reference in New Issue
Block a user