shipit-slack
v0.1.3
Published
Slack tasks for shipit.
Downloads
206
Readme
shipit-slack
A set of tasks for Shipit used for slack slack notifications.
AristotoServer
Features:
- Triggered on the
updated
orfetched
event from shipit-deploy - Works via shipit-cli and grunt-shipit
Install
npm install shipit-slack --save-dev
yarn add shipit-slack --dev
Usage
It is required to set the webhookUrl that links to a Slack incoming webhook. This can be done in the shipit.config.slack
key in the config.
slack: {
webhookUrl: 'https://hooks.slack.com/services/XXX',
}
Afterwards, just simply run: (This triggers the slack
task on the deploy deployed
or fetched
event. No additional config necessary.)
shipit default deploy
Or you can run the tasks separatly :
shipit default slack:init slack:send
Options shipit.config.slack
slack.webhookUrl
Type: String
Default: null
Required: true
The webhook url that is configured for your Slack channel.
slack.channel
Type: String
Default: null
A string that decides what channel the webhook is send to. If this value is null, the default channel is used that is configured in the incoming webhook
.
slack.message
Type: String
Default: Shipit-Slack
A string that determines the message that is send with the Slack notification.
slack.triggerEvent
Type: String
Default: fetched
An event name that triggers slack:install
.
slack.status
Type: String
Default: good
Options: [good
, warning
, error
]
An string that decides what color the notification in Slack gets, they are respectively: green, orange and red.
slack.template
Type: Object
Default:
{
attachments: [
{
fallback: '{{message}}',
color: '{{status}}',
fields: [
{
title: '{{message}}',
value: moment().format('MMMM Do YYYY, H:mm:ss'),
short: true
},
{
title: 'Environment',
value: '{{buildEnv}}',
short: true
},
]
}
]
}
Template of slack message. All {{values}}
will be populated from shipit.config.slack
object.
More info about Slack formatting
Example shipitfile.js
options usage
module.exports = function (shipit) {
require('shipit-deploy')(shipit);
require('shipit-slack')(shipit);
shipit.initConfig({
default: {
slack: {
webhookUrl: 'https://hooks.slack.com/services/__XXX__',
status: 'good',
message: 'Shipit-Slack',
triggerEvent: 'deployed',
channel: '#default'
template: {
attachments: [{
fallback: 'Frontend deployed to {{buildEnv}}',
title: 'Visit',
title_link: '{{url}}',
pretext: '*Frontend deploy done!*:tada:',
color: '{{status}}',
fields: [{
title: 'Environment',
value: '{{buildEnv}}',
short: false
},
{
title: 'Changes',
value: '{{message}}',
short: false
}],
mrkdwn_in: ['pretext']
}]
}
}
});
};
Workflow tasks
- slack
- slack:init
- Emit event "slack_inited".
- slack:install
- Runs slack install
- Emit event "slack_installed"
- slack:send
- Sends slack notification.
- slack:init
Event flow:
- on Event "deploy" (shipit-deploy initialized)
- Runs slack:init
- on Event "slack_inited"
- Runs slack:install (Triggered on the
fetched
event from shipit-deploy or by a customslack.triggerEvent
as mentioned above.)
- Runs slack:install (Triggered on the
License
MIT