lita-teamcity 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/lita-teamcity.rb +2 -0
- data/lib/lita/handlers/teamcity.rb +56 -7
- data/lita-teamcity.gemspec +2 -2
- data/spec/lita/handlers/teamcity_spec.rb +9 -1
- data/spec/spec_helper.rb +1 -0
- data/templates/build.erb +1 -0
- data/templates/build.slack.erb +1 -0
- data/templates/builds.erb +3 -0
- data/templates/builds.slack.erb +3 -0
- data/templates/projects.erb +3 -0
- data/templates/projects.slack.erb +3 -0
- metadata +10 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 825977afff6d95b5bb0064838ca64fef02c2672e
|
4
|
+
data.tar.gz: 0b471817db0ca61db06b18ec13b1f3d55846c45c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aadbbffa07e5f4570b51ee814c5c8d36bbced791c8023eebfaff6e14f42e90d0e45dec4f4f48e92b5b7874221bded686246bd78f6a53654c37dd71fe596efbdd
|
7
|
+
data.tar.gz: fae00de3073293d1c24506614426bbb1d7040f9b741596656a001bdc7cce2955034feb3abf24e6869d0be01db0f85120d3005fe8930797a274792d311d724dc5
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/jetthoughts/lita-teamcity.png?branch=master)](https://travis-ci.org/jetthoughts/lita-teamcity)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/jetthoughts/lita-teamcity/badge.png)](https://coveralls.io/r/jetthoughts/lita-teamcity)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/lita-teamcity.svg)](https://badge.fury.io/rb/lita-teamcity)
|
5
6
|
|
6
7
|
Communicate with TeamCity via Chat
|
7
8
|
|
data/lib/lita-teamcity.rb
CHANGED
@@ -7,17 +7,66 @@ module Lita
|
|
7
7
|
config :user, type: String
|
8
8
|
config :password, type: String
|
9
9
|
|
10
|
-
route(/^
|
10
|
+
route(/^teamcity\s+projects(\s+(.+))?/, :projects, command: true, help: { "teamcity projects [KEY]" => "List of TeamCity projects." })
|
11
|
+
route(/^teamcity\s+builds(\s+(.+))?/, :builds, command: true, help: { "teamcity builds [KEY]" => "List of TeamCity builds." })
|
12
|
+
route(/^teamcity\s+build\s+(.+)/, :build, command: true, help: { "teamcity build <buildtype_id> [branch_name]" => "Trigger a build for buildtype_id." })
|
11
13
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
def projects(response)
|
15
|
+
message = {
|
16
|
+
title: 'Projects',
|
17
|
+
text: render_template('projects', projects: client.projects),
|
18
|
+
}
|
19
|
+
|
20
|
+
reply(response, message)
|
21
|
+
end
|
22
|
+
|
23
|
+
def builds(response)
|
24
|
+
records = client.builds
|
25
|
+
Lita.logger.debug(records)
|
26
|
+
message = {
|
27
|
+
title: 'Builds',
|
28
|
+
text: render_template('builds', builds: records),
|
29
|
+
}
|
30
|
+
reply(response, message)
|
31
|
+
end
|
32
|
+
|
33
|
+
def build(response)
|
34
|
+
Lita.logger.debug(response.matches)
|
35
|
+
Lita.logger.debug(response.args)
|
36
|
+
Lita.logger.debug(response.room.metadata)
|
37
|
+
options = {
|
38
|
+
comment: {text: "Triggered by #{response.user.name} in room #{response.room.name} via chatbot"},
|
39
|
+
}
|
40
|
+
options[:branchName] = response.args[2] if response.args[2]
|
41
|
+
|
42
|
+
result = client.create_buildqueue(response.args[1], options)
|
43
|
+
Lita.logger.debug(result)
|
44
|
+
|
45
|
+
message = {
|
46
|
+
title: 'Done!',
|
47
|
+
text: render_template('build', build: result),
|
48
|
+
}
|
49
|
+
reply(response, message)
|
17
50
|
end
|
18
51
|
|
52
|
+
private
|
19
53
|
def client
|
20
|
-
@_client ||= TeamCity::Client.new(endpoint: config.endpoint, http_user: config.user, http_password: config.password)
|
54
|
+
@_client ||= ::TeamCity::Client.new(endpoint: config.endpoint, http_user: config.user, http_password: config.password)
|
55
|
+
end
|
56
|
+
|
57
|
+
def reply(response, message)
|
58
|
+
Lita.logger.info(message[:text])
|
59
|
+
case robot.config.robot.adapter
|
60
|
+
when :slack
|
61
|
+
_message = {
|
62
|
+
mrkdwn: true,
|
63
|
+
color: '#36a64f',
|
64
|
+
}.merge(message)
|
65
|
+
attachment = Lita::Adapters::Slack::Attachment.new(message[:text], _message)
|
66
|
+
robot.chat_service.send_attachment(response.room, attachment)
|
67
|
+
else
|
68
|
+
response.reply(message[:title], message[:text])
|
69
|
+
end
|
21
70
|
end
|
22
71
|
|
23
72
|
Lita.register_handler(self)
|
data/lita-teamcity.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-teamcity"
|
3
|
-
spec.version = "0.1.
|
3
|
+
spec.version = "0.1.1"
|
4
4
|
spec.authors = ["Michael Nikitochkin"]
|
5
5
|
spec.email = ["miry.sof@gmail.com"]
|
6
6
|
spec.description = "Communicate with TeamCity REST API"
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.require_paths = ["lib"]
|
16
16
|
|
17
17
|
spec.add_runtime_dependency "lita", ">= 4.7"
|
18
|
-
spec.add_runtime_dependency "teamcity", ">= 1.3.
|
18
|
+
spec.add_runtime_dependency "teamcity", ">= 1.3.2"
|
19
19
|
|
20
20
|
spec.add_development_dependency "bundler", "~> 1.3"
|
21
21
|
spec.add_development_dependency "pry-byebug"
|
@@ -1,5 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Teamcity, lita_handler: true do
|
4
|
-
it { is_expected.to
|
4
|
+
it { is_expected.to route_command("teamcity projects").to(:projects) }
|
5
|
+
|
6
|
+
describe "#projects" do
|
7
|
+
it "list of active projects" do
|
8
|
+
send_command("teamcity projects")
|
9
|
+
|
10
|
+
expect(replies.first).to eq("boom!")
|
11
|
+
end
|
12
|
+
end
|
5
13
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,7 @@ SimpleCov.start { add_filter "/spec/" }
|
|
8
8
|
|
9
9
|
require "lita-teamcity"
|
10
10
|
require "lita/rspec"
|
11
|
+
require "teamcity"
|
11
12
|
|
12
13
|
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
13
14
|
# was generated with Lita 4, the compatibility mode should be left disabled.
|
data/templates/build.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Triggered <%= @build.buildType.name %> for <%= @build.branchName %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Triggered <<%= @build.buildType.webUrl %>|<%= @build.buildType.name %>> for <%= @build.branchName %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-teamcity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Nikitochkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.3.
|
33
|
+
version: 1.3.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.3.
|
40
|
+
version: 1.3.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,6 +156,12 @@ files:
|
|
156
156
|
- spec/lita/handlers/teamcity_spec.rb
|
157
157
|
- spec/spec_helper.rb
|
158
158
|
- templates/.gitkeep
|
159
|
+
- templates/build.erb
|
160
|
+
- templates/build.slack.erb
|
161
|
+
- templates/builds.erb
|
162
|
+
- templates/builds.slack.erb
|
163
|
+
- templates/projects.erb
|
164
|
+
- templates/projects.slack.erb
|
159
165
|
homepage: https://github.com/jetthoughts/lita-teamcity
|
160
166
|
licenses:
|
161
167
|
- GPL-3.0
|
@@ -184,4 +190,3 @@ summary: Communicate with TeamCity REST API
|
|
184
190
|
test_files:
|
185
191
|
- spec/lita/handlers/teamcity_spec.rb
|
186
192
|
- spec/spec_helper.rb
|
187
|
-
has_rdoc:
|