slackistrano 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6fb6dcaaae9129fe0614c9e805dba9884a27a0de
4
- data.tar.gz: 46198dbaa6c0090c7a7f8b62b7cc32d5e14a0eec
3
+ metadata.gz: 5c083ad8d812b118fb281c5a0854423b18fbfe68
4
+ data.tar.gz: 3c1734032ce8f8ebd498f5d23dd32e6b6516592b
5
5
  SHA512:
6
- metadata.gz: 0c7ea8caf9d43271715a592765bc1c02ab793d5d565292ff17a928adad7eda6b391ae7be4b14616af921341b1f66bb4cd1b8fe6c7152de65c38592b7500b4b9a
7
- data.tar.gz: afcc7d71105b280eb26a02d43eae8b05e92d9b2d7eb129a954714acf2653e3fdff366a0240bd3eff2991cbbfa258b5c01c6df45c95b20344a41966159b891bec
6
+ metadata.gz: f7731d4c976a9b5883c04ed483b13c94f8cb0785f479c3d01a753183d0863f163d0326b0d197fefa4573c3adf14f97176ed359bf09ee972f9d02c3471051d37b
7
+ data.tar.gz: 91793a4d0a8eaabfd79f33655269d5419134a6056449723e5f68ea355bed101ccefbfea4419b890fd2a5c97f03d48b273481d6d8d34e97c0a0b10d15ff8a7e39
data/README.md CHANGED
@@ -18,11 +18,15 @@ If you need Capistrano v2 support, check out [capistrano-slack](https://github.c
18
18
 
19
19
  Add this line to your application's Gemfile:
20
20
 
21
- gem 'slackistrano', require: false
21
+ ```ruby
22
+ gem 'slackistrano', require: false
23
+ ```
22
24
 
23
25
  And then execute:
24
26
 
25
- $ bundle
27
+ ```bash
28
+ $ bundle
29
+ ```
26
30
 
27
31
  ## Configuration
28
32
 
@@ -35,47 +39,105 @@ In both case, you need to enable the integration inside Slack and get the token
35
39
 
36
40
  Require the library in your application's Capfile:
37
41
 
38
- require 'slackistrano'
42
+ ```ruby
43
+ require 'slackistrano'
44
+ ```
39
45
 
40
46
  If you post using *Incoming Webhooks* you need to set your webhook url in your application's config/deploy.rb:
41
47
 
42
- set :slack_webhook, "https://hooks.slack.com/services/XXX/XXX/XXX"
48
+ ```ruby
49
+ set :slack_webhook, "https://hooks.slack.com/services/XXX/XXX/XXX"
50
+ ```
43
51
 
44
52
  If you choose to post using *Slackbot* you **must** set your team, token, and channel in your application's config/deploy.rb:
45
53
 
46
- set :slack_via_slackbot, true
47
- set :slack_team, "teamname"
48
- set :slack_token, "xxxxxxxxxxxxxxxxxxxxxxxx"
49
- set :slack_channel, '#general'
54
+ ```ruby
55
+ set :slack_via_slackbot, true
56
+ set :slack_team, "teamname"
57
+ set :slack_token, "xxxxxxxxxxxxxxxxxxxxxxxx"
58
+ set :slack_channel, '#general'
59
+ ```
50
60
 
51
61
  Optionally, override the other slack settings:
52
62
 
53
- set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
54
- set :slack_icon_emoji, -> { nil } # will override icon_url, Must be a string (ex: ':shipit:')
55
- set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting. Required if using Slackbot.
56
- set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
57
- set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
58
- set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
59
- set :slack_username, -> { 'Slackistrano' }
60
- set :slack_run_starting, -> { true }
61
- set :slack_run_finished, -> { true }
62
- set :slack_run_failed, -> { true }
63
- set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
64
- set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
65
- set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
66
- set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
67
- set :slack_title_starting, -> { nil }
68
- set :slack_title_finished, -> { nil }
69
- set :slack_title_failed, -> { nil }
63
+ ```ruby
64
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
65
+ set :slack_icon_emoji, -> { nil } # will override icon_url, Must be a string (ex: ':shipit:')
66
+ set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting. Required if using Slackbot.
67
+ set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
68
+ set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
69
+ set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
70
+ set :slack_username, -> { 'Slackistrano' }
71
+ set :slack_run_starting, -> { true }
72
+ set :slack_run_finished, -> { true }
73
+ set :slack_run_failed, -> { true }
74
+ set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
75
+ set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
76
+ set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
77
+ set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
78
+ set :slack_fields_starting, -> { [] }
79
+ set :slack_fields_finished, -> { [] }
80
+ set :slack_fields_failed, -> { [] }
81
+ set :slack_fallback_starting, -> { nil }
82
+ set :slack_fallback_finished, -> { nil }
83
+ set :slack_fallback_failed, -> { nil }
84
+ set :slack_title_starting, -> { nil }
85
+ set :slack_title_finished, -> { nil }
86
+ set :slack_title_failed, -> { nil }
87
+ ```
70
88
 
71
89
  **Note**: You may wish to disable one of the notifications if another service (ex:
72
90
  Honeybadger) also displays a deploy notification.
73
91
 
74
92
  Test your setup by running:
75
93
 
76
- $ cap production slack:deploy:starting
77
- $ cap production slack:deploy:finished
78
- $ cap production slack:deploy:failed
94
+ ```bash
95
+ $ cap production slack:deploy:starting
96
+ $ cap production slack:deploy:finished
97
+ $ cap production slack:deploy:failed
98
+ ```
99
+
100
+ ## Formatted messages
101
+
102
+ Slack allows you to send complex content, composed by fields. You can use the `fields` and `fallback` variables in order to have a well formatted message as follows:
103
+
104
+ ```ruby
105
+ set :slack_revision, `git rev-parse origin/master`.strip!
106
+ set :slack_title_finished, nil
107
+ set :slack_msg_finished, nil
108
+ set :slack_fallback_finished, "#{fetch(:slack_deploy_user)} deployed #{fetch(:application)} on #{fetch(:stage)}"
109
+ set :slack_fields_finished, [
110
+ {
111
+ "title": "Project",
112
+ "value": "<https://github.com/XXXXX/#{fetch(:application)}|#{fetch(:application)}>",
113
+ "short": true
114
+ },
115
+ {
116
+ "title": "Environment",
117
+ "value": fetch(:stage),
118
+ "short": true
119
+ },
120
+ {
121
+ "title": "Deployer",
122
+ "value": fetch(:slack_deploy_user),
123
+ "short": true
124
+ },
125
+ {
126
+ "title": "Revision",
127
+ "value": "<https://github.com/XXXXX/#{fetch(:application)}/commit/#{fetch(:slack_revision)}|#{fetch(:slack_revision)[0..6]}>",
128
+ "short": true
129
+ }
130
+ ]
131
+ ```
132
+
133
+ It will produce the following format:
134
+ ![Formatted message](https://raw.githubusercontent.com/phallstrom/slackistrano/master/examples/fomatting_with_fields.png)
135
+
136
+ **Note 1:** *The `fallback` field is required in order to display notifications when using `fields`.*
137
+
138
+ **Note 2:** *The `fields` requires configuration requires you to use webhooks.*
139
+
140
+ More information: [https://api.slack.com/docs/attachments](https://api.slack.com/docs/attachments)
79
141
 
80
142
  ## Usage
81
143
 
Binary file
@@ -5,6 +5,8 @@ namespace :slack do
5
5
  title: fetch(:"slack_title_#{stage}"),
6
6
  pretext: fetch(:"slack_pretext_#{stage}"),
7
7
  text: fetch(:"slack_msg_#{stage}"),
8
+ fields: fetch(:"slack_fields_#{stage}"),
9
+ fallback: fetch(:"slack_fallback_#{stage}"),
8
10
  mrkdwn_in: [:text, :pretext]
9
11
  }).reject{|k, v| v.nil? }
10
12
  [attachments]
@@ -85,25 +87,31 @@ namespace :load do
85
87
  set :slack_webhook, ->{ nil } # Incoming WebHook URL.
86
88
  set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
87
89
 
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_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
99
- set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
100
- set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
101
- set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
102
- set :slack_title_starting, -> { nil }
103
- set :slack_title_finished, -> { nil }
104
- set :slack_title_failed, -> { nil }
105
- set :slack_pretext_starting, -> { nil }
106
- set :slack_pretext_finished, -> { nil }
107
- set :slack_pretext_failed, -> { nil }
90
+ set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting.
91
+ set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
92
+ set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
93
+ set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
94
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
95
+ set :slack_icon_emoji, -> { nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
96
+ set :slack_username, -> { 'Slackistrano' }
97
+ set :slack_run_starting, -> { true } # Set to false to disable starting message.
98
+ set :slack_run_finished, -> { true } # Set to false to disable finished message.
99
+ set :slack_run_failed, -> { true } # Set to false to disable failure message.
100
+ set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
101
+ set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
102
+ set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
103
+ set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
104
+ set :slack_fields_starting, -> { [] }
105
+ set :slack_fields_finished, -> { [] }
106
+ set :slack_fields_failed, -> { [] }
107
+ set :slack_fallback_starting, -> { nil }
108
+ set :slack_fallback_finished, -> { nil }
109
+ set :slack_fallback_failed, -> { nil }
110
+ set :slack_title_starting, -> { nil }
111
+ set :slack_title_finished, -> { nil }
112
+ set :slack_title_failed, -> { nil }
113
+ set :slack_pretext_starting, -> { nil }
114
+ set :slack_pretext_finished, -> { nil }
115
+ set :slack_pretext_failed, -> { nil }
108
116
  end
109
117
  end
@@ -1,3 +1,3 @@
1
1
  module Slackistrano
2
- VERSION = '0.1.11'
2
+ VERSION = '0.1.12'
3
3
  end
data/spec/tasks_spec.rb CHANGED
@@ -62,6 +62,8 @@ describe Slackistrano do
62
62
  attachment = {
63
63
  text: 'text message',
64
64
  color: color,
65
+ fields: [],
66
+ fallback: nil,
65
67
  mrkdwn_in: [:text, :pretext]
66
68
  }.reject{|k,v| v.nil?}
67
69
 
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.11
4
+ version: 0.1.12
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-09-10 00:00:00.000000000 Z
11
+ date: 2015-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -79,6 +79,7 @@ files:
79
79
  - LICENSE.txt
80
80
  - README.md
81
81
  - Rakefile
82
+ - examples/fomatting_with_fields.png
82
83
  - lib/slackistrano.rb
83
84
  - lib/slackistrano/tasks/slack.rake
84
85
  - lib/slackistrano/version.rb