mina-slack 0.1.0 → 1.0.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 +5 -5
- data/Gemfile +2 -0
- data/README.md +25 -3
- data/Rakefile +3 -1
- data/bin/console +8 -0
- data/lib/mina/slack.rb +2 -9
- data/lib/mina/slack/tasks.rb +33 -36
- data/lib/mina/slack/version.rb +3 -1
- data/mina-slack.gemspec +16 -16
- metadata +8 -21
- data/lib/mina/slack/defaults.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 87441ad7b8f3e6cd3b6d1bf04467806b7fbd66421a83ffb261411d0cd4a6dc0d
|
4
|
+
data.tar.gz: 9160c1b9654823e9559c68ab4e83bcbcdde1fc2df91f234c1f34fe1a2cb0ef1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53772965e7afb0e51e028a6a40f53c543fa933d230fa9a70ed009c910b3bb2e3dabfad47ff9461ddbd4fa4155321bc9d951cfc0fefcb7da166ec789d0cd486fd
|
7
|
+
data.tar.gz: 3b29853f6753f32d3fcb94d8e5abfcc31711b3fc38cb76cd5a77941173d47e2cf95908caef1baa5d07f6194070db822f5d0d49cfc86341a9ae57ac2606a2f5d3
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'mina-slack'
|
9
|
+
gem 'mina-slack', require: false
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
@@ -16,6 +16,10 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install mina-slack
|
18
18
|
|
19
|
+
mina 0.3.x:
|
20
|
+
|
21
|
+
gem 'mina-slack', '~> 0.3.0', require: false
|
22
|
+
|
19
23
|
In your slack settings, create new Incomming WebHooks and get WebHooks URL.
|
20
24
|
|
21
25
|
## Usage
|
@@ -23,8 +27,26 @@ In your slack settings, create new Incomming WebHooks and get WebHooks URL.
|
|
23
27
|
### Load the recipe
|
24
28
|
Include the recipe in your deploy.rb
|
25
29
|
|
26
|
-
|
27
|
-
|
30
|
+
```ruby
|
31
|
+
# config/deploy.rb
|
32
|
+
require 'mina/slack'
|
33
|
+
|
34
|
+
task :deploy do
|
35
|
+
deploy do
|
36
|
+
invoke :'slack:starting'
|
37
|
+
...
|
38
|
+
|
39
|
+
on :launch do
|
40
|
+
...
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
run(:local) do
|
45
|
+
invoke :'slack:finished'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
```
|
49
|
+
|
28
50
|
|
29
51
|
### Setup Slack Details
|
30
52
|
You'll need to setup your slack details with an API key, room and subdomain. You can add these as ENV variables or in the config/deploy.rb
|
data/Rakefile
CHANGED
data/bin/console
ADDED
data/lib/mina/slack.rb
CHANGED
data/lib/mina/slack/tasks.rb
CHANGED
@@ -1,79 +1,76 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'json'
|
3
4
|
require 'net/http'
|
4
|
-
|
5
|
-
# Before and after hooks for mina deploy
|
6
|
-
before_mina :deploy, :'slack:starting'
|
7
|
-
after_mina :deploy, :'slack:finished'
|
8
|
-
|
5
|
+
require 'mina'
|
9
6
|
|
10
7
|
# Slack tasks
|
11
8
|
namespace :slack do
|
9
|
+
# Required
|
10
|
+
set :slack_token, -> { ENV['SLACK_TOKEN'] }
|
11
|
+
set :slack_room, -> { ENV['SLACK_ROOM'] }
|
12
|
+
set :slack_subdomain, -> { ENV['SLACK_SUBDOMAIN'] }
|
13
|
+
# Optional
|
14
|
+
set :slack_stage, -> { ENV['SLACK_STAGE'] || fetch(:rails_env, 'production') }
|
15
|
+
set :slack_application, -> { ENV['SLACK_APPLICATION'] || fetch(:application_name) }
|
16
|
+
set :slack_username, -> { ENV['SLACK_USERNAME'] || 'deploybot' }
|
17
|
+
set :slack_emoji, -> { ENV['SLACK_EMOJI'] || ':cloud:' }
|
18
|
+
# Git
|
19
|
+
set :deployer, -> { ENV['GIT_AUTHOR_NAME'] || `git config user.name`.chomp }
|
20
|
+
set :deployed_revision, -> { ENV['GIT_COMMIT'] || `git rev-parse #{fetch(:branch)} | cut -c 1-7`.strip }
|
12
21
|
|
13
22
|
task :starting do
|
14
|
-
if slack_token
|
15
|
-
announcement = "#{
|
23
|
+
if fetch(:slack_token) && fetch(:slack_room) && fetch(:slack_subdomain)
|
24
|
+
announcement = "#{fetch(:deployer)} is deploying #{announced_application_name} to #{fetch(:slack_stage)}"
|
16
25
|
|
17
26
|
post_slack_message(announcement)
|
18
27
|
set(:start_time, Time.now)
|
19
28
|
else
|
20
|
-
|
29
|
+
print_error 'Unable to create Slack Announcement, no slack details provided.'
|
21
30
|
end
|
22
31
|
end
|
23
32
|
|
24
33
|
task :finished do
|
25
|
-
if slack_token
|
34
|
+
if fetch(:slack_token) && fetch(:slack_room) && fetch(:slack_subdomain)
|
26
35
|
end_time = Time.now
|
27
36
|
start_time = fetch(:start_time)
|
28
37
|
elapsed = end_time.to_i - start_time.to_i
|
29
38
|
|
30
|
-
announcement = "#{
|
39
|
+
announcement = "#{fetch(:deployer)} successfully deployed #{announced_application_name} in #{elapsed} seconds."
|
31
40
|
|
32
41
|
post_slack_message(announcement)
|
33
42
|
else
|
34
|
-
|
43
|
+
print_error 'Unable to create Slack Announcement, no slack details provided.'
|
35
44
|
end
|
36
45
|
end
|
37
46
|
|
38
|
-
|
39
|
-
def announced_stage
|
40
|
-
ENV['to'] || rails_env || 'production'
|
41
|
-
end
|
42
|
-
|
43
|
-
def announced_deployer
|
44
|
-
deployer
|
45
|
-
end
|
46
|
-
|
47
|
-
def short_revision
|
48
|
-
deployed_revision[0..7] if deployed_revision
|
49
|
-
end
|
50
|
-
|
51
47
|
def announced_application_name
|
52
|
-
|
53
|
-
output << slack_application
|
54
|
-
output << " #{branch}" if branch
|
55
|
-
output << " (#{
|
48
|
+
(+'').tap do |output|
|
49
|
+
output << fetch(:slack_application)
|
50
|
+
output << " #{fetch(:branch)}" if fetch(:branch)
|
51
|
+
output << " (#{fetch(:deployed_revision)})" if fetch(:deployed_revision)
|
56
52
|
end
|
57
53
|
end
|
58
54
|
|
59
55
|
def post_slack_message(message)
|
56
|
+
return if fetch(:simulate)
|
60
57
|
# Parse the URI and handle the https connection
|
61
|
-
uri = URI.parse("https://#{slack_subdomain}.slack.com/services/hooks/incoming-webhook?token=#{slack_token}")
|
58
|
+
uri = URI.parse("https://#{fetch(:slack_subdomain)}.slack.com/services/hooks/incoming-webhook?token=#{fetch(:slack_token)}")
|
62
59
|
http = Net::HTTP.new(uri.host, uri.port)
|
63
60
|
http.use_ssl = true
|
64
61
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
65
62
|
|
66
63
|
payload = {
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
64
|
+
'parse' => 'full',
|
65
|
+
'channel' => fetch(:slack_room),
|
66
|
+
'username' => fetch(:slack_username),
|
67
|
+
'text' => message,
|
68
|
+
'icon_emoji' => fetch(:slack_emoji)
|
72
69
|
}
|
73
70
|
|
74
71
|
# Create the post request and setup the form data
|
75
72
|
request = Net::HTTP::Post.new(uri.request_uri)
|
76
|
-
request.set_form_data(:
|
73
|
+
request.set_form_data(payload: payload.to_json)
|
77
74
|
|
78
75
|
# Make the actual request to the API
|
79
76
|
http.request(request)
|
data/lib/mina/slack/version.rb
CHANGED
data/mina-slack.gemspec
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'mina/slack/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.description
|
12
|
-
spec.summary
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
8
|
+
spec.name = 'mina-slack'
|
9
|
+
spec.version = Mina::Slack::VERSION
|
10
|
+
spec.authors = ['TAKAyuki_atkwsk', 'Marcos G. Zimmermann']
|
11
|
+
spec.email = ['takagi.takayuki.yuuki@gmail.com', 'mgzmaster@gmail.com']
|
12
|
+
spec.description = 'Slack web hook from mina'
|
13
|
+
spec.summary = 'Slack web hook from mina'
|
14
|
+
spec.homepage = 'https://github.com/TAKAyukiatkwsk/mina-slack'
|
15
|
+
spec.license = 'MIT'
|
15
16
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
20
21
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
|
+
spec.add_development_dependency 'rake'
|
23
24
|
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency "mina-hooks"
|
25
|
+
spec.add_dependency 'mina', '>= 1.0'
|
26
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mina-slack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAKAyuki_atkwsk
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -45,33 +45,20 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
48
|
+
version: '1.0'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: mina-hooks
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :runtime
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
55
|
+
version: '1.0'
|
70
56
|
description: Slack web hook from mina
|
71
57
|
email:
|
72
58
|
- takagi.takayuki.yuuki@gmail.com
|
73
59
|
- mgzmaster@gmail.com
|
74
|
-
executables:
|
60
|
+
executables:
|
61
|
+
- console
|
75
62
|
extensions: []
|
76
63
|
extra_rdoc_files: []
|
77
64
|
files:
|
@@ -80,8 +67,8 @@ files:
|
|
80
67
|
- LICENSE.txt
|
81
68
|
- README.md
|
82
69
|
- Rakefile
|
70
|
+
- bin/console
|
83
71
|
- lib/mina/slack.rb
|
84
|
-
- lib/mina/slack/defaults.rb
|
85
72
|
- lib/mina/slack/tasks.rb
|
86
73
|
- lib/mina/slack/version.rb
|
87
74
|
- mina-slack.gemspec
|
@@ -105,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
92
|
version: '0'
|
106
93
|
requirements: []
|
107
94
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
95
|
+
rubygems_version: 2.7.6
|
109
96
|
signing_key:
|
110
97
|
specification_version: 4
|
111
98
|
summary: Slack web hook from mina
|
data/lib/mina/slack/defaults.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# Required
|
2
|
-
set_default :slack_token, -> { ENV['SLACK_TOKEN'] }
|
3
|
-
set_default :slack_room, -> { ENV['SLACK_ROOM'] }
|
4
|
-
set_default :slack_subdomain, -> { ENV['SLACK_SUBDOMAIN'] }
|
5
|
-
# Optional
|
6
|
-
set_default :slack_stage, -> { ENV['SLACK_STAGE'] || fetch(:rails_env, 'production') }
|
7
|
-
set_default :slack_application, -> { ENV['SLACK_APPLICATION'] || application }
|
8
|
-
set_default :slack_username, -> { ENV['SLACK_USERNAME'] || 'deploybot' }
|
9
|
-
set_default :slack_emoji, -> { ENV['SLACK_EMOJI'] || ':cloud:' }
|
10
|
-
# Git
|
11
|
-
set_default :deployer, -> { ENV['GIT_AUTHOR_NAME'] || %x[git config user.name].chomp }
|
12
|
-
set_default :deployed_revision, -> { ENV['GIT_COMMIT'] || %x[git rev-parse #{branch}].strip }
|