lita-server_status 0.0.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -4
- data/lib/lita/handlers/server_status.rb +8 -23
- data/lita-server_status.gemspec +36 -19
- data/spec/lita/handlers/server_status_spec.rb +29 -54
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1226d985d6b1eb86a9ed1b5d82ce019436c658da
|
4
|
+
data.tar.gz: 5a8b71b67477c2fb77b31fa7489bf9f7f67ac8ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87842d2b63db2bc551e662dcd9334719a13cc99785aa905b5484ff568d810fa9740d5f7fee447c80c483139c22fd918034bc10fa15099f460bb7c36fbc9e8b06
|
7
|
+
data.tar.gz: a50708630cc97d605fa59f6f680a5896cf58ea38556bd7890d9eac67b1a663033e38f51738ce0bfdae0eb804388a5e94c61ff2349e59b9717f60a226e3238374
|
data/README.md
CHANGED
@@ -14,9 +14,15 @@ gem "lita-server_status"
|
|
14
14
|
|
15
15
|
No configuration variables needed.
|
16
16
|
|
17
|
-
Lita looks for strings following this regex: ```/(.+) is
|
17
|
+
Lita looks for strings following this regex: ```/(?::eyes:)*\s*(.+) is deploying (.+)\/(.+) to (.+)/i```
|
18
18
|
|
19
|
-
Which looks like:
|
19
|
+
Which looks like:
|
20
|
+
|
21
|
+
`:eyes: Tammy Tester is deploying App/Environment to BranchName`
|
22
|
+
|
23
|
+
or
|
24
|
+
|
25
|
+
`Tammy Tester is deploying App/Environment to BranchName`
|
20
26
|
|
21
27
|
## Usage
|
22
28
|
|
@@ -27,8 +33,8 @@ List out the server statuses.
|
|
27
33
|
## Output:
|
28
34
|
|
29
35
|
```
|
30
|
-
|
31
|
-
|
36
|
+
App STAGING: Branch (Tammy Tester @ 2014-07-24 12:10:54 -0600)
|
37
|
+
App PRODUCTION: Branch (Tammy Tester @ 2014-07-24 12:10:54 -0600)
|
32
38
|
```
|
33
39
|
|
34
40
|
## License
|
@@ -1,31 +1,16 @@
|
|
1
1
|
module Lita
|
2
2
|
module Handlers
|
3
3
|
class ServerStatus < Handler
|
4
|
-
MESSAGE_REGEX = /(.+) is deploying (.+)\/(.+) to (.+)
|
4
|
+
MESSAGE_REGEX = %r/(?::eyes:)*\s*(.+) is deploying (.+)\/(.+) to (.+)/i
|
5
5
|
route(MESSAGE_REGEX, :save_status)
|
6
6
|
|
7
|
-
route(/server status/i, :list_statuses, command: true,
|
8
|
-
|
9
|
-
|
7
|
+
route(/server status/i, :list_statuses, command: true, help: {
|
8
|
+
'server status' => 'List out the current server statuses.'
|
9
|
+
})
|
10
10
|
|
11
11
|
def save_status(response)
|
12
12
|
message = response.message.body
|
13
13
|
user, application, branch, environment = message.match(MESSAGE_REGEX).captures
|
14
|
-
|
15
|
-
apply_status = { id: "#{application}:#{environment}",
|
16
|
-
message: "#{application} #{environment}: #{branch} (#{user} @ #{formatted_time})" }
|
17
|
-
|
18
|
-
redis.set("server_status:#{apply_status[:id]}", apply_status[:message])
|
19
|
-
end
|
20
|
-
|
21
|
-
# we have to leave this statement here untill all apps are update to use new capistrano process
|
22
|
-
OLD_MESSAGE_REGEX = /(.+) is starting deploy of '(.+)' from branch '(.+)' to (.+)/i
|
23
|
-
route(OLD_MESSAGE_REGEX, :old_save_status)
|
24
|
-
|
25
|
-
def old_save_status(response)
|
26
|
-
message = response.message.body
|
27
|
-
user, application, branch, environment = message.match(OLD_MESSAGE_REGEX).captures
|
28
|
-
|
29
14
|
apply_status = { id: "#{application}:#{environment}",
|
30
15
|
message: "#{application} #{environment}: #{branch} (#{user} @ #{formatted_time})" }
|
31
16
|
|
@@ -37,13 +22,13 @@ module Lita
|
|
37
22
|
end
|
38
23
|
|
39
24
|
def status_message
|
40
|
-
messages = redis.keys(
|
41
|
-
messages <<
|
42
|
-
messages.join(
|
25
|
+
messages = redis.keys('server_status*').sort.map { |key| redis.get(key) }
|
26
|
+
messages << 'I don\'t know what state the servers are in.' if messages.empty?
|
27
|
+
messages.join('\n')
|
43
28
|
end
|
44
29
|
|
45
30
|
def formatted_time
|
46
|
-
Time.now.strftime(
|
31
|
+
Time.now.strftime('%Y-%m-%d %H:%M')
|
47
32
|
end
|
48
33
|
end
|
49
34
|
|
data/lita-server_status.gemspec
CHANGED
@@ -1,29 +1,46 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
4
|
-
spec.authors = [
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
spec.name = 'lita-server_status'
|
3
|
+
spec.version = '1.0.0'
|
4
|
+
spec.authors = [
|
5
|
+
'Michael van den Beuken',
|
6
|
+
'Ruben Estevez',
|
7
|
+
'Jordan Babe',
|
8
|
+
'Mathieu Gilbert',
|
9
|
+
'Ryan Jones',
|
10
|
+
'Darko Dosenovic',
|
11
|
+
'Jonathan Weyermann',
|
12
|
+
'Jesse Doyle',
|
13
|
+
'Zoie Carnegie'
|
14
|
+
]
|
15
|
+
spec.email = [
|
16
|
+
'michael.beuken@gmail.com',
|
17
|
+
'ruben.a.estevez@gmail.com',
|
18
|
+
'jorbabe@gmail.com',
|
19
|
+
'mathieu.gilbert@ama.ab.ca',
|
20
|
+
'ryan.michael.jones@gmail.com',
|
21
|
+
'darko.dosenovic@ama.ab.ca',
|
22
|
+
'Jonathan.Weyermann@ama.ab.ca',
|
23
|
+
'Jesse.Doyle@ama.ab.ca',
|
24
|
+
'zoie.carnegie@gmail.com'
|
25
|
+
]
|
9
26
|
spec.description = %q{Store and list out the statuses of applications}
|
10
27
|
spec.summary = %q{Store and list out the statuses of applications}
|
11
|
-
spec.homepage =
|
12
|
-
spec.license =
|
13
|
-
spec.metadata = {
|
28
|
+
spec.homepage = 'https://github.com/amaabca/lita-server_status'
|
29
|
+
spec.license = 'MIT'
|
30
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
14
31
|
|
15
32
|
spec.files = `git ls-files`.split($/)
|
16
33
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
34
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
35
|
+
spec.require_paths = ['lib']
|
19
36
|
|
20
|
-
spec.add_runtime_dependency
|
37
|
+
spec.add_runtime_dependency 'lita', '>= 3.3'
|
21
38
|
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
39
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
40
|
+
spec.add_development_dependency 'rake'
|
41
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
42
|
+
spec.add_development_dependency 'simplecov'
|
43
|
+
spec.add_development_dependency 'pry'
|
44
|
+
spec.add_development_dependency 'rspec-instafail'
|
45
|
+
spec.add_development_dependency 'timecop'
|
29
46
|
end
|
@@ -1,79 +1,54 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'timecop'
|
3
3
|
|
4
4
|
describe Lita::Handlers::ServerStatus, lita_handler: true do
|
5
|
-
let(:formatted_local_time) { Time.now.strftime(
|
5
|
+
let(:formatted_local_time) { Time.now.strftime('%Y-%m-%d %H:%M') }
|
6
6
|
|
7
7
|
before(:each) do
|
8
8
|
allow_any_instance_of(Lita::Handlers::ServerStatus).to receive(:formatted_time).and_return(formatted_local_time)
|
9
9
|
end
|
10
10
|
|
11
|
-
context
|
12
|
-
it { is_expected.to route(
|
13
|
-
it { is_expected.to route_command(
|
11
|
+
context 'New Slack messaging in place' do
|
12
|
+
it { is_expected.to route(':eyes: Bobby Marley is deploying fakeapp/staging to red_team_rocks').to(:save_status) }
|
13
|
+
it { is_expected.to route_command('server status').to(:list_statuses) }
|
14
14
|
|
15
|
-
it
|
15
|
+
it 'saves the server status' do
|
16
16
|
expect_any_instance_of(Lita::Handlers::ServerStatus).to receive(:save_status)
|
17
|
-
send_message(%{
|
17
|
+
send_message(%{:eyes: Bob Marley is deploying fakeapp/staging to red_team_rocks})
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
21
|
-
|
22
|
-
|
23
|
-
send_command("server status")
|
24
|
-
expect(replies.last).to include("fakeapp staging: master (Waffle McRib @ #{formatted_local_time})")
|
25
|
-
|
26
|
-
send_message(%{Waffle McRib is deploying fakeapp/waffle to production (production)})
|
27
|
-
send_command("server status")
|
28
|
-
expect(replies.last).to include("fakeapp production: waffle (Waffle McRib @ #{formatted_local_time})")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should list the current server statuses" do
|
33
|
-
Timecop.freeze(Time.now) do
|
34
|
-
send_message(%{Waffle McRib is deploying fakeapp/master to production (production)})
|
35
|
-
send_message(%{Waffle McRib is deploying batman/awesome to staging (production)})
|
36
|
-
send_command("server status")
|
37
|
-
expect(replies.last).to include("fakeapp production: master (Waffle McRib @ #{formatted_local_time})")
|
38
|
-
expect(replies.last).to include("batman staging: awesome (Waffle McRib @ #{formatted_local_time})")
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "Old HipCHat messaging still has been used in some apps" do
|
44
|
-
it { is_expected.to route("Waffle McRib is starting deploy of 'APPNAME' from branch 'MASTER' to PRODUCTION").to(:old_save_status) }
|
45
|
-
it { is_expected.to route_command("server status").to(:list_statuses) }
|
46
|
-
|
47
|
-
it "saves the server status" do
|
48
|
-
expect_any_instance_of(Lita::Handlers::ServerStatus).to receive(:old_save_status)
|
49
|
-
send_message(%{Waffle McRib is starting deploy of 'APPNAME' from branch 'MASTER' to PRODUCTION})
|
20
|
+
it 'saves the server status with no :eyes:' do
|
21
|
+
expect_any_instance_of(Lita::Handlers::ServerStatus).to receive(:save_status)
|
22
|
+
send_message(%{Bob Marley is deploying fakerapp/staging to red_team_rocks})
|
50
23
|
end
|
51
24
|
|
52
|
-
it
|
25
|
+
it 'update the server status if it changes' do
|
53
26
|
Timecop.freeze(Time.now) do
|
54
|
-
send_message(%{
|
55
|
-
send_command(
|
56
|
-
expect(replies.last).to include("
|
27
|
+
send_message(%{:eyes: Bob Marley is deploying fakeapp/staging to branchname_here})
|
28
|
+
send_command('server status')
|
29
|
+
expect(replies.last).to include("fakeapp branchname_here: staging (Bob Marley @ #{formatted_local_time})")
|
57
30
|
|
58
|
-
send_message(%{
|
59
|
-
send_command(
|
60
|
-
expect(replies.last).to include("
|
31
|
+
send_message(%{:eyes: Bob Marley is deploying fakeapp/staging to new_branch})
|
32
|
+
send_command('server status')
|
33
|
+
expect(replies.last).to include("fakeapp new_branch: staging (Bob Marley @ #{formatted_local_time})")
|
61
34
|
end
|
62
35
|
end
|
63
36
|
|
64
|
-
it
|
37
|
+
it 'should list the current server statuses' do
|
65
38
|
Timecop.freeze(Time.now) do
|
66
|
-
send_message(%{
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
39
|
+
send_message(%{:eyes: Bobby Marley is deploying fakeapp/staging to red_team_rocks})
|
40
|
+
send_command('server status')
|
41
|
+
expect(replies.last).to include("fakeapp red_team_rocks: staging (Bobby Marley @ #{formatted_local_time})")
|
42
|
+
|
43
|
+
send_message(%{:eyes: Bobby Marley is deploying fakeapp/production to red_team_rocks})
|
44
|
+
send_command('server status')
|
45
|
+
expect(replies.last).to include("fakeapp red_team_rocks: production (Bobby Marley @ #{formatted_local_time})")
|
71
46
|
end
|
72
47
|
end
|
73
48
|
end
|
74
49
|
|
75
|
-
it
|
76
|
-
send_command(
|
77
|
-
expect(replies.last).to eq(
|
50
|
+
it 'admits when there are no statuses' do
|
51
|
+
send_command('server status')
|
52
|
+
expect(replies.last).to eq('I don\'t know what state the servers are in.')
|
78
53
|
end
|
79
54
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-server_status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael van den Beuken
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date:
|
19
|
+
date: 2018-09-25 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: lita
|
@@ -140,7 +140,7 @@ email:
|
|
140
140
|
- darko.dosenovic@ama.ab.ca
|
141
141
|
- Jonathan.Weyermann@ama.ab.ca
|
142
142
|
- Jesse.Doyle@ama.ab.ca
|
143
|
-
-
|
143
|
+
- zoie.carnegie@gmail.com
|
144
144
|
executables:
|
145
145
|
- rake
|
146
146
|
extensions: []
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.6.14
|
185
185
|
signing_key:
|
186
186
|
specification_version: 4
|
187
187
|
summary: Store and list out the statuses of applications
|