Giter VIP home page Giter VIP logo

slackistrano's Introduction

Slackistrano

Gem Version Code Climate Build Status

Send notifications to Slack about Capistrano deployments.

If you need Capistrano v2 support, check out capistrano-slack.

Requirements

  • Capistrano >= 3.1.0
  • Ruby >= 2.0
  • A Slack account

Installation

Add this line to your application's Gemfile:

gem 'slackistrano', require: false

And then execute:

$ bundle

Configuration

You have two options to notify a channel in Slack when you deploy:

  1. Using Incoming WebHooks integration, offering more options but requires one of the five free integrations. This is the default option.
  2. Using Slackbot, which will not use one of the five free integrations. Enable via the :slack_via_slackbot option.

In both case, you need to enable the integration inside Slack and get the token and/or webhook url that will be needed later.

Require the library in your application's Capfile:

require 'slackistrano'

If you post using Incoming Webhooks you need to set your webhook url in your application's config/deploy.rb:

set :slack_webhook, "https://hooks.slack.com/services/XXX/XXX/XXX"

If you choose to post using Slackbot you must set your team and and token in your application's config/deploy.rb:

set :slack_via_slackbot, true
set :slack_team, "supremegolf"
set :slack_token, "xxxxxxxxxxxxxxxxxxxxxxxx"

Optionally, override the other slack settings:

set :slack_icon_url,         -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
set :slack_icon_emoji,       -> { nil } # will override icon_url, Must be a string (ex: ':shipit:')
set :slack_channel,          -> { '#general' }
set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
set :slack_channel_failed,   -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
set :slack_username,         -> { 'Slackistrano' }
set :slack_run_starting,     -> { true }
set :slack_run_finished,     -> { true }
set :slack_run_failed,       -> { true }
set :slack_msg_starting,     -> { "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
set :slack_msg_finished,     -> { "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
set :slack_msg_failed,       -> { "#{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
set :slack_title_starting,   -> { nil }
set :slack_title_finished,   -> { nil }
set :slack_title_failed,     -> { nil }

Note: You may wish to disable one of the notifications if another service (ex: Honeybadger) also displays a deploy notification.

Test your setup by running:

$ cap production slack:deploy:starting
$ cap production slack:deploy:finished
$ cap production slack:deploy:failed

Usage

Deploy your application like normal and you should see messages in the channel you specified.

TODO

  • Notify about incorrect configuration settings.
  • Notify about unsuccessfull HTTP POSTs.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

slackistrano's People

Contributors

afrojas avatar andrusha avatar imgarylai avatar jameslafa avatar johnpray avatar opti avatar phallstrom avatar rsutphin avatar udzura avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.