Skip to content

Latest commit

 

History

History
executable file
·
175 lines (134 loc) · 4.83 KB

README.md

File metadata and controls

executable file
·
175 lines (134 loc) · 4.83 KB

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 "slack_inited"
      • Runs slack:install (Triggered on the fetched event from shipit-deploy or by a custom slack.triggerEvent as mentioned above.)

License

MIT