lita-bamboo 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bb8c8f699d19940de58574cf3675e8b5cd5fe0a9
4
+ data.tar.gz: 1602cfba0a6d5c5f0723d12c334ed0eba41d0cda
5
+ SHA512:
6
+ metadata.gz: 039b34362887b450baef8a95b1106d80f105ac4e86335cf8d7d3ad98aee86d53fcf192098a887b65148fd0f6c65fcfc34dc88e42f480a33d4ce189b168b5ac28
7
+ data.tar.gz: 48d9683aa3241251278d3b08147aac2f632faefc1a9e4ea62ca2edf57cf09e5ef1af2e8c3f83b54366ff710ee42eb27e3a5eb8548ebe794f2819d185777ba9e5
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --fail-fast
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # lita-bamboo
2
+
3
+ TODO: Add a description of the plugin.
4
+
5
+ ## Installation
6
+
7
+ Add lita-bamboo to your Lita instance's Gemfile:
8
+
9
+ ``` ruby
10
+ gem "lita-bamboo"
11
+ ```
12
+
13
+ ## Configuration
14
+
15
+ TODO: Describe any configuration attributes the plugin exposes.
16
+
17
+ ## Usage
18
+
19
+ TODO: Describe the plugin's features and how to use them.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,8 @@
1
+ require 'rest-client'
2
+ module LitaBambooHelper
3
+ module Misc
4
+ def get_request
5
+
6
+ end
7
+ end #module misc
8
+ end#module
@@ -0,0 +1,97 @@
1
+ require 'json'
2
+ module LitaBambooHelper
3
+ module Plan
4
+ def list_projects
5
+ url = "#{config.url}/project.json"
6
+ info = []
7
+ begin
8
+ response = RestClient::Request.execute(:url => url, :verify_ssl => config.verify_ssl, :method=> :get)
9
+ json_response = JSON.parse(response)
10
+ if json_response['projects']['project']
11
+ json_response['projects']['project'].each do |proj|
12
+ info << "[#{proj['key']}] : #{proj['name']}"
13
+ end
14
+ end
15
+ rescue Exception=>e
16
+ raise "Error to list projects :#{e.message}"
17
+ end
18
+ info
19
+ end
20
+
21
+ def list_project_plan(proj_id)
22
+ url = "#{config.url}/project/#{proj_id}.json?expand=plans"
23
+ info = []
24
+ begin
25
+ response = RestClient::Request.execute(:url => url, :verify_ssl => config.verify_ssl, :method=> :get)
26
+ json_response = JSON.parse(response)
27
+ if json_response['plans']['plan']
28
+ json_response['plans']['plan'].each do |plan|
29
+ info << "[#{plan['key']}] : #{plan['name']}"
30
+ end
31
+ end
32
+ rescue Exception=>e
33
+ raise "Error to list plans :#{e.message}"
34
+ end
35
+ info
36
+ end
37
+
38
+ def list_plan_build(plan_id, last=1)
39
+ count =last -1
40
+ if count<0
41
+ count=0
42
+ end
43
+ puts "***#{count}"
44
+ url = "#{config.url}/result/#{plan_id}.json?expand=results[0:#{count}].result.labels"
45
+ info = []
46
+ begin
47
+ response = RestClient::Request.execute(:url => url, :verify_ssl => config.verify_ssl, :method=> :get)
48
+ json_response = JSON.parse(response)
49
+ if json_response['results']['result']
50
+ json_response['results']['result'].each do |result|
51
+ labels = []
52
+ if result['labels']['label']
53
+ result['labels']['label'].each do |label|
54
+ labels << label['name']
55
+ end
56
+ end
57
+ info << "[#{result['buildResultKey']}] : Successful=#{result['successful'] ? 'T' : 'F'} Finished=#{result['finished'] ? 'T' : 'F'} NotRunYet=#{result['notRunYet'] ? 'T' : 'F'} Start: #{result['prettyBuildStartedTime']} Complete: #{result['prettyBuildCompletedTime']} Label: #{labels.to_s}"
58
+ end
59
+ end
60
+ rescue Exception=>e
61
+ raise "Error to list build results :#{e.message}"
62
+ end
63
+ info
64
+ end
65
+
66
+ def queue_plan(plan_id)
67
+ url = "#{config.url}/queue/#{plan_id}"
68
+ begin
69
+ response = RestClient::Request.execute(:url => url, :verify_ssl => config.verify_ssl, :method=> :post)
70
+ if response.code == 200
71
+ true
72
+ else
73
+ false
74
+ end
75
+ rescue Exception=>e
76
+ raise "Error to queue paln for build :#{e.message}"
77
+ end
78
+ end
79
+
80
+ def list_queue()
81
+ url = "#{config.url}/queue?os_authType=basic"
82
+ info = []
83
+ begin
84
+ response = RestClient::Request.execute(:url => url, :verify_ssl => config.verify_ssl, :method=> :get)
85
+ json_response = JSON.parse(response)
86
+ if json_response['results']['result']
87
+ json_response['results']['result'].each do |result|
88
+ info << "[#{result['buildResultKey']}] : Successful=#{result['successful']} Finished=#{result['finished']} NotRunYet=#{result['notRunYet']} Start: #{result['prettyBuildStartedTime']} Complete: #{result['prettyBuildCompletedTime']}"
89
+ end
90
+ end
91
+ rescue Exception=>e
92
+ raise "Error to list build results :#{e.message}"
93
+ end
94
+ info
95
+ end
96
+ end #module
97
+ end
@@ -0,0 +1,73 @@
1
+ module Lita
2
+ module Handlers
3
+ class Bamboo < Handler
4
+
5
+ namespace 'Bamboo'
6
+ config :url, required: true, type: String # https://host:port/rest/api/latest
7
+ config :verify_ssl, required: true, types: [TrueClass, FalseClass], default: false
8
+
9
+ include ::LitaBambooHelper::Misc
10
+ include ::LitaBambooHelper::Plan
11
+
12
+ route(
13
+ /^bamboo\s+list\s+project[s]?\s*$/,
14
+ :cmd_list_projects,
15
+ command: true,
16
+ help: {
17
+ t('help.cmd_list_projects_key') => t('help.cmd_list_projects_value')
18
+ }
19
+ )
20
+
21
+ route(
22
+ /^bamboo\s+list\s+project\s+(\S+)\s+plans$/,
23
+ :cmd_list_project_plans,
24
+ command: true,
25
+ help: {
26
+ t('help.cmd_list_project_plans_key') => t('help.cmd_list_project_plans_value')
27
+ }
28
+ )
29
+
30
+ route(
31
+ /^bamboo\s+list\s+plan\s+(\S+)\s+results\s+limit\s+(\d+)\s*$/,
32
+ :cmd_list_plan_results,
33
+ command: true,
34
+ help: {
35
+ t('help.cmd_list_plan_results_key') => t('help.cmd_list_plan_results_value')
36
+ }
37
+ )
38
+
39
+ def cmd_list_projects(response)
40
+ begin
41
+ info = list_projects
42
+ response.reply info.join "\n"
43
+ rescue Exception => e
44
+ response.reply e.message
45
+ end
46
+ end
47
+
48
+ def cmd_list_project_plans(response)
49
+ proj_id = response.matches[0][0]
50
+ begin
51
+ info = list_project_plan(proj_id)
52
+ response.reply info.join "\n"
53
+ rescue Exception => e
54
+ response.reply e.message
55
+ end
56
+ end
57
+
58
+ def cmd_list_plan_results(response)
59
+ plan_id = response.matches[0][0]
60
+ limit = response.matches[0][1]
61
+ begin
62
+ info = list_plan_build(plan_id, Integer(limit))
63
+ response.reply info.join "\n"
64
+ rescue Exception => e
65
+ response.reply e.message
66
+ end
67
+ end
68
+
69
+ Lita.register_handler(self)
70
+
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,15 @@
1
+ require "lita"
2
+
3
+ Lita.load_locales Dir[File.expand_path(
4
+ File.join("..", "..", "locales", "*.yml"), __FILE__
5
+ )]
6
+
7
+ require "bamboohelper/misc"
8
+ require "bamboohelper/plans"
9
+ require "lita/handlers/bamboo"
10
+ require "lita"
11
+
12
+ Lita::Handlers::Bamboo.template_root File.expand_path(
13
+ File.join("..", "..", "templates"),
14
+ __FILE__
15
+ )
@@ -0,0 +1,24 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "lita-bamboo"
3
+ spec.version = "0.1.0"
4
+ spec.authors = ["Wang, Dawei"]
5
+ spec.email = ["dwang@entertainment.com"]
6
+ spec.description = "Bamboo Lita tasks"
7
+ spec.summary = "Bamboo build server operations"
8
+ spec.homepage = "https://github.com/af6140/lita-bamboo"
9
+ spec.license = "Apache-2.0"
10
+ spec.metadata = { "lita_plugin_type" => "handler" }
11
+
12
+ spec.files = `git ls-files`.split($/)
13
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.require_paths = ["lib"]
16
+
17
+ spec.add_runtime_dependency "lita", ">= 4.7"
18
+ spec.add_runtime_dependency "rest-client", ">= 1.7 ", "<2.0"
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "rack", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", ">= 3.0.0"
24
+ end
data/locales/en.yml ADDED
@@ -0,0 +1,11 @@
1
+ en:
2
+ lita:
3
+ handlers:
4
+ bamboo:
5
+ help:
6
+ cmd_list_projects_key: 'bamboo list project'
7
+ cmd_list_projects_value: 'List all build project'
8
+ cmd_list_project_plans_key: 'bamboo list project PROJ_KYE plans'
9
+ cmd_list_project_plans_value: 'List all plans in project'
10
+ cmd_list_plan_results_key: 'bamboo list plan LAN_KEY results limit LIMIT'
11
+ cmd_list_plan_results_value: 'List plan build results last LIMIT'
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe Lita::Handlers::Bamboo, lita_handler: true do
4
+ before do
5
+ registry.config.handlers.bamboo.url = 'https://bamboo.entertainment.com/rest/api/latest'
6
+ registry.config.handlers.bamboo.verify_ssl = false
7
+ end
8
+ it do
9
+ is_expected.to route_command('bamboo list project').to(:cmd_list_projects)
10
+ is_expected.to route_command('bamboo list project AG plans').to(:cmd_list_project_plans)
11
+ is_expected.to route_command('bamboo list plan AG-FPMWIL results limit 1').to(:cmd_list_plan_results)
12
+ end
13
+
14
+ describe '#get all project list' do
15
+ #let(:robot) { Lita::Robot.new(registry) }
16
+ it 'fecth list of projects' do
17
+ send_command('bamboo list project')
18
+ puts replies.last
19
+ #expect(replies.last).to match(/repositoryPath/)
20
+ end
21
+ end
22
+
23
+ describe '#get project plan list' do
24
+ #let(:robot) { Lita::Robot.new(registry) }
25
+ it 'fecth list of plan in project' do
26
+ send_command('bamboo list project AG plans')
27
+ puts replies.last
28
+ #expect(replies.last).to match(/repositoryPath/)
29
+ end
30
+ end
31
+
32
+ describe '#get project plan results' do
33
+ #let(:robot) { Lita::Robot.new(registry) }
34
+ it 'fecth list of plan build results' do
35
+ send_command('bamboo list plan PM-BUILDPM results limit 2')
36
+ puts replies.last
37
+ #expect(replies.last).to match(/repositoryPath/)
38
+ end
39
+ end
40
+
41
+ describe '#get project plan results' do
42
+ #let(:robot) { Lita::Robot.new(registry) }
43
+ it 'fecth list of plan build results' do
44
+ send_command('bamboo list plan AG-FPMWIL results limit 2')
45
+ puts replies.last
46
+ #expect(replies.last).to match(/repositoryPath/)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,14 @@
1
+ require "lita-bamboo"
2
+ require "lita/rspec"
3
+
4
+ # A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
5
+ # was generated with Lita 4, the compatibility mode should be left disabled.
6
+ Lita.version_3_compatibility_mode = false
7
+
8
+
9
+ RSpec.configure do |config|
10
+ config.before do
11
+ registry.register_handler(Lita::Handlers::Bamboo)
12
+ #registry.register_hook(:trigger_route, Lita::Extensions::KeywordArguments)
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lita-bamboo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Wang, Dawei
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lita
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '2.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '1.7'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.3'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rack
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.6'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.6'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rspec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 3.0.0
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.0.0
103
+ description: Bamboo Lita tasks
104
+ email:
105
+ - dwang@entertainment.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files: []
109
+ files:
110
+ - ".gitignore"
111
+ - ".rspec"
112
+ - Gemfile
113
+ - README.md
114
+ - Rakefile
115
+ - lib/bamboohelper/misc.rb
116
+ - lib/bamboohelper/plans.rb
117
+ - lib/lita-bamboo.rb
118
+ - lib/lita/handlers/bamboo.rb
119
+ - lita-bamboo.gemspec
120
+ - locales/en.yml
121
+ - spec/lita/handlers/bamboo_spec.rb
122
+ - spec/spec_helper.rb
123
+ homepage: https://github.com/af6140/lita-bamboo
124
+ licenses:
125
+ - Apache-2.0
126
+ metadata:
127
+ lita_plugin_type: handler
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.4.3
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Bamboo build server operations
148
+ test_files:
149
+ - spec/lita/handlers/bamboo_spec.rb
150
+ - spec/spec_helper.rb