slackistrano 0.0.12 → 0.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 +8 -3
- data/lib/slackistrano.rb +11 -3
- data/lib/slackistrano/tasks/slack.rake +5 -1
- data/lib/slackistrano/version.rb +1 -1
- data/spec/tasks_spec.rb +5 -4
- metadata +14 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 50717c40880bf0a10d22f579b0eb4bb3f09aa46d
|
|
4
|
+
data.tar.gz: 4d852576633d9f56bff4df98e62aed9a6633b3c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2a75020fcc7c587db4497c96d92eee7eba879fb60e7c81c1c64ffe6dd55d8818de8940a03a6dfe59938554eea05bd1ccb0868b51b92de182e84d8f74d8dd242
|
|
7
|
+
data.tar.gz: f8eb3bcfd1c160bfb8603ad123a237e348f457ee608b21ea6358286cab57efd84e96aefe3fc72aed2343222333d43357bb4d13839d8c7171f14d11e803cfae40
|
data/README.md
CHANGED
|
@@ -26,8 +26,12 @@ And then execute:
|
|
|
26
26
|
|
|
27
27
|
## Configuration
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
You have two options to notify a channel in Slack when you deploy:
|
|
30
|
+
|
|
31
|
+
1. Using *Incoming WebHooks* integration, offering more options but requires one of the five free integrations. This is the default option.
|
|
32
|
+
2. Using *Slackbot*, which will not use one of the five free integrations. Enable via the `:slack_via_slackbot` option.
|
|
33
|
+
|
|
34
|
+
In both case, you need to enable the integration inside Slack and get the token that will be needed later.
|
|
31
35
|
|
|
32
36
|
Require the library in your application's Capfile:
|
|
33
37
|
|
|
@@ -41,7 +45,7 @@ Set your team and token in your application's config/deploy.rb:
|
|
|
41
45
|
Optionally, override the other slack settings:
|
|
42
46
|
|
|
43
47
|
set :slack_icon_url, ->{ 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
|
|
44
|
-
set :slack_icon_emoji, ->{ nil } # will override icon_url
|
|
48
|
+
set :slack_icon_emoji, ->{ nil } # will override icon_url, Must be a string (ex: ':shipit:')
|
|
45
49
|
set :slack_channel, ->{ '#general' }
|
|
46
50
|
set :slack_username, ->{ 'Slackistrano' }
|
|
47
51
|
set :slack_run_starting, ->{ true }
|
|
@@ -50,6 +54,7 @@ Optionally, override the other slack settings:
|
|
|
50
54
|
set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
|
|
51
55
|
set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
|
|
52
56
|
set :slack_msg_failed, ->{ "*ERROR!* #{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}." }
|
|
57
|
+
set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
|
|
53
58
|
|
|
54
59
|
**Note**: You may wish to disable one of the notifications if another service (ex:
|
|
55
60
|
Honeybadger) also displays a deploy notification.
|
data/lib/slackistrano.rb
CHANGED
|
@@ -5,9 +5,17 @@ require 'json'
|
|
|
5
5
|
load File.expand_path("../slackistrano/tasks/slack.rake", __FILE__)
|
|
6
6
|
|
|
7
7
|
module Slackistrano
|
|
8
|
-
def self.post(team: nil, token: nil, payload: {})
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
def self.post(team: nil, token: nil, via_slackbot: false, payload: {})
|
|
9
|
+
if via_slackbot
|
|
10
|
+
uri = URI(URI.encode("https://#{team}.slack.com/services/hooks/slackbot?token=#{token}&channel=#{payload[:channel]}"))
|
|
11
|
+
|
|
12
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
|
13
|
+
response = http.request_post uri.request_uri, payload[:text]
|
|
14
|
+
end
|
|
15
|
+
else
|
|
16
|
+
uri = URI("https://#{team}.slack.com/services/hooks/incoming-webhook")
|
|
17
|
+
res = Net::HTTP.post_form(uri, 'token' => token, 'payload' => payload.to_json)
|
|
18
|
+
end
|
|
11
19
|
rescue => e
|
|
12
20
|
puts "There was an error notifying Slack."
|
|
13
21
|
puts e.inspect
|
|
@@ -8,6 +8,7 @@ namespace :slack do
|
|
|
8
8
|
Slackistrano.post(
|
|
9
9
|
team: fetch(:slack_team),
|
|
10
10
|
token: fetch(:slack_token),
|
|
11
|
+
via_slackbot: fetch(:slack_via_slackbot),
|
|
11
12
|
payload: {
|
|
12
13
|
channel: fetch(:slack_channel),
|
|
13
14
|
username: fetch(:slack_username),
|
|
@@ -26,6 +27,7 @@ namespace :slack do
|
|
|
26
27
|
Slackistrano.post(
|
|
27
28
|
team: fetch(:slack_team),
|
|
28
29
|
token: fetch(:slack_token),
|
|
30
|
+
via_slackbot: fetch(:slack_via_slackbot),
|
|
29
31
|
payload: {
|
|
30
32
|
channel: fetch(:slack_channel),
|
|
31
33
|
username: fetch(:slack_username),
|
|
@@ -44,12 +46,13 @@ namespace :slack do
|
|
|
44
46
|
Slackistrano.post(
|
|
45
47
|
team: fetch(:slack_team),
|
|
46
48
|
token: fetch(:slack_token),
|
|
49
|
+
via_slackbot: fetch(:slack_via_slackbot),
|
|
47
50
|
payload: {
|
|
48
51
|
channel: fetch(:slack_channel),
|
|
49
52
|
username: fetch(:slack_username),
|
|
50
53
|
icon_url: fetch(:slack_icon_url),
|
|
51
54
|
icon_emoji: fetch(:slack_icon_emoji),
|
|
52
|
-
text: fetch(:slack_msg_failed)
|
|
55
|
+
text: fetch(:slack_msg_failed),
|
|
53
56
|
}
|
|
54
57
|
)
|
|
55
58
|
end
|
|
@@ -77,5 +80,6 @@ namespace :load do
|
|
|
77
80
|
set :slack_msg_starting, ->{ "#{ENV['USER'] || ENV['USERNAME']} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
|
|
78
81
|
set :slack_msg_finished, ->{ "#{ENV['USER'] || ENV['USERNAME']} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
|
|
79
82
|
set :slack_msg_failed, ->{ "*ERROR!* #{ENV['USER'] || ENV['USERNAME']} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}." }
|
|
83
|
+
set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
|
|
80
84
|
end
|
|
81
85
|
end
|
data/lib/slackistrano/version.rb
CHANGED
data/spec/tasks_spec.rb
CHANGED
|
@@ -40,14 +40,15 @@ describe Slackistrano do
|
|
|
40
40
|
it "calls Slackistrano.post with all the right arguments on slack:deploy:#{stage}" do
|
|
41
41
|
set "slack_run_#{stage}".to_sym, ->{ true }
|
|
42
42
|
set :slack_team, ->{ 'team' }
|
|
43
|
-
set :slack_token, ->{ 'token' }
|
|
44
|
-
set :slack_channel, ->{ 'channel' }
|
|
43
|
+
set :slack_token, ->{ 'token' }
|
|
44
|
+
set :slack_channel, ->{ 'channel' }
|
|
45
45
|
set :slack_icon_url, ->{ 'http://icon.url' }
|
|
46
|
-
set :slack_icon_emoji, ->{ ':emoji:' }
|
|
47
|
-
set "slack_msg_#{stage}".to_sym, ->{ 'text message' }
|
|
46
|
+
set :slack_icon_emoji, ->{ ':emoji:' }
|
|
47
|
+
set "slack_msg_#{stage}".to_sym, ->{ 'text message' }
|
|
48
48
|
expect(Slackistrano).to receive(:post).with(
|
|
49
49
|
team: 'team',
|
|
50
50
|
token: 'token',
|
|
51
|
+
via_slackbot: false,
|
|
51
52
|
payload: {
|
|
52
53
|
channel: 'channel',
|
|
53
54
|
username: 'Slackistrano',
|
metadata
CHANGED
|
@@ -1,69 +1,69 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slackistrano
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Philip Hallstrom
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: capistrano
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: 3.0.1
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 3.0.1
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: json
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rspec
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
description: ''
|
|
@@ -73,8 +73,8 @@ executables: []
|
|
|
73
73
|
extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
|
75
75
|
files:
|
|
76
|
-
- .gitignore
|
|
77
|
-
- .travis.yml
|
|
76
|
+
- ".gitignore"
|
|
77
|
+
- ".travis.yml"
|
|
78
78
|
- Gemfile
|
|
79
79
|
- LICENSE.txt
|
|
80
80
|
- README.md
|
|
@@ -96,12 +96,12 @@ require_paths:
|
|
|
96
96
|
- lib
|
|
97
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
98
|
requirements:
|
|
99
|
-
- -
|
|
99
|
+
- - ">="
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
101
|
version: '0'
|
|
102
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
requirements:
|
|
104
|
-
- -
|
|
104
|
+
- - ">="
|
|
105
105
|
- !ruby/object:Gem::Version
|
|
106
106
|
version: '0'
|
|
107
107
|
requirements: []
|
|
@@ -114,4 +114,3 @@ test_files:
|
|
|
114
114
|
- spec/capistrano_deploy_stubs.rake
|
|
115
115
|
- spec/spec_helper.rb
|
|
116
116
|
- spec/tasks_spec.rb
|
|
117
|
-
has_rdoc:
|