capistrano-slack 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: