capistrano-slack 1.2.0 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ec0db9a375284a3cfb3379723ddfbf3f94461ae
4
- data.tar.gz: 2089b0d0f090f461a608edc24fd1bb55fe32c80f
3
+ metadata.gz: e84c6de78edc23132c5d38111e07b8a2b6a97015
4
+ data.tar.gz: 9ac456ee75052c609d78c599302690961d97247d
5
5
  SHA512:
6
- metadata.gz: cd4230c910782bd74226bc0dbc76126f31cc5a8b151bd1f1da535425303f785a17835637159dca54d8f100610463b1b7f99280fd25e97465cdabd05fe64fb3bc
7
- data.tar.gz: 58eb76f2297d839a8c2b9d8b66d79c395e7818b373474cf5428adbf0f367d44818c03bffb74d702a512de89da55edab1a6092cf2a49b7f0cf068b58302a2445c
6
+ metadata.gz: 6852d59df25ecd50104bb4ade27f9b45a522dd6f6a44553a00beb2104c40b0be31b39f06d7c65ff9b7b24414853a631d27e7001c2fce42c9b405d94a4543ccf4
7
+ data.tar.gz: 65344352267ae66dd4be246cc5978c721a62b92d738eb3187f4cce027cfb0b6e542eeea4ca8c53f71f89a276f67a0b3a970b2915407eb81e27246799070155ab
data/Gemfile CHANGED
@@ -1,13 +1,3 @@
1
- source :gemcutter
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "capistrano", "< 3.0.0"
4
- gem "capistrano-log_with_awesome", "~> 0.0.2"
5
-
6
- group :development do
7
- gem "rspec", ">= 2.5.0"
8
- gem "bundler", ">= 1.0.9"
9
- gem "jeweler", "~> 1.8.0"
10
- gem "capistrano-spec"
11
- gem "yard"
12
- gem "bluecloth" # for README.markdown
13
- end
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,74 +1,92 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ capistrano-slack (1.2.0)
5
+ activesupport (>= 3)
6
+ capistrano (~> 2.15.5)
7
+ capistrano-log_with_awesome (~> 0.0.2)
8
+
1
9
  GEM
2
- remote: http://rubygems.org/
10
+ remote: https://rubygems.org/
3
11
  specs:
12
+ activesupport (4.1.0)
13
+ i18n (~> 0.6, >= 0.6.9)
14
+ json (~> 1.7, >= 1.7.7)
15
+ minitest (~> 5.1)
16
+ thread_safe (~> 0.1)
17
+ tzinfo (~> 1.1)
18
+ addressable (2.3.6)
4
19
  bluecloth (2.2.0)
5
- capistrano (2.13.4)
20
+ builder (3.2.2)
21
+ capistrano (2.15.5)
6
22
  highline
7
23
  net-scp (>= 1.0.0)
8
24
  net-sftp (>= 2.0.0)
9
25
  net-ssh (>= 2.0.14)
10
26
  net-ssh-gateway (>= 1.1.0)
11
- capistrano-campfire (0.2.0)
12
- capistrano
13
- tinder
14
27
  capistrano-log_with_awesome (0.0.2)
15
28
  capistrano (>= 2.5.14)
16
- capistrano-spec (0.1.0)
17
- diff-lcs (1.1.3)
18
- eventmachine (1.0.0)
19
- faraday (0.8.4)
20
- multipart-post (~> 1.1)
21
- faraday_middleware (0.8.8)
22
- faraday (>= 0.7.4, < 0.9)
23
- git (1.2.5)
24
- hashie (1.2.0)
25
- highline (1.6.15)
26
- http_parser.rb (0.5.3)
27
- jeweler (1.8.4)
29
+ capistrano-spec (0.6.3)
30
+ diff-lcs (1.2.5)
31
+ faraday (0.8.9)
32
+ multipart-post (~> 1.2.0)
33
+ git (1.2.6)
34
+ github_api (0.10.1)
35
+ addressable
36
+ faraday (~> 0.8.1)
37
+ hashie (>= 1.2)
38
+ multi_json (~> 1.4)
39
+ nokogiri (~> 1.5.2)
40
+ oauth2
41
+ hashie (2.1.1)
42
+ highline (1.6.21)
43
+ i18n (0.6.9)
44
+ jeweler (1.8.8)
45
+ builder
28
46
  bundler (~> 1.0)
29
47
  git (>= 1.2.5)
48
+ github_api (= 0.10.1)
49
+ highline (>= 1.6.15)
50
+ nokogiri (= 1.5.10)
30
51
  rake
31
52
  rdoc
