slackistrano 0.1.6 → 0.1.7

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: 0a8731a8a9a82bfb30e37575ceda1c33236a3104
4
- data.tar.gz: 255d1dba2c55f8fabe6e3d8d318b46e22c1270d4
3
+ metadata.gz: c46fe6f2630d18ead53c0c8ca36b86aabd0edb90
4
+ data.tar.gz: f69b3b353ef735704a1b48d4af51bcb277a18e32
5
5
  SHA512:
6
- metadata.gz: 0c933eb679cb0886d404bddc7019224dedd22f5a8a8732ec7dac067c4f195f8799959d26811cfb5ef984f0e2a737cb063092278fdacc18c5e5838727d528933d
7
- data.tar.gz: 5f31c28b4a946d680ead0d722ca92f4fbebc6daa2d94199356228c563add106f0a1bbffad5953bfb092cfed9be4f1a477f10a21002cad110e4c1154ffc95bd4c
6
+ metadata.gz: eda0cdd9fa315bc4d20e05e4552a8276347f95c18951defe03f46b56636bdd86ff66853a2b8af3bd506da16b02805ecd11e3145ef690afd7fddc67fa2cb2d336
7
+ data.tar.gz: 2971b27195aff30bc885ee8d6b3abd09d73677c948de6387c9ec7a9d250f26b9d042e90ae789c979dd1c534664f5167043258d3560bf458382303e1f1f264995
data/README.md CHANGED
@@ -51,16 +51,19 @@ If you choose to post using *Slackbot* you **must** set your team and and token
51
51
 
52
52
  Optionally, override the other slack settings:
53
53
 
