ciquantum 0.0.17 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ciquantum.rb +1 -2
- data/lib/ciquantum/adapter.rb +17 -0
- data/lib/ciquantum/adapter/gitlab.rb +32 -0
- data/lib/ciquantum/adapter/unfuddle.rb +37 -0
- data/lib/ciquantum/adapter/unfuddle/changeset.rb +46 -0
- data/lib/ciquantum/config.rb +1 -0
- data/lib/ciquantum/core.rb +4 -2
- data/lib/ciquantum/server.rb +4 -9
- data/lib/ciquantum/version.rb +1 -1
- metadata +6 -4
- data/lib/ciquantum/unfuddle.rb +0 -25
- data/lib/ciquantum/unfuddle/changeset.rb +0 -44
data/lib/ciquantum.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'ciquantum/version'
|
3
3
|
require 'ciquantum/config'
|
4
|
-
require 'ciquantum/
|
5
|
-
require 'ciquantum/unfuddle/changeset'
|
4
|
+
require 'ciquantum/adapter'
|
6
5
|
require 'ciquantum/utils/mailer'
|
7
6
|
require 'ciquantum/utils/coverage_merger'
|
8
7
|
require 'ciquantum/git'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
Dir[File.join(File.dirname(__FILE__), "adapter/**/*.rb")].each {|f| require f}
|
3
|
+
|
4
|
+
module CIQuantum
|
5
|
+
module Adapter
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def from_config config
|
9
|
+
name = config.adapter.to_s
|
10
|
+
puts config.config_string
|
11
|
+
puts "Config: #{config}; Name: #{name}"
|
12
|
+
const_get(name).from_config(config) unless name.empty?
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module CIQuantum
|
2
|
+
module Adapter
|
3
|
+
class Gitlab < Struct.new(:config)
|
4
|
+
|
5
|
+
def self.config_name
|
6
|
+
'gitlab'
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.from_config config
|
10
|
+
self.new config[config_name]
|
11
|
+
end
|
12
|
+
|
13
|
+
def commit_url commit
|
14
|
+
"https://gitlab.sqtools.ru:11443/#{config.project}/commits/#{commit.sha}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def url
|
18
|
+
"https://gitlab.sqtools.ru:11443/#{config.project}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def [] command
|
22
|
+
return config[command]
|
23
|
+
end
|
24
|
+
|
25
|
+
def commit_from_request request
|
26
|
+
hash = JSON.parse request.body.read.strip
|
27
|
+
return (hash["repository"]["name"] == config.project) ? hash["after"] : nil
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
module CIQuantum
|
3
|
+
module Adapter
|
4
|
+
class Unfuddle < Struct.new(:config)
|
5
|
+
|
6
|
+
def self.config_name
|
7
|
+
'unfuddle'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.from_config config
|
11
|
+
self.new config[config_name]
|
12
|
+
end
|
13
|
+
|
14
|
+
def commit_url commit
|
15
|
+
"http://#{config.user}.unfuddle.com/a#/repositories/#{config.project}/commit?commit=#{commit.sha}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def url
|
19
|
+
"https://#{config.user}.unfuddle.com/a#/repositories/#{config.project}/browse"
|
20
|
+
end
|
21
|
+
|
22
|
+
def [] command
|
23
|
+
return config[command]
|
24
|
+
end
|
25
|
+
|
26
|
+
def commit_from_request request
|
27
|
+
begin
|
28
|
+
xml = request.body.read
|
29
|
+
return Changeset.new(xml).commit
|
30
|
+
rescue Unfuddle::ChangesetError => e
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'active_support/core_ext'
|
2
|
+
|
3
|
+
module CIQuantum
|
4
|
+
module Adater
|
5
|
+
class Unfuddle
|
6
|
+
class ChangesetError < StandardError ; end
|
7
|
+
|
8
|
+
class Changeset
|
9
|
+
FIELDS = %w(repository_id revision message committer_name committer_date).freeze
|
10
|
+
|
11
|
+
attr_reader :author
|
12
|
+
attr_reader :message
|
13
|
+
attr_reader :date
|
14
|
+
attr_reader :commit
|
15
|
+
attr_reader :repo
|
16
|
+
attr_reader :xml
|
17
|
+
|
18
|
+
def initialize(xml)
|
19
|
+
xml = xml.to_s.strip
|
20
|
+
raise ChangesetError, 'Changeset XML required!' if xml.empty?
|
21
|
+
|
22
|
+
begin
|
23
|
+
@data = Hash.from_xml(xml)
|
24
|
+
rescue REXML::ParseException
|
25
|
+
raise ChangesetError, 'Invalid XML data!'
|
26
|
+
end
|
27
|
+
|
28
|
+
raise ChangesetError, 'Invalid changeset!' unless @data.key?('changeset')
|
29
|
+
|
30
|
+
@xml = xml
|
31
|
+
@data = @data['changeset']
|
32
|
+
|
33
|
+
unless (FIELDS & @data.keys).size == FIELDS.size
|
34
|
+
raise ChangesetError, 'Invalid changeset!'
|
35
|
+
end
|
36
|
+
|
37
|
+
@commit = @data['revision']
|
38
|
+
@author = @data['committer_name']
|
39
|
+
@message = @data['message']
|
40
|
+
@date = @data['committer_date']
|
41
|
+
@repo = @data['repository_id']
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/ciquantum/config.rb
CHANGED
data/lib/ciquantum/core.rb
CHANGED
@@ -17,7 +17,7 @@ module CIQuantum
|
|
17
17
|
def initialize(project_path)
|
18
18
|
@is_building = false
|
19
19
|
@project_path = File.expand_path(project_path)
|
20
|
-
@adapter =
|
20
|
+
@adapter = Adapter.from_config(repo_config)
|
21
21
|
|
22
22
|
@projectname = repo_config.projectname.to_s
|
23
23
|
@coverage_path = repo_config.coveragepath.to_s
|
@@ -225,7 +225,9 @@ module CIQuantum
|
|
225
225
|
end
|
226
226
|
|
227
227
|
def read_build(name)
|
228
|
-
Build.load(path_in_project(".git/builds/#{name}"), @project_path)
|
228
|
+
build = Build.load(path_in_project(".git/builds/#{name}"), @project_path)
|
229
|
+
build.commit.get_url! adapter if build && build.commit && adapter
|
230
|
+
build
|
229
231
|
end
|
230
232
|
|
231
233
|
def read_last_build
|
data/lib/ciquantum/server.rb
CHANGED
@@ -82,15 +82,10 @@ module CIQuantum
|
|
82
82
|
end
|
83
83
|
|
84
84
|
post '/push' do
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
quantum.build
|
90
|
-
end
|
91
|
-
rescue Unfuddle::ChangesetError => e
|
92
|
-
logger.error "[error] Changeset error: #{e.inspect}, Content: #{xml.inspect}"
|
93
|
-
halt 400, "Changeset Error: #{e.message}"
|
85
|
+
puts "Request received on push:\n#{request.body.read}"
|
86
|
+
commit = quantum.adapter.commit_from_request request
|
87
|
+
if quantum.git.current_branch_contains_commit? commit
|
88
|
+
quantum.build
|
94
89
|
end
|
95
90
|
end
|
96
91
|
|
data/lib/ciquantum/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ciquantum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-07-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -193,6 +193,10 @@ files:
|
|
193
193
|
- examples/ciquantum.ru
|
194
194
|
- examples/ciquantumd
|
195
195
|
- lib/ciquantum.rb
|
196
|
+
- lib/ciquantum/adapter.rb
|
197
|
+
- lib/ciquantum/adapter/gitlab.rb
|
198
|
+
- lib/ciquantum/adapter/unfuddle.rb
|
199
|
+
- lib/ciquantum/adapter/unfuddle/changeset.rb
|
196
200
|
- lib/ciquantum/build.rb
|
197
201
|
- lib/ciquantum/commit.rb
|
198
202
|
- lib/ciquantum/config.rb
|
@@ -202,8 +206,6 @@ files:
|
|
202
206
|
- lib/ciquantum/public/screen.css
|
203
207
|
- lib/ciquantum/queue.rb
|
204
208
|
- lib/ciquantum/server.rb
|
205
|
-
- lib/ciquantum/unfuddle.rb
|
206
|
-
- lib/ciquantum/unfuddle/changeset.rb
|
207
209
|
- lib/ciquantum/utils/coverage_merger.rb
|
208
210
|
- lib/ciquantum/utils/mailer.rb
|
209
211
|
- lib/ciquantum/version.rb
|
data/lib/ciquantum/unfuddle.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module CIQuantum
|
2
|
-
class Unfuddle < Struct.new(:config)
|
3
|
-
|
4
|
-
def self.config_name
|
5
|
-
'unfuddle'
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.from_config config
|
9
|
-
self.new config[config_name]
|
10
|
-
end
|
11
|
-
|
12
|
-
def commit_url commit
|
13
|
-
"http://#{config.user}.unfuddle.com/a#/repositories/#{config.project}/commit?commit=#{commit.sha}"
|
14
|
-
end
|
15
|
-
|
16
|
-
def url
|
17
|
-
"https://#{config.user}.unfuddle.com/a#/repositories/#{config.project}/browse"
|
18
|
-
end
|
19
|
-
|
20
|
-
def [] command
|
21
|
-
return @config[command]
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext'
|
2
|
-
|
3
|
-
module CIQuantum
|
4
|
-
class Unfuddle
|
5
|
-
class ChangesetError < StandardError ; end
|
6
|
-
|
7
|
-
class Changeset
|
8
|
-
FIELDS = %w(repository_id revision message committer_name committer_date).freeze
|
9
|
-
|
10
|
-
attr_reader :author
|
11
|
-
attr_reader :message
|
12
|
-
attr_reader :date
|
13
|
-
attr_reader :commit
|
14
|
-
attr_reader :repo
|
15
|
-
attr_reader :xml
|
16
|
-
|
17
|
-
def initialize(xml)
|
18
|
-
xml = xml.to_s.strip
|
19
|
-
raise ChangesetError, 'Changeset XML required!' if xml.empty?
|
20
|
-
|
21
|
-
begin
|
22
|
-
@data = Hash.from_xml(xml)
|
23
|
-
rescue REXML::ParseException
|
24
|
-
raise ChangesetError, 'Invalid XML data!'
|
25
|
-
end
|
26
|
-
|
27
|
-
raise ChangesetError, 'Invalid changeset!' unless @data.key?('changeset')
|
28
|
-
|
29
|
-
@xml = xml
|
30
|
-
@data = @data['changeset']
|
31
|
-
|
32
|
-
unless (FIELDS & @data.keys).size == FIELDS.size
|
33
|
-
raise ChangesetError, 'Invalid changeset!'
|
34
|
-
end
|
35
|
-
|
36
|
-
@commit = @data['revision']
|
37
|
-
@author = @data['committer_name']
|
38
|
-
@message = @data['message']
|
39
|
-
@date = @data['committer_date']
|
40
|
-
@repo = @data['repository_id']
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|