32
- jruby-pageant (1.1.1)
33
- json (1.7.5)
34
- mime-types (1.19)
35
- multi_json (1.3.6)
36
- multipart-post (1.1.5)
37
- net-scp (1.0.4)
38
- net-ssh (>= 1.99.1)
39
- net-sftp (2.0.5)
40
- net-ssh (>= 2.0.9)
41
- net-ssh (2.6.0)
42
- jruby-pageant (>= 1.1.1)
43
- net-ssh-gateway (1.1.0)
44
- net-ssh (>= 1.99.1)
45
- rake (0.9.2.2)
46
- rdoc (3.12)
53
+ json (1.8.1)
54
+ jwt (0.1.11)
55
+ multi_json (>= 1.5)
56
+ minitest (5.3.3)
57
+ multi_json (1.9.2)
58
+ multi_xml (0.5.5)
59
+ multipart-post (1.2.0)
60
+ net-scp (1.2.0)
61
+ net-ssh (>= 2.6.5)
62
+ net-sftp (2.1.2)
63
+ net-ssh (>= 2.6.5)
64
+ net-ssh (2.8.0)
65
+ net-ssh-gateway (1.2.0)
66
+ net-ssh (>= 2.6.5)
67
+ nokogiri (1.5.10)
68
+ oauth2 (0.9.3)
69
+ faraday (>= 0.8, < 0.10)
70
+ jwt (~> 0.1.8)
71
+ multi_json (~> 1.3)
72
+ multi_xml (~> 0.5)
73
+ rack (~> 1.2)
74
+ rack (1.5.2)
75
+ rake (10.3.1)
76
+ rdoc (4.1.1)
47
77
  json (~> 1.4)
48
- rspec (2.11.0)
49
- rspec-core (~> 2.11.0)
50
- rspec-expectations (~> 2.11.0)
51
- rspec-mocks (~> 2.11.0)
52
- rspec-core (2.11.1)
53
- rspec-expectations (2.11.3)
54
- diff-lcs (~> 1.1.3)
55
- rspec-mocks (2.11.3)
56
- simple_oauth (0.1.9)
57
- tinder (1.9.1)
58
- eventmachine (>= 0.12.0, < 2)
59
- faraday (~> 0.8)
60
- faraday_middleware (~> 0.8)
61
- hashie (~> 1.0)
62
- json (~> 1.6)
63
- mime-types (~> 1.16)
64
- multi_json (~> 1.0)
65
- multipart-post (~> 1.1)
66
- twitter-stream (~> 0.1)
67
- twitter-stream (0.1.16)
68
- eventmachine (>= 0.12.8)
69
- http_parser.rb (~> 0.5.1)
70
- simple_oauth (~> 0.1.4)
71
- yard (0.8.3)
78
+ rspec (2.14.1)
79
+ rspec-core (~> 2.14.0)
80
+ rspec-expectations (~> 2.14.0)
81
+ rspec-mocks (~> 2.14.0)
82
+ rspec-core (2.14.8)
83
+ rspec-expectations (2.14.5)
84
+ diff-lcs (>= 1.1.3, < 2.0)
85
+ rspec-mocks (2.14.6)
86
+ thread_safe (0.3.3)
87
+ tzinfo (1.1.0)
88
+ thread_safe (~> 0.1)
89
+ yard (0.8.7.4)
72
90
 
73
91
  PLATFORMS
74
92
  ruby
@@ -76,9 +94,7 @@ PLATFORMS
76
94
  DEPENDENCIES
77
95
  bluecloth
78
96
  bundler (>= 1.0.9)
79
- capistrano
80
- capistrano-campfire (~> 0.2.0)
81
- capistrano-log_with_awesome (~> 0.0.2)
97
+ capistrano-slack!
82
98
  capistrano-spec
83
99
  jeweler (~> 1.8.0)
84
100
  rspec (>= 2.5.0)
data/README.markdown CHANGED
@@ -1,7 +1,18 @@
1
1
  # Capistrano Slack
2
2
 
3
- Push deployment messages to Slack
3
+ ## Install
4
4
 
5
+ Best way to install Capistrano Slack intergration is via Bundler.
6
+
7
+ Add the following to your Gemfile, then run the `bundle` command to install the gem direct from the git repository
8
+
9
+ ```
10
+ gem 'capistrano-slack', :git => 'https://github.com/j-mcnally/capistrano-slack.git'
11
+ ```
12
+
13
+ Once installed you can use the settings below in your Capistrano deploy.rb to configure Slack.
14
+
15
+ ## Push deployment messages to Slack
5
16
 
