slackistrano 0.0.12 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3266486763092e1db2d76f99993c5e49e40ff356
4
- data.tar.gz: 702af0c84de7fc72b60709943eb101a3b28072d4
3
+ metadata.gz: 50717c40880bf0a10d22f579b0eb4bb3f09aa46d
4
+ data.tar.gz: 4d852576633d9f56bff4df98e62aed9a6633b3c3
5
5
  SHA512:
6
- metadata.gz: db09cab38914b229aaacc2221cfa964c6b1f1c6800999d3bce1fd78618d6c04b0a4c226e6bf09f8edd885ca012d3dc9f35a094fefa4cdbf4ec74b07fc210f8e6
7
- data.tar.gz: 8149063abf25b62f65561f14f47bae4b546534810441792e188e13e144688212c5a71ea647aae45895631249886ab80c1dcfcadae876714a0efc633f3ccf94e8
6
+ metadata.gz: e2a75020fcc7c587db4497c96d92eee7eba879fb60e7c81c1c64ffe6dd55d8818de8940a03a6dfe59938554eea05bd1ccb0868b51b92de182e84d8f74d8dd242
7
+ data.tar.gz: f8eb3bcfd1c160bfb8603ad123a237e348f457ee608b21ea6358286cab57efd84e96aefe3fc72aed2343222333d43357bb4d13839d8c7171f14d11e803cfae40
data/README.md CHANGED
@@ -26,8 +26,12 @@ And then execute:
26
26
 
27
27
  ## Configuration
28
28
 
29
- Set up an "Incoming WebHooks" integration in Slack. Make a note
30
- of the token as you'll need it later.
29
+ You have two options to notify a channel in Slack when you deploy:
30
+
31
+ 1. Using *Incoming WebHooks* integration, offering more options but requires one of the five free integrations. This is the default option.
32
+ 2. Using *Slackbot*, which will not use one of the five free integrations. Enable via the `:slack_via_slackbot` option.
33
+
34
+ In both case, you need to enable the integration inside Slack and get the token that will be needed later.
31
35
 
32
36
  Require the library in your application's Capfile:
33
37
 
@@ -41,7 +45,7 @@ Set your team and token in your application's config/deploy.rb:
41
45
  Optionally, override the other slack settings:
42
46
 
