slackistrano 0.1.11 → 0.1.12

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: 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