6
17
  ```ruby
7
18
 
@@ -16,4 +27,10 @@ set :slack_subdomain, "kohactive" # if your subdomain is kohactive.slack.com
16
27
  set :slack_application, "Rocketman"
17
28
  set :slack_username, "Elton John"
18
29
  set :slack_emoji, ":rocket:"
30
+ set :slack_application_url, "http://my-awesome-app.example.com"
31
+ # set(:slack_application_url) { "http://{ fetch :domain_aliases }" }
19
32
  ```
33
+
34
+ You can obtain your `webhook_token` from the integrations section of the team page in Slack.
35
+
36
+ https://kohactive.slack.com/services/new/incoming-webhook (if your subdomain is kohactive.slack.com)
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "capistrano-slack"
8
- s.version = "1.2.0"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Joshua Nichols", "Justin McNally"]
@@ -36,37 +36,15 @@ Gem::Specification.new do |s|
36
36
  s.rubygems_version = "1.8.23"
37
37
  s.summary = "Announce capistrano deploys to slack"
38
38
 
39
- if s.respond_to? :specification_version then
40
- s.specification_version = 3
39
+ s.add_dependency(%q<capistrano>, ["~> 2.15.5"])
40
+ s.add_dependency(%q<capistrano-log_with_awesome>, ["~> 0.0.2"])
41
+ s.add_dependency(%q<activesupport>, [">= 3"])
42
+ s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
43
+ s.add_development_dependency(%q<bundler>, [">= 1.0.9"])
44
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.0"])
45
+ s.add_development_dependency(%q<capistrano-spec>, [">= 0"])
46
+ s.add_development_dependency(%q<yard>, [">= 0"])
47
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
41
48
 
42
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
- s.add_runtime_dependency(%q<capistrano>, ["< 3.0.0"])
44
- s.add_runtime_dependency(%q<capistrano-log_with_awesome>, ["~> 0.0.2"])
45
- s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
46
- s.add_development_dependency(%q<bundler>, [">= 1.0.9"])
47
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.0"])
48
- s.add_development_dependency(%q<capistrano-spec>, [">= 0"])
49
- s.add_development_dependency(%q<yard>, [">= 0"])
50
- s.add_development_dependency(%q<bluecloth>, [">= 0"])
51
- else
52
- s.add_dependency(%q<capistrano>, ["< 3.0.0"])
53
- s.add_dependency(%q<capistrano-log_with_awesome>, ["~> 0.0.2"])
54
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
55
- s.add_dependency(%q<bundler>, [">= 1.0.9"])
56
- s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
57
- s.add_dependency(%q<capistrano-spec>, [">= 0"])
58
- s.add_dependency(%q<yard>, [">= 0"])
59
- s.add_dependency(%q<bluecloth>, [">= 0"])
60
- end
61
- else
62
- s.add_dependency(%q<capistrano>, ["< 3.0.0"])
63
- s.add_dependency(%q<capistrano-log_with_awesome>, ["~> 0.0.2"])
64
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
65
- s.add_dependency(%q<bundler>, [">= 1.0.9"])
66
- s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
67
- s.add_dependency(%q<capistrano-spec>, [">= 0"])
68
- s.add_dependency(%q<yard>, [">= 0"])
69
- s.add_dependency(%q<bluecloth>, [">= 0"])
70
- end
71
49
  end
72
50
 
@@ -2,6 +2,7 @@ require 'capistrano'
2
2
  require 'capistrano/log_with_awesome'
3
3
  require 'json'
4
4
  require 'net/http'
5
+ require 'active_support/all'
5
6
  # TODO need to handle loading a bit beter. these would load into the instance if it's defined
6
7
  module Capistrano
7
8
  module Slack
@@ -9,15 +10,21 @@ module Capistrano
9
10
  configuration.load do
10
11
 
11
12
  before 'deploy', 'slack:starting'
12
- before 'deploy:migrations', 'slack:starting'
13
+ before 'deploy:migrations', 'slack:configure_for_migrations', 'slack:starting'
13
14
  after 'deploy', 'slack:finished'
15
+ after 'deploy:migrations', 'slack:configure_for_migrations', 'slack:finished'
14
16
 
15
17
  set :deployer do
16
18
  ENV['GIT_AUTHOR_NAME'] || `git config user.name`.chomp
17
19
  end
20
+ set :slack_with_migrations, false
18
21
 
19
22
 
20
23
  namespace :slack do
24
+ task :configure_for_migrations do
25
+ set :slack_with_migrations, true
26
+ end
27
+
21
28
  task :starting do
22
29
  slack_token = fetch(:slack_token)
23
30
  slack_room = fetch(:slack_room)
@@ -25,22 +32,25 @@ module Capistrano
25
32
  slack_username = fetch(:slack_username) || "deploybot"
26
33
  slack_application = fetch(:slack_application) || application
27
34
  slack_subdomain = fetch(:slack_subdomain)