43
47
  set :slack_icon_url, ->{ 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
44
- set :slack_icon_emoji, ->{ nil } # will override icon_url
48
+ set :slack_icon_emoji, ->{ nil } # will override icon_url, Must be a string (ex: ':shipit:')
45
49
  set :slack_channel, ->{ '#general' }
46
50
  set :slack_username, ->{ 'Slackistrano' }
47
51
  set :slack_run_starting, ->{ true }
@@ -50,6 +54,7 @@ Optionally, override the other slack settings:
50
54
  set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
51
55
  set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
52
56
  set :slack_msg_failed, ->{ "*ERROR!* #{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
57
+ set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
53
58
 
54
59
  **Note**: You may wish to disable one of the notifications if another service (ex:
55
60
  Honeybadger) also displays a deploy notification.
data/lib/slackistrano.rb CHANGED
@@ -5,9 +5,17 @@ require 'json'
5
5
  load File.expand_path("../slackistrano/tasks/slack.rake", __FILE__)
6
6
 
7
7
  module Slackistrano
8
- def self.post(team: nil, token: nil, payload: {})
9
- uri = URI("https://#{team}.slack.com/services/hooks/incoming-webhook")
10
- res = Net::HTTP.post_form(uri, 'token' => token, 'payload' => payload.to_json)
8
+ def self.post(team: nil, token: nil, via_slackbot: false, payload: {})
9
+ if via_slackbot
10
+ uri = URI(URI.encode("https://#{team}.slack.com/services/hooks/slackbot?token=#{token}&channel=#{payload[:channel]}"))
11
+
12
+ Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
13
+ response = http.request_post uri.request_uri, payload[:text]
14
+ end
15
+ else
16
+ uri = URI("https://#{team}.slack.com/services/hooks/incoming-webhook")
17
+ res = Net::HTTP.post_form(uri, 'token' => token, 'payload' => payload.to_json)
18
+ end
11
19
  rescue => e
12
20
  puts "There was an error notifying Slack."
13
21
  puts e.inspect
@@ -8,6 +8,7 @@ namespace :slack do
8
8
  Slackistrano.post(
9
9
  team: fetch(:slack_team),
10
10
  token: fetch(:slack_token),
11
+ via_slackbot: fetch(:slack_via_slackbot),
11
12
  payload: {
12
13
  channel: fetch(:slack_channel),
13
14
  username: fetch(:slack_username),
@@ -26,6 +27,7 @@ namespace :slack do
26
27
  Slackistrano.post(
27
28
  team: fetch(:slack_team),
28
29
  token: fetch(:slack_token),
30
+ via_slackbot: fetch(:slack_via_slackbot),
29
31
  payload: {
30
32
  channel: fetch(:slack_channel),
31
33
  username: fetch(:slack_username),
@@ -44,12 +46,13 @@ namespace :slack do
44
46
  Slackistrano.post(
45
47
  team: fetch(:slack_team),
46
48
  token: fetch(:slack_token),
49
+ via_slackbot: fetch(:slack_via_slackbot),
47
50
  payload: {
48
51
  channel: fetch(:slack_channel),
49
52
  username: fetch(:slack_username),
50
53
  icon_url: fetch(:slack_icon_url),
51
54
  icon_emoji: fetch(:slack_icon_emoji),
52
- text: fetch(:slack_msg_failed)
55
+ text: fetch(:slack_msg_failed),
53
56
  }
54
57
  )
55
58
  end
@@ -77,5 +80,6 @@ namespace :load do
77
80
  set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
78
81
  set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
79
82
  set :slack_msg_failed, ->{ "*ERROR!* #{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
83
+ set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
80
84
  end
81
85
  end
@@ -1,3 +1,3 @@
1
1
  module Slackistrano
2
- VERSION = '0.0.12'
2
+ VERSION = '0.1.0'
3
3
  end
data/spec/tasks_spec.rb CHANGED
@@ -40,14 +40,15 @@ describe Slackistrano do
40
40
  it "calls Slackistrano.post with all the right arguments on slack:deploy:#{stage}" do
41
41
  set "slack_run_#{stage}".to_sym, ->{ true }
42
42
  set :slack_team, ->{ 'team' }
43
- set :slack_token, ->{ 'token' }
44
- set :slack_channel, ->{ 'channel' }
43
+ set :slack_token, ->{ 'token' }
44
+ set :slack_channel, ->{ 'channel' }
45
45
  set :slack_icon_url, ->{ 'http://icon.url' }
46
- set :slack_icon_emoji, ->{ ':emoji:' }
47
- set "slack_msg_#{stage}".to_sym, ->{ 'text message' }
46
+ set :slack_icon_emoji, ->{ ':emoji:' }
47
+ set "slack_msg_#{stage}".to_sym, ->{ 'text message' }
48
48
  expect(Slackistrano).to receive(:post).with(
49
49
  team: 'team',
50
50
  token: 'token',
51
+ via_slackbot: false,
51
52
  payload: {
52
53
  channel: 'channel',
53
54
  username: 'Slackistrano',
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackistrano
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hallstrom
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-27 00:00:00.000000000 Z
11
+ date: 2014-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: ''
@@ -73,8 +73,8 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - .gitignore
77
- - .travis.yml
76
+ - ".gitignore"
77
+ - ".travis.yml"
78
78
  - Gemfile
79
79
  - LICENSE.txt
80
80
  - README.md
@@ -96,12 +96,12 @@ require_paths:
96
96
  - lib
97
97
  required_ruby_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - '>='
99
+ - - ">="
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - '>='
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0'
107
107
  requirements: []
@@ -114,4 +114,3 @@ test_files:
114
114
  - spec/capistrano_deploy_stubs.rake
115
115
  - spec/spec_helper.rb
116
116
  - spec/tasks_spec.rb
117
- has_rdoc: