AfonsoTsukamoto / slackistrano

Slack integration for Capistrano deployments.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Slackistrano

Gem Version Code Climate Build Status

NOTE : This branch supports previous ruby versions.

Send notifications to Slack about Capistrano deployments.

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

Requirements

  • Capistrano >= 3.1.0
  • Ruby >= 1.9.3
  • 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 that will be needed later.

Require the library in your application's Capfile:

require 'slackistrano'

Set your team and token in your application's config/deploy.rb:

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_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,   ->{ "*ERROR!* #{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook

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

About

Slack integration for Capistrano deployments.

License:MIT License


Languages

Language:Ruby 100.0%