capistrano-slackify 2.0.1 → 2.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 +4 -4
- data/README.md +13 -2
- data/capistrano-slackify.gemspec +1 -1
- data/lib/capistrano/tasks/slackify.cap +20 -4
- data/lib/slackify.rb +7 -15
- data/spec/lib/slackify_spec.rb +6 -17
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b5dafba0cc5d7f3d89a6962a72fc000006f1405
|
4
|
+
data.tar.gz: d7f9938e73652330237b3e8ad2176ff7ff9f0c67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e95d083bc7f952d2ff386512b00cfe7231d9906bd0d65701feedb852c79005a7e684cb9a3f615bddeb03106f460f97867453c876bc48ef17693eda02dd827f0d
|
7
|
+
data.tar.gz: cb202d398accaa1e998b329bdee9db9488294ea4707823b32ece765ac835b3cfcd1f9d7a48a26da0c63a842e459529c512167dd77ce6f802cb349ca0915df557
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Capistrano Slackify [](https://travis-ci.org/onthebeach/capistrano-slackify) [](https://codeclimate.com/github/onthebeach/capistrano-slackify)
|
1
|
+
# Capistrano Slackify [](https://travis-ci.org/onthebeach/capistrano-slackify) [](https://codeclimate.com/github/onthebeach/capistrano-slackify) [](http://badge.fury.io/rb/capistrano-slackify)
|
2
2
|
|
3
3
|
Publish deploy notifications to [Slack](https://slack.com) - for [Capistrano v3](https://github.com/capistrano/capistrano).
|
4
4
|
|
@@ -41,6 +41,14 @@ By default, this will publish something along the lines of:
|
|
41
41
|
|
42
42
|
Revision 64a3c1de of my_app deployed to production by seenmyfate in 333 seconds.
|
43
43
|
|
44
|
+
If a deploy has failed, the following message will be published by default:
|
45
|
+
|
46
|
+
production deploy of my_app with revision/branch 64a3c1de failed
|
47
|
+
|
48
|
+
As with the other tasks, it is also possible to notify failures manually:
|
49
|
+
|
50
|
+
bundle exec cap production slack:notify_failed
|
51
|
+
|
44
52
|
### Customisation
|
45
53
|
|
46
54
|
Any of the defaults can be over-ridden in `config/deploy.rb`:
|
@@ -58,10 +66,13 @@ Any of the defaults can be over-ridden in `config/deploy.rb`:
|
|
58
66
|
set :slack_deploy_starting_text, -> {
|
59
67
|
"#{fetch(:stage)} deploy starting with revision/branch #{fetch(:current_revision, fetch(:branch))} for #{fetch(:application)}"
|
60
68
|
}
|
69
|
+
set :slack_deploy_failed_text, -> {
|
70
|
+
"#{fetch(:stage)} deploy of #{fetch(:application)} with revision/branch #{fetch(:current_revision, fetch(:branch))} failed"
|
71
|
+
}
|
61
72
|
|
62
73
|
To configure the way slack parses your message (see 'Parsing Modes' at https://api.slack.com/docs/formatting) use the `:slack_parse` setting:
|
63
74
|
|
64
|
-
|
75
|
+
set :slack_parse, 'none' # available options: 'default', 'none', 'full'
|
65
76
|
|
66
77
|
### Copyright
|
67
78
|
|
data/capistrano-slackify.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'capistrano-slackify'
|
7
|
-
spec.version = '2.0
|
7
|
+
spec.version = '2.1.0'
|
8
8
|
spec.authors = ['seenmyfate']
|
9
9
|
spec.email = ['seenmyfate@gmail.com']
|
10
10
|
spec.summary = %q{Publish deployment notifications to Slack via the incoming webhooks integration}
|
@@ -5,8 +5,8 @@ namespace :slack do
|
|
5
5
|
run_locally do
|
6
6
|
info 'Notifying Slack of deploy starting'
|
7
7
|
set :time_started, Time.now.to_i
|
8
|
-
execute :curl, '-X POST',
|
9
|
-
|
8
|
+
execute :curl, '-X POST', '--data-urlencode',
|
9
|
+
Slackify::Payload.build(self, fetch(:slack_deploy_starting_text)),
|
10
10
|
fetch(:slack_url)
|
11
11
|
end
|
12
12
|
end
|
@@ -18,12 +18,25 @@ namespace :slack do
|
|
18
18
|
run_locally do
|
19
19
|
info 'Notifying Slack of deploy finished'
|
20
20
|
set :time_finished, Time.now.to_i
|
21
|
-
execute :curl, '-X POST',
|
22
|
-
|
21
|
+
execute :curl, '-X POST', '--data-urlencode',
|
22
|
+
Slackify::Payload.build(self, fetch(:slack_text)),
|
23
23
|
fetch(:slack_url)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
after 'deploy:finished', 'slack:notify_finished'
|
27
|
+
|
28
|
+
desc 'Notify Slack of a deployment failure via the incoming webhooks ' \
|
29
|
+
'integration - :slack_subdomain and :slack_token must be set'
|
30
|
+
task :notify_failed do
|
31
|
+
run_locally do
|
32
|
+
info 'Notifying Slack of deploy failed'
|
33
|
+
set :time_finished, Time.now.to_i
|
34
|
+
execute :curl, '-X POST', '--data-urlencode',
|
35
|
+
Slackify::Payload.build(self, fetch(:slack_deploy_failed_text)),
|
36
|
+
fetch(:slack_url)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
after 'deploy:failed', 'slack:notify_failed'
|
27
40
|
end
|
28
41
|
|
29
42
|
namespace :load do
|
@@ -43,5 +56,8 @@ namespace :load do
|
|
43
56
|
set :slack_deploy_starting_text, -> {
|
44
57
|
"#{fetch(:stage)} deploy starting with revision/branch #{fetch(:current_revision, fetch(:branch))} for #{fetch(:application)}"
|
45
58
|
}
|
59
|
+
set :slack_deploy_failed_text, -> {
|
60
|
+
"#{fetch(:stage)} deploy of #{fetch(:application)} with revision/branch #{fetch(:current_revision, fetch(:branch))} failed"
|
61
|
+
}
|
46
62
|
end
|
47
63
|
end
|
data/lib/slackify.rb
CHANGED
@@ -3,15 +3,15 @@ require 'yajl/json_gem'
|
|
3
3
|
module Slackify
|
4
4
|
class Payload
|
5
5
|
|
6
|
-
attr_reader :
|
7
|
-
protected :
|
6
|
+
attr_reader :text
|
7
|
+
protected :text
|
8
8
|
|
9
|
-
def initialize(context,
|
10
|
-
@context, @
|
9
|
+
def initialize(context, text)
|
10
|
+
@context, @text = context, text
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.build(context,
|
14
|
-
new(context,
|
13
|
+
def self.build(context, text)
|
14
|
+
new(context, text).build
|
15
15
|
end
|
16
16
|
|
17
17
|
def build
|
@@ -22,20 +22,12 @@ module Slackify
|
|
22
22
|
{
|
23
23
|
channel: fetch(:slack_channel),
|
24
24
|
username: fetch(:slack_username),
|
25
|
-
text:
|
25
|
+
text: text,
|
26
26
|
icon_emoji: fetch(:slack_emoji),
|
27
27
|
parse: fetch(:slack_parse)
|
28
28
|
}.to_json
|
29
29
|
end
|
30
30
|
|
31
|
-
def slack_text
|
32
|
-
if @status == :start
|
33
|
-
fetch(:slack_deploy_starting_text)
|
34
|
-
else
|
35
|
-
fetch(:slack_text)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
31
|
def fetch(*args, &block)
|
40
32
|
@context.fetch(*args, &block)
|
41
33
|
end
|
data/spec/lib/slackify_spec.rb
CHANGED
@@ -11,28 +11,17 @@ module Slackify
|
|
11
11
|
slack_parse: 'default',
|
12
12
|
slack_user: 'You',
|
13
13
|
slack_text: ':boom:',
|
14
|
-
slack_deploy_starting_text: 'duck!'
|
15
14
|
}
|
16
15
|
}
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}
|
22
|
-
|
23
|
-
it 'returns the starting payload' do
|
24
|
-
expect(Payload.build(context, :start)).to eq payload
|
25
|
-
end
|
26
|
-
end
|
17
|
+
let(:payload) {
|
18
|
+
%{'payload={"channel":"#general","username":"Capistrano","text":":boom:","icon_emoji":":ghost:","parse":"default"}'}
|
19
|
+
}
|
27
20
|
|
28
|
-
|
29
|
-
let(:payload) {
|
30
|
-
%{'payload={"channel":"#general","username":"Capistrano","text":":boom:","icon_emoji":":ghost:","parse":"default"}'}
|
31
|
-
}
|
21
|
+
let(:text) { context.fetch(:slack_text) }
|
32
22
|
|
33
|
-
|
34
|
-
|
35
|
-
end
|
23
|
+
it 'returns the payload with the specified text' do
|
24
|
+
expect(Payload.build(context, text)).to eq payload
|
36
25
|
end
|
37
26
|
|
38
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-slackify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seenmyfate
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -128,4 +128,3 @@ summary: Publish deployment notifications to Slack via the incoming webhooks int
|
|
128
128
|
test_files:
|
129
129
|
- spec/lib/slackify_spec.rb
|
130
130
|
- spec/spec_helper.rb
|
131
|
-
has_rdoc:
|