54
- set :slack_icon_url, ->{ 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
55
- set :slack_icon_emoji, ->{ nil } # will override icon_url, Must be a string (ex: ':shipit:')
56
- set :slack_channel, ->{ '#general' }
57
- set :slack_username, ->{ 'Slackistrano' }
58
- set :slack_run_starting, ->{ true }
59
- set :slack_run_finished, ->{ true }
60
- set :slack_run_failed, ->{ true }
61
- set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
62
- set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
63
- set :slack_msg_failed, ->{ "#{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
54
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
55
+ set :slack_icon_emoji, -> { nil } # will override icon_url, Must be a string (ex: ':shipit:')
56
+ set :slack_channel, -> { '#general' }
57
+ set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
58
+ set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
59
+ set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
60
+ set :slack_username, -> { 'Slackistrano' }
61
+ set :slack_run_starting, -> { true }
62
+ set :slack_run_finished, -> { true }
63
+ set :slack_run_failed, -> { true }
64
+ set :slack_msg_starting, -> { "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
65
+ set :slack_msg_finished, -> { "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
66
+ set :slack_msg_failed, -> { "#{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
64
67
 
65
68
  **Note**: You may wish to disable one of the notifications if another service (ex:
66
69
  Honeybadger) also displays a deploy notification.
@@ -11,7 +11,7 @@ namespace :slack do
11
11
  webhook: fetch(:slack_webhook),
12
12
  via_slackbot: fetch(:slack_via_slackbot),
13
13
  payload: {
14
- channel: fetch(:slack_channel),
14
+ channel: fetch(:slack_channel_starting) || fetch(:slack_channel),
15
15
  username: fetch(:slack_username),
16
16
  icon_url: fetch(:slack_icon_url),
17
17
  icon_emoji: fetch(:slack_icon_emoji),
@@ -33,7 +33,7 @@ namespace :slack do
33
33
  webhook: fetch(:slack_webhook),
34
34
  via_slackbot: fetch(:slack_via_slackbot),
35
35
  payload: {
36
- channel: fetch(:slack_channel),
36
+ channel: fetch(:slack_channel_finished) || fetch(:slack_channel),
37
37
  username: fetch(:slack_username),
38
38
  icon_url: fetch(:slack_icon_url),
39
39
  icon_emoji: fetch(:slack_icon_emoji),
@@ -56,7 +56,7 @@ namespace :slack do
56
56
  webhook: fetch(:slack_webhook),
57
57
  via_slackbot: fetch(:slack_via_slackbot),
58
58
  payload: {
59
- channel: fetch(:slack_channel),
59
+ channel: fetch(:slack_channel_failed) || fetch(:slack_channel),
60
60
  username: fetch(:slack_username),
61
61
  icon_url: fetch(:slack_icon_url),
62
62
  icon_emoji: fetch(:slack_icon_emoji),
@@ -85,15 +85,18 @@ namespace :load do
85
85
  set :slack_webhook, ->{ nil } # Incoming WebHook URL.
86
86
  set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
87
87
 
88
- set :slack_channel, ->{ nil } # Channel to post to. Optional. Defaults to WebHook setting.
89
- set :slack_icon_url, ->{ 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
90
- set :slack_icon_emoji, ->{ nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
91
- set :slack_username, ->{ 'Slackistrano' }
92
- set :slack_run_starting, ->{ true } # Set to false to disable starting message.
93
- set :slack_run_finished, ->{ true } # Set to false to disable finished message.
94
- set :slack_run_failed, ->{ true } # Set to false to disable failure message.
95
- set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
96
- set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
97
- set :slack_msg_failed, ->{ "#{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
88
+ set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting.
89
+ set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
90
+ set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
91
+ set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
92
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
93
+ set :slack_icon_emoji, -> { nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
94
+ set :slack_username, -> { 'Slackistrano' }
95
+ set :slack_run_starting, -> { true } # Set to false to disable starting message.
96
+ set :slack_run_finished, -> { true } # Set to false to disable finished message.
97
+ set :slack_run_failed, -> { true } # Set to false to disable failure message.
98
+ set :slack_msg_starting, -> { "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
99
+ set :slack_msg_finished, -> { "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
100
+ set :slack_msg_failed, -> { "#{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
98
101
  end
99
102
  end
@@ -1,3 +1,3 @@
1
1
  module Slackistrano
2
- VERSION = '0.1.6'
2
+ VERSION = '0.1.7'
3
3
  end
data/spec/tasks_spec.rb CHANGED
@@ -23,7 +23,7 @@ describe Slackistrano do
23
23
  Rake::Task['deploy:failed'].execute
24
24
  end
25
25
 
26
- shared_examples_for "slack notification" do |stage, color = nil|
26
+ %w[starting finished failed].each do |stage|
27
27
  it "posts to slack on slack:deploy:#{stage}" do
28
28
  set "slack_run_#{stage}".to_sym, ->{ true }
29
29
  expect(Slackistrano).to receive :post
@@ -35,19 +35,31 @@ describe Slackistrano do
35
35
  expect(Slackistrano).not_to receive :post
36
36
  Rake::Task["slack:deploy:#{stage}"].execute
37
37
  end
38
+ end
39
+
40
+ [ # stage, color, channel
41
+ ['starting', nil, nil],
42
+ ['finished', 'good', nil],
43
+ ['failed', 'danger', nil],
44
+ ['starting', nil, 'starting_channel'],
45
+ ['finished', 'good', 'finished_channel'],
46
+ ['failed', 'danger', 'failed_channel'],
47
+ ].each do |stage, color, channel_for_stage|
48
+
49
+ it "calls Slackistrano.post with the right arguments for stage=#{stage}, color=#{color}, channel_for_stage=#{channel_for_stage}" do
50
+ set :"slack_run_#{stage}", -> { true }
51
+ set :slack_team, -> { 'team' }
52
+ set :slack_token, -> { 'token' }
53
+ set :slack_webhook, -> { 'webhook' }
54
+ set :slack_channel, -> { 'channel' }
55
+ set :slack_icon_url, -> { 'http://icon.url' }
56
+ set :slack_icon_emoji, -> { ':emoji:' }
57
+ set :"slack_msg_#{stage}", -> { 'text message' }
38
58
 
39
- it "calls Slackistrano.post with all the right arguments on slack:deploy:#{stage}" do
40
- set :"slack_run_#{stage}", ->{ true }
41
- set :slack_team, ->{ 'team' }
42
- set :slack_token, ->{ 'token' }
43
- set :slack_webhook, ->{ 'webhook' }
44
- set :slack_channel, ->{ 'channel' }
45
- set :slack_icon_url, ->{ 'http://icon.url' }
46
- set :slack_icon_emoji, ->{ ':emoji:' }
47
- set :"slack_msg_#{stage}", ->{ 'text message' }
59
+ set :"slack_channel_#{stage}", -> { channel_for_stage }
60
+ expected_channel = channel_for_stage || 'channel'
48
61
 
49
- attachment = {text: 'text message'}
50
- attachment[:color] = color unless color.nil?
62
+ attachment = {text: 'text message', color: color}.reject{|k,v| v.nil?}
51
63
 
52
64
  expect(Slackistrano).to receive(:post).with(
53
65
  team: 'team',
@@ -55,7 +67,7 @@ describe Slackistrano do
55
67
  webhook: 'webhook',
56
68
  via_slackbot: false,
57
69
  payload: {
58
- channel: 'channel',
70
+ channel: expected_channel,
59
71
  username: 'Slackistrano',
60
72
  icon_url: 'http://icon.url',
61
73
  icon_emoji: ':emoji:',
@@ -66,15 +78,5 @@ describe Slackistrano do
66
78
  end
67
79
  end
68
80
 
69
- describe 'build is starting' do
70
- it_should_behave_like "slack notification", :starting
71
- end
72
-
73
- describe 'build has finished' do
74
- it_should_behave_like "slack notification", :finished, 'good'
75
- end
76
81
 
77
- describe 'build has failed' do
78
- it_should_behave_like "slack notification", :failed, 'danger'
79
- end
80
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackistrano
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hallstrom
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano