capistrano-slackify 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Build Status](https://travis-ci.org/onthebeach/capistrano-slackify.svg)](https://travis-ci.org/onthebeach/capistrano-slackify) [![Code Climate](https://codeclimate.com/github/onthebeach/capistrano-slackify/badges/gpa.svg)](https://codeclimate.com/github/onthebeach/capistrano-slackify)
|
1
|
+
# Capistrano Slackify [![Build Status](https://travis-ci.org/onthebeach/capistrano-slackify.svg)](https://travis-ci.org/onthebeach/capistrano-slackify) [![Code Climate](https://codeclimate.com/github/onthebeach/capistrano-slackify/badges/gpa.svg)](https://codeclimate.com/github/onthebeach/capistrano-slackify) [![Gem Version](https://badge.fury.io/rb/capistrano-slackify.svg)](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:
|