35
+ slack_application_url = fetch(:slack_application_url, nil)
28
36
  return if slack_token.nil?
29
- announced_deployer = fetch(:deployer)
30
- announced_stage = fetch(:stage, 'production')
37
+ announced_deployer = ActiveSupport::Multibyte::Chars.new(fetch(:deployer)).mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
38
+ announced_stage = slack_application_url || fetch(:stage, 'production')
31
39
 
32
40
  announcement = if fetch(:branch, nil)
33
- "#{announced_deployer} is deploying #{slack_application}'s #{branch} to #{announced_stage}"
41
+ "#{announced_deployer} is deploying #{slack_application}'s #{branch}"
34
42
  else
35
- "#{announced_deployer} is deploying #{slack_application} to #{announced_stage}"
43
+ "#{announced_deployer} is deploying #{slack_application}"
36
44
  end
37
-
45
+ announcement << " with migrations" if slack_with_migrations
46
+ announcement << " to #{announced_stage}"
47
+
38
48
 
39
49
  # Parse the API url and create an SSL connection
40
50
  uri = URI.parse("https://#{slack_subdomain}.slack.com/services/hooks/incoming-webhook?token=#{slack_token}")
41
51
  http = Net::HTTP.new(uri.host, uri.port)
42
52
  http.use_ssl = true
43
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
53
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
44
54
 
45
55
  # Create the post request and setup the form data
46
56
  request = Net::HTTP::Post.new(uri.request_uri)
@@ -57,15 +67,26 @@ module Capistrano
57
67
  begin
58
68
  slack_token = fetch(:slack_token)
59
69
  slack_room = fetch(:slack_room)
70
+ slack_emoji = fetch(:slack_emoji) || ":ghost:"
71
+ slack_username = fetch(:slack_username) || "deploybot"
72
+ slack_application = fetch(:slack_application) || application
60
73
  slack_subdomain = fetch(:slack_subdomain)
74
+ slack_application_url = fetch(:slack_application_url, nil)
61
75
  return if slack_token.nil?
62
76
  announced_deployer = fetch(:deployer)
77
+ announced_stage = slack_application_url || fetch(:stage, 'production')
63
78
  end_time = Time.now
64
79
  start_time = fetch(:start_time)
65
80
  elapsed = end_time.to_i - start_time.to_i
66
-
67
- msg = "#{announced_deployer} deployed #{application} successfully in #{elapsed} seconds."
68
-
81
+
82
+ msg = if fetch(:branch, nil)
83
+ "#{announced_deployer} deployed #{slack_application}'s #{branch}"
84
+ else
85
+ "#{announced_deployer} deployed #{slack_application}"
86
+ end
87
+ msg << " with migrations" if slack_with_migrations
88
+ msg << " to #{announced_stage} successfully in #{elapsed} seconds"
89
+
69
90
  # Parse the URI and handle the https connection
70
91
  uri = URI.parse("https://#{slack_subdomain}.slack.com/services/hooks/incoming-webhook?token=#{slack_token}")
71
92
  http = Net::HTTP.new(uri.host, uri.port)
@@ -74,8 +95,8 @@ module Capistrano
74
95
 
75
96
  # Create the post request and setup the form data
76
97
  request = Net::HTTP::Post.new(uri.request_uri)
77
- request.set_form_data(:payload => {'channel' => slack_room, 'username' => 'deploybot', 'text' => msg, "icon_emoji" => ":ghost:"}.to_json)
78
-
98
+ request.set_form_data(:payload => {'channel' => slack_room, 'username' => slack_username, 'text' => msg, "icon_emoji" => slack_emoji}.to_json)
99
+
79
100
  # Make the actual request to the API
80
101
  response = http.request(request)
81
102
 
@@ -93,4 +114,3 @@ end
93
114
  if Capistrano::Configuration.instance
94
115
  Capistrano::Configuration.instance.extend(Capistrano::Slack)
95
116
  end
96
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-slack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Nichols
@@ -15,16 +15,16 @@ dependencies:
15
15
  name: capistrano
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - <
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 3.0.0
20
+ version: 2.15.5
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - <
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 3.0.0
27
+ version: 2.15.5
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: capistrano-log_with_awesome
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.0.2
42
+ - !ruby/object:Gem::Dependency
43
+ name: activesupport
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '3'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '3'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rspec
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -163,9 +177,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
177
  version: '0'
164
178
  requirements: []
165
179
  rubyforge_project:
166
- rubygems_version: 2.1.10
180
+ rubygems_version: 2.2.2
167
181
  signing_key:
168
- specification_version: 3
182
+ specification_version: 4
169
183
  summary: Announce capistrano deploys to slack
170
184
  test_files: []
171
185
  has_rdoc: