shipit-slack

Slack tasks for shipit.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
shipit-slack
450.1.37 years ago7 years agoMinified + gzip package size for shipit-slack in KB

Readme

shipit-slack
A set of tasks for Shipit used for slack slack notifications.
Codacy Badge Codacy Badge Codeship Status for bingneef/shipit-slack Package status for bingneef/shipit-slack Package status for bingneef/shipit-slack/?type=dev
AristotoServer
Features:

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.
Event flow:
  • on Event "deploy" (shipit-deploy initialized)
- Runs slack:init - on Event "slackinited"
- Runs *slack:install* (Triggered on the `fetched` event from [shipit-deploy](https://github.com/shipitjs/shipit-deploy) or by a custom `slack.triggerEvent` as mentioned above.)

License

MIT