capistrano-hook 0.2.0 → 0.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: 1ae3585f41ea69167d0bc3ebd77ee93d38f5ce89
4
- data.tar.gz: e0d3e0a4c702b40b1aef4712ed6a1c1ceca456e7
3
+ metadata.gz: c6734a63af83178f4c7b8199305e4a70aa5e4f31
4
+ data.tar.gz: c4b53ab0c45b1874b7b2a9d7283404626407f1a4
5
5
  SHA512:
6
- metadata.gz: 51f678aa09aa2068ea691515a6d67fd6513b3211c439d12c4dc62ed6f9bf20d3ed98b661005cb2f482540b969fad856850c953f7dd7fefca3576937b294e3aec
7
- data.tar.gz: bd50536bc35fffe3dc6190d4b05c6088d67dfe59ec498b8ada73c1f947bf50d6479d61fc65223400ba0c3c39637cd690e0493b13ff917d511fea136a765ec53f
6
+ metadata.gz: 4621f0f1b45015a06115978e31ce8333871db88fae44ad8f59ff40efce5adc516d5aa86c7357ad237abdf2d17e9c8d46a1a3c9fb3a60b59d1eeec8697217f378
7
+ data.tar.gz: 44be5d2351f624f3314638837899e3806bb66ee83a8c06ec5245ff3283332ff8bf9de264eec3cbcc3abb634087fca346efdd645d23f33ed0dd2b8ec8b90478ee
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/capistrano-hook.svg)](http://badge.fury.io/rb/capistrano-hook)
4
4
  [![Build Status](https://travis-ci.org/yulii/capistrano-hook.svg)](https://travis-ci.org/yulii/capistrano-hook)
5
+ [![Code Climate](https://codeclimate.com/github/yulii/capistrano-hook/badges/gpa.svg)](https://codeclimate.com/github/yulii/capistrano-hook)
5
6
  [![Dependency Status](https://gemnasium.com/yulii/capistrano-hook.svg)](https://gemnasium.com/yulii/capistrano-hook)
6
7
 
7
8
  Notification hooks include start, finish and fail of deployments.
@@ -25,18 +26,30 @@ require 'capistrano/hook'
25
26
  Capistrano hook will not be run with no settings. You can setting the variables shown below.
26
27
 
27
28
  ```ruby
28
- set :webhook_url, 'http://hooks.yulii.net/services'
29
- set :webhook_starting_payload, { text: 'Now, deploying...' }
30
- set :webhook_finished_payload, { text: 'Deployment has been completed!' }
31
- set :webhook_failed_payload, { text: 'Oops! something went wrong.' }
29
+ set :webhook_url, 'https://yulii.github.io/services'
30
+ set :webhook_starting_payload, { text: 'Now, deploying...' }
31
+ set :webhook_finished_payload, { text: 'Deployment has been completed!' }
32
+ set :webhook_failed_payload, { text: 'Oops! something went wrong.' }
33
+ set :webhook_reverting_payload, { text: 'Reverting...' }
34
+ set :webhook_rollbacked_payload, { text: 'Rollback has been completed!' }
32
35
  ```
33
36
 
37
+ Test your setup by running:
38
+ ```
39
+ cap production webhook:post:starting
40
+ cap production webhook:post:finished
41
+ cap production webhook:post:failed
42
+ cap production webhook:post:reverting
43
+ cap production webhook:post:rollbacked
44
+ ```
45
+
46
+
34
47
  ### Slack
35
48
 
36
- Create incoming webhooks into Slack.
49
+ Send notifications to Slack via incoming webhooks.
37
50
 
38
51
  ```ruby
39
- set :webhook_url, 'http://hooks.yulii.net/services'
52
+ set :webhook_url, 'https://yulii.github.io/services'
40
53
  set :webhook_starting_payload, {
41
54
  username: 'Capistrano',
42
55
  icon_emoji: ':monkey_face:',
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['yulii']
10
10
  spec.email = ['yone.info@gmail.com']
11
11
 
12
- spec.summary = 'Simple hooks for Capistrano deployments.'
12
+ spec.summary = 'Simple webhooks for Capistrano deployments.'
13
13
  spec.description = 'Notification hooks include start, finish and fail of deployments.'
14
14
  spec.homepage = 'https://github.com/yulii/capistrano-hook'
15
15
  spec.license = 'MIT'
@@ -25,6 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'rake', '~> 10.0'
26
26
  spec.add_development_dependency 'minitest'
27
27
  spec.add_development_dependency 'minitest-reporters'
28
- spec.add_development_dependency 'webmock'
29
28
  spec.add_development_dependency 'rubocop'
30
29
  end
@@ -21,10 +21,12 @@
21
21
 
22
22
  # Configuration
23
23
  # =============
24
- set :webhook_url, 'https://yulii.github.io'
25
- set :webhook_starting_payload, text: '[production] Now, deploying...'
26
- set :webhook_finished_payload, text: '[production] Deployment has been completed!'
27
- set :webhook_failed_payload, text: '[production] Oops! something went wrong.'
24
+ set :webhook_url, MOCK_URL[(ENV['STATUS_CODE'] || '200')]
25
+ set :webhook_starting_payload, text: '[production] Now, deploying...'
26
+ set :webhook_finished_payload, text: '[production] Deployment has been completed!'
27
+ set :webhook_failed_payload, text: '[production] Oops! something went wrong.'
28
+ set :webhook_reverting_payload, text: '[production] Reverting...'
29
+ set :webhook_rollbacked_payload, text: '[production] Rollback has been completed!'
28
30
 
29
31
  # The server-based syntax can be used to override options:
30
32
  # ------------------------------------
data/config/deploy.rb CHANGED
@@ -12,6 +12,12 @@ set :log_level, :debug
12
12
 
13
13
  set :keep_releases, 5
14
14
 
15
+ # API Mock URL
16
+ MOCK_URL = {
17
+ '200' => 'http://www.mocky.io/v2/55d33a90ec91e92b0e5e8e18',
18
+ '406' => 'http://www.mocky.io/v2/55d6557a54774eed102a494c'
19
+ }
20
+
15
21
  namespace :deploy do
16
22
  after :restart, :clear_cache do
17
23
  on roles(:web), in: :groups, limit: 3, wait: 10 do
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Hook
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
@@ -5,14 +5,24 @@ namespace :webhook do
5
5
  You can setting the variables shown below.
6
6
 
7
7
  set :webhook_url, 'https://yulii.github.io'
8
- set :webhook_starting_payload, { text: 'Now, deploying...' }
9
- set :webhook_finished_payload, { text: 'Deployment has been completed!' }
10
- set :webhook_failed_payload, { text: 'Oops! something went wrong.' }
8
+ set :webhook_starting_payload, { text: 'Now, deploying...' }
9
+ set :webhook_finished_payload, { text: 'Deployment has been completed!' }
10
+ set :webhook_failed_payload, { text: 'Oops! something went wrong.' }
11
+ set :webhook_reverting_payload, { text: 'Reverting...' }
12
+ set :webhook_rollbacked_payload, { text: 'Rollback has been completed!' }
11
13
 
12
14
  DESC
13
15
 
14
- def response_message(result, params)
15
- "POST webhook HTTP #{result.code} #{result.message} body='#{result.body}' payload=#{params}"
16
+ def webhook(url, payload)
17
+ return if url.nil? || payload.nil? || payload.empty?
18
+ info "POST #{url} payload='#{payload}'"
19
+ result = Capistrano::Hook::Web.client(url).post(payload)
20
+ message = "HTTP #{result.code} #{result.message} body='#{result.body}'; "
21
+ if result.is_a?(Net::HTTPSuccess)
22
+ info message
23
+ else
24
+ error message
25
+ end
16
26
  end
17
27
 
18
28
  namespace :post do
@@ -20,17 +30,7 @@ namespace :webhook do
20
30
  run_locally do
21
31
  url = fetch(:webhook_url)
22
32
  payload = fetch(:webhook_starting_payload)
23
- next if payload.nil? || payload.empty?
24
- begin
25
- result = Capistrano::Hook::Web.client(url).post(payload)
26
- if result.is_a?(Net::HTTPSuccess)
27
- info response_message(result, payload)
28
- else
29
- error response_message(result, payload)
30
- end
31
- rescue StandardError => e
32
- error "[webhook:post:starting] #{e.class} #{e.message}"
33
- end
33
+ webhook(url, payload)
34
34
  end
35
35
  end
36
36
 
@@ -38,17 +38,7 @@ namespace :webhook do
38
38
  run_locally do
39
39
  url = fetch(:webhook_url)
40
40
  payload = fetch(:webhook_finished_payload)
41
- next if payload.nil? || payload.empty?
42
- begin
43
- result = Capistrano::Hook::Web.client(url).post(payload)
44
- if result.is_a?(Net::HTTPSuccess)
45
- info response_message(result, payload)
46
- else
47
- error response_message(result, payload)
48
- end
49
- rescue StandardError => e
50
- error "[webhook:post:finishing] #{e.class} #{e.message}"
51
- end
41
+ webhook(url, payload)
52
42
  end
53
43
  end
54
44
 
@@ -56,22 +46,30 @@ namespace :webhook do
56
46
  run_locally do
57
47
  url = fetch(:webhook_url)
58
48
  payload = fetch(:webhook_failed_payload)
59
- next if payload.nil? || payload.empty?
60
- begin
61
- result = Capistrano::Hook::Web.client(url).post(payload)
62
- if result.is_a?(Net::HTTPSuccess)
63
- info response_message(result, payload)
64
- else
65
- error response_message(result, payload)
66
- end
67
- rescue StandardError => e
68
- error "[webhook:post:failed] #{e.class} #{e.message}"
69
- end
49
+ webhook(url, payload)
50
+ end
51
+ end
52
+
53
+ task :reverting do
54
+ run_locally do
55
+ url = fetch(:webhook_url)
56
+ payload = fetch(:webhook_reverting_payload)
57
+ webhook(url, payload)
58
+ end
59
+ end
60
+
61
+ task :rollbacked do
62
+ run_locally do
63
+ url = fetch(:webhook_url)
64
+ payload = fetch(:webhook_rollbacked_payload)
65
+ webhook(url, payload)
70
66
  end
71
67
  end
72
68
 
73
- before 'deploy:starting', 'webhook:post:starting'
74
- after 'deploy:finishing', 'webhook:post:finished'
75
- after 'deploy:failed', 'webhook:post:failed'
69
+ before 'deploy:starting', 'webhook:post:starting'
70
+ after 'deploy:finishing', 'webhook:post:finished'
71
+ after 'deploy:failed', 'webhook:post:failed'
72
+ before 'deploy:reverting', 'webhook:post:reverting'
73
+ after 'deploy:finishing_rollback', 'webhook:post:rollbacked'
76
74
  end
77
75
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-hook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yulii
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-09 00:00:00.000000000 Z
11
+ date: 2015-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: webmock
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rubocop
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -160,5 +146,5 @@ rubyforge_project:
160
146
  rubygems_version: 2.4.5
161
147
  signing_key:
162
148
  specification_version: 4
163
- summary: Simple hooks for Capistrano deployments.
149
+ summary: Simple webhooks for Capistrano deployments.
164
150
  test_files: []