Skip to content

Instantly share code, notes, and snippets.

@ebeigarts
Created February 24, 2016 09:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebeigarts/16f14f5b947ba4f57569 to your computer and use it in GitHub Desktop.
Save ebeigarts/16f14f5b947ba4f57569 to your computer and use it in GitHub Desktop.
Capistrano 2 + Slack
set :slack_webhook_url, "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXX"
namespace :slack do
task :deploy_started do
username = ENV['USER']
on_rollback do
slack(
color: "danger",
message: "*#{username}* cancelled deployment of *#{application}* to *#{rails_env}*"
)
end
slack(
color: "#E8E9EA",
message: "*#{username}* is deploying *#{application}* to *#{rails_env}*"
)
end
task :deploy_finished do
username = ENV['USER']
slack(
color: "good",
message: "*#{username}* finished deploying *#{application}* to *#{rails_env}*"
)
end
def slack(color: "good", message: nil)
require 'httpclient'
require 'json'
client = HTTPClient.new
# client.debug_dev = $stderr
payload = {
:attachments => [{
:color => color,
:fallback => message.gsub(/\*/, ''),
:text => message,
:mrkdwn_in => ["text"]
}]
}
res = client.post fetch(:slack_webhook_url), JSON.generate(payload)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment