ci_in_a_can 0.0.8 → 0.0.9
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.
- data/bin/ciinacan +4 -1
- data/lib/ci_in_a_can/app.rb +1 -2
- data/lib/ci_in_a_can/bash.rb +2 -4
- data/lib/ci_in_a_can/bash_result.rb +2 -0
- data/lib/ci_in_a_can/build.rb +4 -12
- data/lib/ci_in_a_can/cloner.rb +11 -1
- data/lib/ci_in_a_can/daemon.rb +5 -0
- data/lib/ci_in_a_can/github.rb +23 -13
- data/lib/ci_in_a_can/github_build_parser.rb +36 -0
- data/lib/ci_in_a_can/runner.rb +20 -2
- data/lib/ci_in_a_can/test_result.rb +21 -6
- data/lib/ci_in_a_can/test_result_notifier.rb +10 -0
- data/lib/ci_in_a_can/test_runner.rb +18 -4
- data/lib/ci_in_a_can/version.rb +1 -1
- data/lib/ci_in_a_can/watcher.rb +10 -6
- data/lib/ci_in_a_can.rb +2 -0
- data/spec/ci_in_a_can/build_spec.rb +10 -30
- data/spec/ci_in_a_can/github_build_parser_spec.rb +41 -0
- metadata +64 -30
- checksums.yaml +0 -7
- data/config.ru +0 -6
data/bin/ciinacan
CHANGED
@@ -23,7 +23,10 @@ def web_file
|
|
23
23
|
<<EOF
|
24
24
|
require 'ci_in_a_can'
|
25
25
|
|
26
|
-
|
26
|
+
this_directory = File.expand_path(File.dirname(__FILE__) + '/../')
|
27
|
+
|
28
|
+
eval("CiInACan::App.jobs_location = '\#{this_directory}' + '/jobs'")
|
29
|
+
eval("CiInACan.results_location = '\#{this_directory}' + '/results'")
|
27
30
|
|
28
31
|
use CiInACan::App
|
29
32
|
run Sinatra::Application
|
data/lib/ci_in_a_can/app.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
require 'sinatra/base'
|
2
|
-
require 'json'
|
3
|
-
require 'uuid'
|
4
2
|
|
5
3
|
module CiInACan
|
6
4
|
|
@@ -11,6 +9,7 @@ module CiInACan
|
|
11
9
|
end
|
12
10
|
|
13
11
|
get '/test_result/:id' do
|
12
|
+
CiInACan.results_location = '/Users/darrencauthon/desktop/ci_in_a_can/spec/temp'
|
14
13
|
CiInACan::TestResult.find(params[:id]).to_json
|
15
14
|
end
|
16
15
|
|
data/lib/ci_in_a_can/bash.rb
CHANGED
@@ -3,10 +3,8 @@ module CiInACan
|
|
3
3
|
module Bash
|
4
4
|
|
5
5
|
def self.run command
|
6
|
-
|
7
|
-
|
8
|
-
result.exit_code = the_exit_code
|
9
|
-
result
|
6
|
+
CiInACan::BashResult.new(output: backtick(command),
|
7
|
+
exit_code: the_exit_code)
|
10
8
|
end
|
11
9
|
|
12
10
|
def self.backtick command
|
data/lib/ci_in_a_can/build.rb
CHANGED
@@ -1,21 +1,13 @@
|
|
1
1
|
module CiInACan
|
2
2
|
|
3
3
|
class Build
|
4
|
+
params_constructor
|
4
5
|
|
5
|
-
attr_accessor :
|
6
|
-
|
6
|
+
attr_accessor :id, :git_ssh, :sha,
|
7
|
+
:local_location, :repo
|
7
8
|
|
8
9
|
def self.parse content
|
9
|
-
|
10
|
-
data['payload'] = JSON.parse data['payload']
|
11
|
-
|
12
|
-
splat = data['payload']['compare'].split('/')
|
13
|
-
|
14
|
-
build = self.new
|
15
|
-
build.git_ssh = "git@github.com:#{splat[3]}/#{splat[4]}.git"
|
16
|
-
build.repo = "#{splat[3]}/#{splat[4]}"
|
17
|
-
build.sha = data['payload']['head_commit']['id']
|
18
|
-
build
|
10
|
+
GithubBuildParser.new.parse content
|
19
11
|
end
|
20
12
|
|
21
13
|
def commands
|
data/lib/ci_in_a_can/cloner.rb
CHANGED
@@ -1,7 +1,17 @@
|
|
1
1
|
module CiInACan
|
2
|
+
|
2
3
|
module Cloner
|
4
|
+
|
3
5
|
def self.clone_a_local_copy_for build
|
4
|
-
CiInACan::Bash.run
|
6
|
+
CiInACan::Bash.run commands_to_run_for(build).join('; ')
|
5
7
|
end
|
8
|
+
|
9
|
+
def self.commands_to_run_for build
|
10
|
+
["git clone #{build.git_ssh} #{build.local_location}",
|
11
|
+
"cd #{build.local_location}",
|
12
|
+
"git checkout #{build.sha}"]
|
13
|
+
end
|
14
|
+
|
6
15
|
end
|
16
|
+
|
7
17
|
end
|
data/lib/ci_in_a_can/daemon.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
module CiInACan
|
2
|
+
|
2
3
|
module Daemon
|
4
|
+
|
3
5
|
def self.start options
|
4
6
|
CiInACan.site_url = options[:site_url]
|
5
7
|
CiInACan::Github.access_token = options[:access_token]
|
6
8
|
CiInACan::Watcher.watch options[:watching_location], options[:working_location]
|
9
|
+
|
7
10
|
sleep
|
8
11
|
end
|
12
|
+
|
9
13
|
end
|
14
|
+
|
10
15
|
end
|
data/lib/ci_in_a_can/github.rb
CHANGED
@@ -5,24 +5,34 @@ module CiInACan
|
|
5
5
|
module Github
|
6
6
|
|
7
7
|
class << self
|
8
|
-
|
9
8
|
attr_accessor :access_token
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
def self.client
|
12
|
+
return nil if access_token.to_s == ''
|
13
|
+
Octokit::Client.new(access_token: access_token)
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
def self.report_pending_status_for build
|
17
|
+
return nil unless client
|
18
|
+
client.create_status build.repo, build.sha, 'pending'
|
19
|
+
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
def self.report_complete_status_for build, test_result
|
22
|
+
return nil unless client
|
23
|
+
client.create_status(build.repo, build.sha,
|
24
|
+
complete_status_from(test_result),
|
25
|
+
{ target_url: target_url_for(test_result) } )
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def self.target_url_for test_result
|
31
|
+
"#{CiInACan.site_url}/test_result/#{test_result.id}"
|
32
|
+
end
|
25
33
|
|
34
|
+
def self.complete_status_from test_result
|
35
|
+
(test_result.passed ? 'success' : 'failure')
|
26
36
|
end
|
27
37
|
|
28
38
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module CiInACan
|
2
|
+
|
3
|
+
class GithubBuildParser
|
4
|
+
|
5
|
+
def parse content
|
6
|
+
payload = extract_payload_from content
|
7
|
+
project = extract_repo_from payload
|
8
|
+
|
9
|
+
CiInACan::Build.new(git_ssh: "git@github.com:#{project}.git",
|
10
|
+
repo: project,
|
11
|
+
sha: extract_sha_from(payload))
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def extract_repo_from payload
|
17
|
+
username, project_name = get_username_and_project_name_from payload
|
18
|
+
"#{username}/#{project_name}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def extract_payload_from content
|
22
|
+
data = JSON.parse content
|
23
|
+
JSON.parse data['payload']
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_username_and_project_name_from payload
|
27
|
+
splat = payload['compare'].split('/')
|
28
|
+
[splat[3], splat[4]]
|
29
|
+
end
|
30
|
+
|
31
|
+
def extract_sha_from payload
|
32
|
+
payload['head_commit']['id']
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
data/lib/ci_in_a_can/runner.rb
CHANGED
@@ -3,10 +3,28 @@ module CiInACan
|
|
3
3
|
module Runner
|
4
4
|
|
5
5
|
def self.run build
|
6
|
+
report_pending_status_for build
|
7
|
+
clone_a_local_copy_of build
|
8
|
+
test_results = run_the_tests_for build
|
9
|
+
send_notifications_for build, test_results
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def self.send_notifications_for build, test_results
|
15
|
+
CiInACan::TestResultNotifier.send_for build, test_results
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.run_the_tests_for build
|
19
|
+
CiInACan::TestRunner.run_tests_for build
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.report_pending_status_for build
|
6
23
|
CiInACan::Github.report_pending_status_for build
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.clone_a_local_copy_of build
|
7
27
|
CiInACan::Cloner.clone_a_local_copy_for build
|
8
|
-
test_results = CiInACan::TestRunner.run_tests_for build
|
9
|
-
CiInACan::TestResultNotifier.send_for build, test_results
|
10
28
|
end
|
11
29
|
|
12
30
|
end
|
@@ -1,20 +1,35 @@
|
|
1
|
-
require 'subtle'
|
2
|
-
|
3
1
|
module CiInACan
|
4
2
|
class TestResult
|
3
|
+
|
4
|
+
PERSISTENCE_TYPE = 'test_result'
|
5
|
+
|
5
6
|
params_constructor
|
7
|
+
|
6
8
|
attr_accessor :id
|
7
9
|
attr_accessor :passed, :output
|
8
10
|
|
9
11
|
def self.create values
|
10
|
-
test_result =
|
11
|
-
test_result
|
12
|
-
CiInACan::Persistence.save "test_result", test_result.id, test_result
|
12
|
+
test_result = create_the_test_result_from values
|
13
|
+
save_this test_result
|
13
14
|
test_result
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.find id
|
17
|
-
CiInACan::Persistence.find
|
18
|
+
CiInACan::Persistence.find PERSISTENCE_TYPE, id
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_json
|
22
|
+
{ id: id, passed: passed, output: output }.to_json
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def self.create_the_test_result_from values
|
28
|
+
self.new values.merge(id: UUID.new.generate)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.save_this test_result
|
32
|
+
CiInACan::Persistence.save PERSISTENCE_TYPE, test_result.id, test_result
|
18
33
|
end
|
19
34
|
end
|
20
35
|
end
|
@@ -1,7 +1,17 @@
|
|
1
1
|
module CiInACan
|
2
|
+
|
2
3
|
module TestResultNotifier
|
4
|
+
|
3
5
|
def self.send_for build, test_result
|
6
|
+
report_results_to_github build, test_result
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def self.report_results_to_github build, test_result
|
4
12
|
CiInACan::Github.report_complete_status_for build, test_result
|
5
13
|
end
|
14
|
+
|
6
15
|
end
|
16
|
+
|
7
17
|
end
|
@@ -1,13 +1,27 @@
|
|
1
1
|
module CiInACan
|
2
|
+
|
2
3
|
module TestRunner
|
4
|
+
|
3
5
|
def self.run_tests_for build
|
4
|
-
|
5
|
-
|
6
|
+
bash_result = run get_commands_for(build)
|
7
|
+
build_test_result_from bash_result
|
8
|
+
end
|
6
9
|
|
7
|
-
|
10
|
+
private
|
8
11
|
|
12
|
+
def self.build_test_result_from bash_result
|
9
13
|
CiInACan::TestResult.create( { passed: bash_result.successful,
|
10
|
-
output: bash_result.output
|
14
|
+
output: bash_result.output } )
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.run commands
|
18
|
+
CiInACan::Bash.run commands.join('; ')
|
11
19
|
end
|
20
|
+
|
21
|
+
def self.get_commands_for build
|
22
|
+
["cd #{build.local_location}", build.commands].flatten
|
23
|
+
end
|
24
|
+
|
12
25
|
end
|
26
|
+
|
13
27
|
end
|
data/lib/ci_in_a_can/version.rb
CHANGED
data/lib/ci_in_a_can/watcher.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'listen'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
module CiInACan
|
5
4
|
|
@@ -19,17 +18,22 @@ module CiInACan
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def build_callback working_location
|
22
|
-
Proc.new do |
|
23
|
-
next unless
|
21
|
+
Proc.new do |_, new_files, _|
|
22
|
+
next unless new_files.count > 0
|
24
23
|
|
25
|
-
build =
|
26
|
-
build.id = UUID.new.generate
|
27
|
-
build.local_location = "#{working_location}/#{build.id}"
|
24
|
+
build = create_a_build_for(new_files.first, working_location)
|
28
25
|
|
29
26
|
Runner.run build
|
30
27
|
end
|
31
28
|
end
|
32
29
|
|
30
|
+
def create_a_build_for file, working_location
|
31
|
+
build = CiInACan::Build.parse File.read(file)
|
32
|
+
build.id = UUID.new.generate
|
33
|
+
build.local_location = "#{working_location}/#{build.id}"
|
34
|
+
build
|
35
|
+
end
|
36
|
+
|
33
37
|
end
|
34
38
|
|
35
39
|
end
|
data/lib/ci_in_a_can.rb
CHANGED
@@ -9,37 +9,17 @@ describe CiInACan::Build do
|
|
9
9
|
result[1].must_equal 'bundle exec rake'
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
["https://github.com/darrencauthon/ci_in_a_can/commit/b1c5f9c9588f", "qwe", "git@github.com:darrencauthon/ci_in_a_can.git", "darrencauthon/ci_in_a_can"],
|
14
|
-
["https://github.com/abc/123/commit/b1c5f9c9588f", "uio", "git@github.com:abc/123.git", "abc/123"]
|
15
|
-
]}.each do |test|
|
16
|
-
|
17
|
-
describe "parse" do
|
18
|
-
|
19
|
-
let(:content) do
|
20
|
-
{
|
21
|
-
payload: {
|
22
|
-
compare: test.compare,
|
23
|
-
head_commit: { id: test.sha }
|
24
|
-
}.to_json
|
25
|
-
}.to_json
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should convert the http to a git ssh" do
|
29
|
-
build = CiInACan::Build.parse content
|
30
|
-
build.git_ssh.must_equal test.git_ssh
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should return the repo" do
|
34
|
-
build = CiInACan::Build.parse content
|
35
|
-
build.repo.must_equal test.repo
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should stamp the sha" do
|
39
|
-
build = CiInACan::Build.parse content
|
40
|
-
build.sha.must_equal test.sha
|
41
|
-
end
|
12
|
+
describe "parse" do
|
42
13
|
|
14
|
+
it "should return the result of the Github parser" do
|
15
|
+
content = Object.new
|
16
|
+
parser = Object.new
|
17
|
+
build = Object.new
|
18
|
+
|
19
|
+
parser.stubs(:parse).with(content).returns build
|
20
|
+
CiInACan::GithubBuildParser.stubs(:new).returns parser
|
21
|
+
|
22
|
+
CiInACan::Build.parse(content).must_be_same_as build
|
43
23
|
end
|
44
24
|
|
45
25
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe CiInACan::GithubBuildParser do
|
4
|
+
|
5
|
+
[:compare, :sha, :git_ssh, :repo].to_objects {[
|
6
|
+
["https://github.com/darrencauthon/ci_in_a_can/commit/b1c5f9c9588f", "qwe", "git@github.com:darrencauthon/ci_in_a_can.git", "darrencauthon/ci_in_a_can"],
|
7
|
+
["https://github.com/abc/123/commit/b1c5f9c9588f", "uio", "git@github.com:abc/123.git", "abc/123"]
|
8
|
+
]}.each do |test|
|
9
|
+
|
10
|
+
describe "parse" do
|
11
|
+
|
12
|
+
let(:content) do
|
13
|
+
{
|
14
|
+
payload: {
|
15
|
+
compare: test.compare,
|
16
|
+
head_commit: { id: test.sha }
|
17
|
+
}.to_json
|
18
|
+
}.to_json
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should convert the http to a git ssh" do
|
22
|
+
build = CiInACan::GithubBuildParser.new.parse content
|
23
|
+
build.git_ssh.must_equal test.git_ssh
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return the repo" do
|
27
|
+
build = CiInACan::GithubBuildParser.new.parse content
|
28
|
+
build.repo.must_equal test.repo
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should stamp the sha" do
|
32
|
+
build = CiInACan::GithubBuildParser.new.parse content
|
33
|
+
build.sha.must_equal test.sha
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ci_in_a_can
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Darren Cauthon
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,155 +30,177 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: mocha
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: subtle
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: contrast
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rake
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: sinatra
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :runtime
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: json
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- - '>='
|
115
|
+
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- - '>='
|
123
|
+
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: uuid
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
|
-
- - '>='
|
131
|
+
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
117
133
|
version: '0'
|
118
134
|
type: :runtime
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
|
-
- - '>='
|
139
|
+
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
124
141
|
version: '0'
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: listen
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
|
-
- - '>='
|
147
|
+
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
131
149
|
version: '0'
|
132
150
|
type: :runtime
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
|
-
- - '>='
|
155
|
+
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
138
157
|
version: '0'
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: octokit
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
|
-
- - '>='
|
163
|
+
- - ! '>='
|
144
164
|
- !ruby/object:Gem::Version
|
145
165
|
version: '0'
|
146
166
|
type: :runtime
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
|
-
- - '>='
|
171
|
+
- - ! '>='
|
151
172
|
- !ruby/object:Gem::Version
|
152
173
|
version: '0'
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
175
|
name: daemons
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
|
-
- - '>='
|
179
|
+
- - ! '>='
|
158
180
|
- !ruby/object:Gem::Version
|
159
181
|
version: '0'
|
160
182
|
type: :runtime
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
|
-
- - '>='
|
187
|
+
- - ! '>='
|
165
188
|
- !ruby/object:Gem::Version
|
166
189
|
version: '0'
|
167
190
|
- !ruby/object:Gem::Dependency
|
168
191
|
name: subtle
|
169
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
170
194
|
requirements:
|
171
|
-
- - '>='
|
195
|
+
- - ! '>='
|
172
196
|
- !ruby/object:Gem::Version
|
173
197
|
version: '0'
|
174
198
|
type: :runtime
|
175
199
|
prerelease: false
|
176
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
177
202
|
requirements:
|
178
|
-
- - '>='
|
203
|
+
- - ! '>='
|
179
204
|
- !ruby/object:Gem::Version
|
180
205
|
version: '0'
|
181
206
|
description: Fast CI. Still a WIP.
|
@@ -193,7 +218,6 @@ files:
|
|
193
218
|
- Rakefile
|
194
219
|
- bin/ciinacan
|
195
220
|
- ci_in_a_can.gemspec
|
196
|
-
- config.ru
|
197
221
|
- lib/ci_in_a_can.rb
|
198
222
|
- lib/ci_in_a_can/app.rb
|
199
223
|
- lib/ci_in_a_can/bash.rb
|
@@ -202,6 +226,7 @@ files:
|
|
202
226
|
- lib/ci_in_a_can/cloner.rb
|
203
227
|
- lib/ci_in_a_can/daemon.rb
|
204
228
|
- lib/ci_in_a_can/github.rb
|
229
|
+
- lib/ci_in_a_can/github_build_parser.rb
|
205
230
|
- lib/ci_in_a_can/persistence.rb
|
206
231
|
- lib/ci_in_a_can/runner.rb
|
207
232
|
- lib/ci_in_a_can/test_result.rb
|
@@ -214,6 +239,7 @@ files:
|
|
214
239
|
- spec/ci_in_a_can/bash_spec.rb
|
215
240
|
- spec/ci_in_a_can/build_spec.rb
|
216
241
|
- spec/ci_in_a_can/cloner_spec.rb
|
242
|
+
- spec/ci_in_a_can/github_build_parser_spec.rb
|
217
243
|
- spec/ci_in_a_can/github_spec.rb
|
218
244
|
- spec/ci_in_a_can/runner_spec.rb
|
219
245
|
- spec/ci_in_a_can/test_result_notifier_spec.rb
|
@@ -225,32 +251,40 @@ files:
|
|
225
251
|
homepage: ''
|
226
252
|
licenses:
|
227
253
|
- MIT
|
228
|
-
metadata: {}
|
229
254
|
post_install_message:
|
230
255
|
rdoc_options: []
|
231
256
|
require_paths:
|
232
257
|
- lib
|
233
258
|
required_ruby_version: !ruby/object:Gem::Requirement
|
259
|
+
none: false
|
234
260
|
requirements:
|
235
|
-
- - '>='
|
261
|
+
- - ! '>='
|
236
262
|
- !ruby/object:Gem::Version
|
237
263
|
version: '0'
|
264
|
+
segments:
|
265
|
+
- 0
|
266
|
+
hash: -1243882280261005315
|
238
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
|
+
none: false
|
239
269
|
requirements:
|
240
|
-
- - '>='
|
270
|
+
- - ! '>='
|
241
271
|
- !ruby/object:Gem::Version
|
242
272
|
version: '0'
|
273
|
+
segments:
|
274
|
+
- 0
|
275
|
+
hash: -1243882280261005315
|
243
276
|
requirements: []
|
244
277
|
rubyforge_project:
|
245
|
-
rubygems_version:
|
278
|
+
rubygems_version: 1.8.24
|
246
279
|
signing_key:
|
247
|
-
specification_version:
|
280
|
+
specification_version: 3
|
248
281
|
summary: Fast CI. Still a WIP.
|
249
282
|
test_files:
|
250
283
|
- spec/ci_in_a_can/bash_result_spec.rb
|
251
284
|
- spec/ci_in_a_can/bash_spec.rb
|
252
285
|
- spec/ci_in_a_can/build_spec.rb
|
253
286
|
- spec/ci_in_a_can/cloner_spec.rb
|
287
|
+
- spec/ci_in_a_can/github_build_parser_spec.rb
|
254
288
|
- spec/ci_in_a_can/github_spec.rb
|
255
289
|
- spec/ci_in_a_can/runner_spec.rb
|
256
290
|
- spec/ci_in_a_can/test_result_notifier_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 370913ef96b0b8ea7bad7d243a2ef57c3bc0c961
|
4
|
-
data.tar.gz: da919a87438e340c1b0efe14351f7ee66bd120c0
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 5933778ec97dd4577df453bae506f08e08d543e579a0fc2ac09705bd04b2e9ec6bae3f8c61344844f5b6c7e76160734df50b3024d3543091b93b2327d0fea9d4
|
7
|
-
data.tar.gz: 6d59e751e7e9937dc19068cba66a215086f34858897ed35edd8853576bc16490b7db05cf99d289baef4139b2f6a4d1fd27c16185f6f3464e7da608c1f2f56fde
|