lita-jenkins 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +24 -3
- data/lib/lita/handlers/jenkins.rb +40 -1
- data/lita-jenkins.gemspec +2 -2
- data/spec/lita/handlers/jenkins_spec.rb +38 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1a54f7b723546940928e9bef5ce8c5dfa1d94da
|
4
|
+
data.tar.gz: 632b837dece082dd95c84e04d7946813f5db6370
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96f618e1cd4d601018fd51542958a23d31a65445a5b44d3b6269c1f781146c0d1d586f4eec2170a40474c0ed9956a6db978f108a8bc2324d2b3f64fe0fa0968c
|
7
|
+
data.tar.gz: 6d77af3b63676f3649da534c792b5d785f7280de712a2e935a95a5ddee9082b24a64b083761d73855a09f4bec1402b0c119a462a92202b32084018d472148e86
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# lita-jenkins
|
2
2
|
|
3
|
-
|
3
|
+
Interact with your Jenkins CI server
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -12,11 +12,32 @@ gem "lita-jenkins"
|
|
12
12
|
|
13
13
|
## Configuration
|
14
14
|
|
15
|
-
|
15
|
+
### Required attributes
|
16
|
+
|
17
|
+
* `url` (String) - Your Jenkins CI url. Default: `nil`.
|
18
|
+
|
19
|
+
### Example
|
20
|
+
|
21
|
+
``` ruby
|
22
|
+
Lita.configure do |config|
|
23
|
+
config.handlers.jenkins.url = "http://test.com"
|
24
|
+
end
|
25
|
+
```
|
16
26
|
|
17
27
|
## Usage
|
18
28
|
|
19
|
-
|
29
|
+
```
|
30
|
+
[You] Lita: jenkins list
|
31
|
+
[Lita]
|
32
|
+
[1] DISA chef_converge
|
33
|
+
[2] SUCC deploy
|
34
|
+
[3] FAIL build-all
|
35
|
+
|
36
|
+
[You] Lita: jenkins list fail
|
37
|
+
[Lita]
|
38
|
+
[3] FAIL build-all
|
39
|
+
```
|
40
|
+
```
|
20
41
|
|
21
42
|
## License
|
22
43
|
|
@@ -1,12 +1,51 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
1
3
|
module Lita
|
2
4
|
module Handlers
|
3
5
|
class Jenkins < Handler
|
6
|
+
def self.default_config(config)
|
7
|
+
config.url = nil
|
8
|
+
end
|
9
|
+
|
4
10
|
route /j(?:enkins)? list( (.+))?/i, :jenkins_list, command: true, help: {
|
5
11
|
'jekins list <filter>' => 'lists Jenkins jobs'
|
6
12
|
}
|
7
13
|
|
8
14
|
def jenkins_list(response)
|
9
|
-
|
15
|
+
url = Lita.config.handlers.jenkins.url
|
16
|
+
path = "#{url}/api/json"
|
17
|
+
filter = response.matches.first.last
|
18
|
+
|
19
|
+
api_response = http.get(path)
|
20
|
+
parsed_response = JSON.parse(api_response.body)
|
21
|
+
reply = ''
|
22
|
+
|
23
|
+
parsed_response['jobs'].each_with_index do |job, i|
|
24
|
+
job_name = job['name']
|
25
|
+
state = color_to_state(job['color'])
|
26
|
+
text_to_check = state + job_name
|
27
|
+
|
28
|
+
reply << "[#{i+1}] #{state} #{job_name}\n" if filter_match(filter, text_to_check)
|
29
|
+
end
|
30
|
+
|
31
|
+
response.reply reply
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def color_to_state(text)
|
37
|
+
case text
|
38
|
+
when /disabled/
|
39
|
+
'DISA'
|
40
|
+
when /red/
|
41
|
+
'FAIL'
|
42
|
+
else
|
43
|
+
'SUCC'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def filter_match(filter, text)
|
48
|
+
text.match(/#{filter}/i)
|
10
49
|
end
|
11
50
|
end
|
12
51
|
|
data/lita-jenkins.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-jenkins"
|
3
|
-
spec.version = "0.0.
|
3
|
+
spec.version = "0.0.2"
|
4
4
|
spec.authors = ["Daniel Yoon"]
|
5
|
-
spec.email = ["
|
5
|
+
spec.email = ["daniel.kiros@gmail.com"]
|
6
6
|
spec.description = %q{Interact with Jenkins CI server.}
|
7
7
|
spec.summary = %q{Interact with Jenkins CI server.}
|
8
8
|
spec.homepage = "https://github.com/daniely/lita-jenkins.git"
|
@@ -3,4 +3,42 @@ require "spec_helper"
|
|
3
3
|
describe Lita::Handlers::Jenkins, lita_handler: true do
|
4
4
|
it { routes_command('jenkins list').to(:jenkins_list) }
|
5
5
|
it { routes_command('jenkins list filter').to(:jenkins_list) }
|
6
|
+
|
7
|
+
describe '#jenkins list' do
|
8
|
+
let(:response) { double("Faraday::Response") }
|
9
|
+
let(:api_response) { %{
|
10
|
+
{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node",
|
11
|
+
"nodeName":"","numExecutors":4,"description":null,"jobs":[
|
12
|
+
{"name":"chef_converge", "url":"http://test.com/job/chef_converge/","color":"disabled"},
|
13
|
+
{"name":"deploy", "url":"http://test.com/job/deploy/","color":"red"},
|
14
|
+
{"name":"build-all", "url":"http://test.com/job/build-all/","color":"blue"},
|
15
|
+
{"name":"website", "url":"http://test.com/job/website/","color":"red"}],
|
16
|
+
"overallLoad":{},
|
17
|
+
"primaryView":{"name":"All","url":"http://test.com/"},"quietingDown":false,"slaveAgentPort":8090,"unlabeledLoad":{},
|
18
|
+
"useCrumbs":false,"useSecurity":true,"views":[
|
19
|
+
{"name":"All","url":"http://test.com/"},
|
20
|
+
{"name":"Chef","url":"http://test.com/view/Chef/"},
|
21
|
+
{"name":"Deploy","url":"http://test.com/view/Deploy/"},
|
22
|
+
{"name":"Status","url":"http://test.com/view/Status/"},
|
23
|
+
{"name":"deploy-pipeline","url":"http://test.com/view/deploy-pipeline/"}]}
|
24
|
+
} }
|
25
|
+
|
26
|
+
before do
|
27
|
+
allow_any_instance_of(Faraday::Connection).to receive(:get).and_return(response)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'lists all jenkins jobs' do
|
31
|
+
allow(response).to receive(:status).and_return(200)
|
32
|
+
allow(response).to receive(:body).and_return(api_response)
|
33
|
+
send_command('jenkins list')
|
34
|
+
expect(replies.last).to eq("[1] DISA chef_converge\n[2] FAIL deploy\n[3] SUCC build-all\n[4] FAIL website\n")
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'filters jobs' do
|
38
|
+
allow(response).to receive(:status).and_return(200)
|
39
|
+
allow(response).to receive(:body).and_return(api_response)
|
40
|
+
send_command('jenkins list fail')
|
41
|
+
expect(replies.last).to eq("[2] FAIL deploy\n[4] FAIL website\n")
|
42
|
+
end
|
43
|
+
end
|
6
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-jenkins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Yoon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -96,7 +96,7 @@ dependencies:
|
|
96
96
|
version: '0'
|
97
97
|
description: Interact with Jenkins CI server.
|
98
98
|
email:
|
99
|
-
-
|
99
|
+
- daniel.kiros@gmail.com
|
100
100
|
executables: []
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|