robot_sweatshop 0.3.0 → 0.3.1
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 +3 -2
- data/Rakefile +2 -2
- data/bin/sweatshop +5 -7
- data/bin/sweatshop-input-http +1 -1
- data/bin/sweatshop-job-assembler +7 -7
- data/bin/sweatshop-job-worker +4 -3
- data/bin/sweatshop-payload-parser +6 -6
- data/bin/sweatshop-queue-broadcaster +2 -1
- data/bin/sweatshop-queue-handler +2 -1
- data/config.defaults.yaml +5 -5
- data/lib/robot_sweatshop.rb +5 -0
- data/lib/{sweatshop → robot_sweatshop}/cli.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/cli/common.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/cli/config.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/cli/job.rb +3 -3
- data/lib/{sweatshop → robot_sweatshop}/cli/start.rb +2 -2
- data/lib/{sweatshop → robot_sweatshop}/config.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/create-config-directories.rb +1 -1
- data/lib/{sweatshop → robot_sweatshop}/moneta-queue.rb +1 -1
- data/lib/{sweatshop → robot_sweatshop}/payload.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/payload/bitbucket.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/payload/github.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/payload/json.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/payload/payload.rb +0 -0
- data/lib/{sweatshop → robot_sweatshop}/queue-helper.rb +0 -0
- data/robot_sweatshop.eye +4 -4
- data/robot_sweatshop.gemspec +3 -2
- data/{kintama → test}/README.md +0 -0
- data/test/data/empty_job.yaml +1 -0
- data/{kintama → test}/data/git_job.yaml +0 -0
- data/test/data/minimal_job.yaml +3 -0
- data/{kintama → test}/data/payload_data.yaml +0 -0
- data/{kintama → test}/data/test_job.yaml +0 -0
- data/{kintama → test}/end-to-end_spec.rb +0 -0
- data/{kintama → test}/input_http_spec.rb +1 -1
- data/{kintama → test}/job_assembler_spec.rb +12 -10
- data/{kintama → test}/job_worker_spec.rb +0 -0
- data/{kintama → test}/moneta-queue_spec.rb +2 -1
- data/{kintama → test}/payload_parser_spec.rb +6 -4
- data/{kintama → test}/queue_broadcaster_spec.rb +0 -0
- data/{kintama → test}/queue_handler_spec.rb +0 -0
- data/{kintama → test}/run_all.rb +0 -0
- data/{kintama → test}/shared/helpers.rb +15 -11
- data/{kintama → test}/shared/process_spawning.rb +4 -3
- metadata +56 -38
- data/lib/sweatshop.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4448ccef7e7ddfd360671112b0f2309514d1fe41
|
4
|
+
data.tar.gz: 78e891d82abb784a20ee5fab9df5bf9c15a1c61a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad6c99e1bdebf6d38e6387325beb9644cf2e485bf2b6f1c3e4251f833c841f2bc46855e123c5116c34a7120b95f756438c87158dabbf6d320890f8f7deec74f4
|
7
|
+
data.tar.gz: 9d063888952c5c0e057e560b37bd3185e3604a3fa8678ff0cc3d1057136888ec226cce3d0745bdddaf2e3ea06a6ba5b3b19ff4452545ae85ef3a9c74c0a750d7
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Robot Sweatshop is a single-purpose CI server that runs collections of arbitrary
|
|
12
12
|
- `gem install robot_sweatshop`
|
13
13
|
- `sweatshop start` ([you may need sudo on OSX](https://github.com/JScott/robot_sweatshop/wiki))
|
14
14
|
- `sweatshop job example --auto`
|
15
|
-
- `curl
|
15
|
+
- `curl -X POST http://localhost:8080/payload-for/example`
|
16
16
|
- `cat .robot_sweatshop/log/job-worker.log`
|
17
17
|
|
18
18
|
# Usage
|
@@ -23,13 +23,14 @@ Robot Sweatshop uses [Eye](https://github.com/kostya/eye) to handle its processe
|
|
23
23
|
|
24
24
|
# Configuration
|
25
25
|
|
26
|
-
By default, Robot Sweatshop looks in your current working
|
26
|
+
By default, Robot Sweatshop looks in your current working path to configure and run. You can supply a custom configuration with `sweatshop config [local|user|system]`. Read [the wiki](https://github.com/JScott/robot_sweatshop/wiki) for more information.
|
27
27
|
|
28
28
|
# Supported payload formats
|
29
29
|
|
30
30
|
- Github (application/json format only)
|
31
31
|
- Bitbucket
|
32
32
|
- JSON
|
33
|
+
- Empty
|
33
34
|
|
34
35
|
# Security
|
35
36
|
|
data/Rakefile
CHANGED
data/bin/sweatshop
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/setup'
|
2
3
|
require 'yaml'
|
3
4
|
require 'commander/import'
|
4
5
|
require 'colorize'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
require_relative '../lib/sweatshop/cli/config'
|
9
|
-
require_relative '../lib/sweatshop/config'
|
10
|
-
require_relative '../lib/sweatshop/create-config-directories'
|
6
|
+
require 'robot_sweatshop/cli'
|
7
|
+
require 'robot_sweatshop/config'
|
8
|
+
require 'robot_sweatshop/create-config-directories'
|
11
9
|
|
12
10
|
program :name, 'Robot Sweatshop'
|
13
|
-
program :version, '0.3.
|
11
|
+
program :version, '0.3.1'
|
14
12
|
program :description, 'A lightweight, unopinionated CI server'
|
15
13
|
program :help, 'Author', 'Justin Scott <jvscott@gmail.com>'
|
16
14
|
|
data/bin/sweatshop-input-http
CHANGED
data/bin/sweatshop-job-assembler
CHANGED
@@ -3,21 +3,21 @@ require 'bundler/setup'
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'json'
|
5
5
|
require 'contracts'
|
6
|
-
require '
|
7
|
-
require '
|
6
|
+
require 'robot_sweatshop/queue-helper'
|
7
|
+
require 'robot_sweatshop/config'
|
8
8
|
|
9
9
|
$stdout.sync = true
|
10
10
|
include Contracts
|
11
11
|
|
12
12
|
Contract None => Hash
|
13
13
|
def empty_config
|
14
|
-
puts "Job configuration not found"
|
14
|
+
puts "Job configuration not found or empty"
|
15
15
|
{}
|
16
16
|
end
|
17
17
|
|
18
18
|
Contract None => String
|
19
|
-
def
|
20
|
-
File.expand_path configatron.
|
19
|
+
def job_path
|
20
|
+
File.expand_path configatron.job_path
|
21
21
|
end
|
22
22
|
|
23
23
|
Contract Or[String, nil], Hash => Bool
|
@@ -44,7 +44,7 @@ end
|
|
44
44
|
|
45
45
|
Contract String => Hash
|
46
46
|
def load_config_for(job_name)
|
47
|
-
load_if_exists("#{
|
47
|
+
load_if_exists("#{job_path}/#{job_name}.yaml") || empty_config
|
48
48
|
end
|
49
49
|
|
50
50
|
Contract Hash => [Hash, String]
|
@@ -69,7 +69,7 @@ def assemble_job(request)
|
|
69
69
|
return false unless error.empty? && can_work_with?(job_config, payload)
|
70
70
|
{
|
71
71
|
commands: job_config['commands'],
|
72
|
-
context: job_context(job_config['environment'], payload),
|
72
|
+
context: job_context(job_config['environment'] || {}, payload),
|
73
73
|
job_name: request['job_name']
|
74
74
|
}
|
75
75
|
end
|
data/bin/sweatshop-job-worker
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/setup'
|
2
3
|
require 'faker'
|
3
4
|
require 'fileutils'
|
4
|
-
|
5
|
-
|
5
|
+
require 'robot_sweatshop/queue-helper'
|
6
|
+
require 'robot_sweatshop/config'
|
6
7
|
|
7
8
|
$stdout.sync = true
|
8
9
|
$stderr.sync = true
|
@@ -13,7 +14,7 @@ $stderr.sync = true
|
|
13
14
|
def from_workspace(named: 'no_job_name')
|
14
15
|
workspace = "#{named}-#{@worker_id}"
|
15
16
|
puts "Workspace: #{workspace}"
|
16
|
-
path = File.expand_path "#{configatron.
|
17
|
+
path = File.expand_path "#{configatron.workspace_path}/#{workspace}"
|
17
18
|
FileUtils.mkpath path
|
18
19
|
Dir.chdir(path) { yield if block_given? }
|
19
20
|
end
|
@@ -3,8 +3,8 @@ require 'bundler/setup'
|
|
3
3
|
require 'json'
|
4
4
|
require 'ezmq'
|
5
5
|
require 'contracts'
|
6
|
-
require '
|
7
|
-
require '
|
6
|
+
require 'robot_sweatshop/config'
|
7
|
+
require 'robot_sweatshop/payload'
|
8
8
|
|
9
9
|
$stdout.sync = true
|
10
10
|
include Contracts
|
@@ -40,7 +40,8 @@ end
|
|
40
40
|
|
41
41
|
Contract String, String => Or[Hash, nil]
|
42
42
|
def payload_hash_from(payload, format)
|
43
|
-
|
43
|
+
# TODO: use require instead of require_relative
|
44
|
+
lib_file = "#{__dir__}/../lib/robot_sweatshop/payload/#{format.downcase}.rb"
|
44
45
|
return nil unless File.file?(lib_file)
|
45
46
|
require_relative lib_file
|
46
47
|
Object.const_get("#{format}Payload").new(payload).to_hash
|
@@ -49,6 +50,7 @@ end
|
|
49
50
|
Contract Hash => Hash
|
50
51
|
def parse(request)
|
51
52
|
format = detect_format_of request
|
53
|
+
return {payload: {}, error: ''} if format == 'empty'
|
52
54
|
payload = payload_hash_from request['payload'], format
|
53
55
|
return {payload: {}, error: "Can't parse #{format} payload"} if payload.nil?
|
54
56
|
{payload: payload, error: ''}
|
@@ -57,9 +59,7 @@ end
|
|
57
59
|
Contract Any => Hash
|
58
60
|
def validate(request)
|
59
61
|
return {payload: {}, error: "Invalid JSON request"} unless json? request
|
60
|
-
|
61
|
-
return {payload: {}, error: "Empty request"} if request.nil?
|
62
|
-
request
|
62
|
+
JSON.load request
|
63
63
|
end
|
64
64
|
|
65
65
|
puts 'Started'
|
data/bin/sweatshop-queue-handler
CHANGED
data/config.defaults.yaml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
pidfile_path: .robot_sweatshop/run
|
3
|
+
logfile_path: .robot_sweatshop/log
|
4
|
+
job_path: .robot_sweatshop/jobs
|
5
|
+
workspace_path: .robot_sweatshop/workspaces
|
6
|
+
moneta_path: .robot_sweatshop/db
|
7
7
|
# user: ci-bot
|
8
8
|
# group: nogroup
|
9
9
|
http_port: 8080
|
File without changes
|
File without changes
|
File without changes
|
@@ -5,10 +5,10 @@ def default_job
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def get_job_path(for_job: nil)
|
8
|
-
"#{configatron.
|
8
|
+
"#{configatron.job_path}/#{for_job}.yaml"
|
9
9
|
end
|
10
10
|
|
11
11
|
def list_jobs
|
12
|
-
|
13
|
-
puts Dir.glob("#{
|
12
|
+
job_path = File.expand_path configatron.job_path
|
13
|
+
puts Dir.glob("#{job_path}/*.yaml").map { |file| File.basename(file, '.yaml') }
|
14
14
|
end
|
@@ -4,9 +4,9 @@ require_relative '../config'
|
|
4
4
|
def store_config_for_eye
|
5
5
|
config = configatron.to_h
|
6
6
|
config = config.each do |key, value|
|
7
|
-
config[key] = File.expand_path value if key.to_s.match /
|
7
|
+
config[key] = File.expand_path value if key.to_s.match /_path/
|
8
8
|
end
|
9
|
-
config[:
|
9
|
+
config[:working_path] = Dir.pwd
|
10
10
|
File.write('/tmp/.robot_sweatshop-eye-config.yaml', config.to_yaml)
|
11
11
|
end
|
12
12
|
|
File without changes
|
@@ -6,7 +6,7 @@ require_relative 'config'
|
|
6
6
|
class MonetaQueue
|
7
7
|
attr_reader :watched_queues
|
8
8
|
|
9
|
-
@@store = Moneta.new :File, dir: File.expand_path(configatron.
|
9
|
+
@@store = Moneta.new :File, dir: File.expand_path(configatron.moneta_path)
|
10
10
|
|
11
11
|
def initialize(name)
|
12
12
|
@name = name
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/robot_sweatshop.eye
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
3
|
CONFIG = YAML.load_file '/tmp/.robot_sweatshop-eye-config.yaml'
|
4
|
-
PID_PATH = CONFIG[:
|
5
|
-
LOG_PATH = CONFIG[:
|
4
|
+
PID_PATH = CONFIG[:pidfile_path]
|
5
|
+
LOG_PATH = CONFIG[:logfile_path]
|
6
6
|
|
7
7
|
Eye.config do
|
8
|
-
logger "#{CONFIG[:
|
8
|
+
logger "#{CONFIG[:logfile_path]}/eye.log"
|
9
9
|
end
|
10
10
|
|
11
11
|
Eye.application :robot_sweatshop do
|
12
12
|
trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
|
13
13
|
check :cpu, every: 10.seconds, below: 100, times: 3
|
14
|
-
working_dir CONFIG[:
|
14
|
+
working_dir CONFIG[:working_path]
|
15
15
|
uid "#{CONFIG[:user]}" if CONFIG[:user]
|
16
16
|
gid "#{CONFIG[:group]}" if CONFIG[:group]
|
17
17
|
|
data/robot_sweatshop.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'robot_sweatshop'
|
3
|
-
gem.version = '0.3.
|
3
|
+
gem.version = '0.3.1'
|
4
4
|
gem.licenses = 'MIT'
|
5
5
|
gem.authors = ['Justin Scott']
|
6
6
|
gem.email = 'jvscott@gmail.com'
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.description = 'A lightweight, unopinionated CI server.'
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split("\n")
|
12
|
-
gem.test_files = `git ls-files --
|
12
|
+
gem.test_files = `git ls-files -- test/**/*`.split("\n")
|
13
13
|
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
14
14
|
gem.require_paths = ['lib']
|
15
15
|
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.add_runtime_dependency 'configatron'
|
25
25
|
gem.add_runtime_dependency 'moneta'
|
26
26
|
gem.add_runtime_dependency 'contracts'
|
27
|
+
gem.add_runtime_dependency 'thin'
|
27
28
|
|
28
29
|
gem.add_development_dependency 'rake'
|
29
30
|
gem.add_development_dependency 'kintama'
|
data/{kintama → test}/README.md
RENAMED
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
---
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -16,7 +16,7 @@ describe 'the Job Assembler' do
|
|
16
16
|
clear_all_queues
|
17
17
|
end
|
18
18
|
|
19
|
-
%w(Git JSON).each do |request|
|
19
|
+
%w(Git JSON MinimalJob).each do |request|
|
20
20
|
given "#{request} requests in \'payload\'" do
|
21
21
|
setup do
|
22
22
|
payload = example_job_request of_type: request
|
@@ -43,20 +43,22 @@ describe 'the Job Assembler' do
|
|
43
43
|
response['context'].each { |_key, value| assert_kind_of String, value }
|
44
44
|
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
unless request == 'EmptyPayload'
|
47
|
+
should 'build the context with a parsed payload' do
|
48
|
+
response = @client.request "mirror-#{@jobs_queue}"
|
49
|
+
response = JSON.load response
|
50
|
+
assert_kind_of Hash, response['context']
|
51
|
+
if request == 'Git'
|
52
|
+
assert_equal 'develop', response['context']['branch']
|
53
|
+
else
|
54
|
+
assert_equal 'value', response['context']['test1']
|
55
|
+
end
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
59
|
-
%w(IgnoredBranch UnknownJob NonJSON).each do |request|
|
61
|
+
%w(IgnoredBranch UnknownJob EmptyJob NonJSON).each do |request|
|
60
62
|
given "#{request} requests in \'payload\'" do
|
61
63
|
setup do
|
62
64
|
payload = example_job_request of_type: request
|
File without changes
|
@@ -13,11 +13,11 @@ describe 'the Payload Parser' do
|
|
13
13
|
@client = EZMQ::Client.new port: configatron.payload_parser_port
|
14
14
|
end
|
15
15
|
|
16
|
-
%w(Bitbucket Github JSON).each do |format|
|
16
|
+
%w(Bitbucket Github JSON Empty).each do |format|
|
17
17
|
given "valid #{format} payloads" do
|
18
18
|
setup do
|
19
19
|
payload = example_payload_request of_format: format
|
20
|
-
@response = Timeout.timeout($
|
20
|
+
@response = Timeout.timeout($for_a_moment) do
|
21
21
|
@client.request JSON.dump(payload)
|
22
22
|
end
|
23
23
|
end
|
@@ -30,6 +30,8 @@ describe 'the Payload Parser' do
|
|
30
30
|
keys = case format
|
31
31
|
when 'JSON'
|
32
32
|
%w(test1 test2)
|
33
|
+
when 'Empty'
|
34
|
+
[]
|
33
35
|
else
|
34
36
|
Payload.hash_keys
|
35
37
|
end
|
@@ -42,11 +44,11 @@ describe 'the Payload Parser' do
|
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
45
|
-
%w(
|
47
|
+
%w(NonJSON).each do |format|
|
46
48
|
given "#{format} payloads" do
|
47
49
|
setup do
|
48
50
|
payload = example_raw_payload of_format: format
|
49
|
-
@response = Timeout.timeout($
|
51
|
+
@response = Timeout.timeout($for_a_moment) do
|
50
52
|
@client.request "#{payload}"
|
51
53
|
end
|
52
54
|
end
|
File without changes
|
File without changes
|
data/{kintama → test}/run_all.rb
RENAMED
File without changes
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require 'yaml'
|
3
3
|
require 'json'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
4
|
+
require 'robot_sweatshop/moneta-queue'
|
5
|
+
require 'robot_sweatshop/payload'
|
6
|
+
require 'robot_sweatshop/config'
|
7
7
|
|
8
8
|
module QueueHelper
|
9
9
|
def clear_all_queues
|
@@ -33,7 +33,7 @@ module InHelper
|
|
33
33
|
when 'Github'
|
34
34
|
'Github-Hookshot'
|
35
35
|
else
|
36
|
-
'
|
36
|
+
'SomeUserAgent'
|
37
37
|
end
|
38
38
|
end
|
39
39
|
def example_payload_request(of_format:)
|
@@ -45,22 +45,26 @@ module InHelper
|
|
45
45
|
def job_request_data(type)
|
46
46
|
case type
|
47
47
|
when 'Git'
|
48
|
-
['Bitbucket', 'git_job'] # develop branch
|
48
|
+
['Bitbucket', 'git_job'] # develop branch payload
|
49
49
|
when 'JSON'
|
50
50
|
['JSON', 'test_job']
|
51
|
+
when 'MinimalJob'
|
52
|
+
['JSON', 'minimal_job']
|
51
53
|
when 'IgnoredBranch'
|
52
|
-
['Github', 'git_job'] # master branch
|
54
|
+
['Github', 'git_job'] # master branch payload
|
53
55
|
when 'UnknownJob'
|
54
56
|
['Bitbucket', 'unknown_job']
|
57
|
+
when 'EmptyJob'
|
58
|
+
['JSON', 'empty_job']
|
55
59
|
when 'NonJSON'
|
56
|
-
['
|
60
|
+
['NonJSON', 'test_job']
|
57
61
|
else
|
58
|
-
['
|
62
|
+
['', '']
|
59
63
|
end
|
60
64
|
end
|
61
65
|
def example_job_request(of_type:)
|
62
|
-
format, job_name
|
63
|
-
JSON.generate payload:
|
66
|
+
format, job_name = job_request_data of_type
|
67
|
+
JSON.generate payload: example_raw_payload(of_format: format),
|
64
68
|
job_name: job_name,
|
65
69
|
user_agent: user_agent_for(format)
|
66
70
|
end
|
@@ -73,7 +77,7 @@ module JobHelper
|
|
73
77
|
job_name: 'test_job'
|
74
78
|
end
|
75
79
|
def reset_test_file
|
76
|
-
test_file = File.expand_path "#{configatron.
|
80
|
+
test_file = File.expand_path "#{configatron.workspace_path}/test_job-testingid/test.txt"
|
77
81
|
FileUtils.rm_rf test_file
|
78
82
|
test_file
|
79
83
|
end
|
@@ -1,12 +1,13 @@
|
|
1
|
-
$for_a_moment = 0.
|
1
|
+
$for_a_moment = 0.2
|
2
2
|
$for_a_while = 0.5
|
3
3
|
$for_io_calls = 1
|
4
4
|
$for_everything = 2
|
5
5
|
|
6
6
|
Kintama.on_start do
|
7
7
|
puts `#{__dir__}/../../bin/sweatshop start --testing`
|
8
|
-
|
9
|
-
|
8
|
+
%w(test minimal git empty).each do |job_file|
|
9
|
+
FileUtils.cp "#{__dir__}/../data/#{job_file}_job.yaml", File.expand_path(configatron.job_path)
|
10
|
+
end
|
10
11
|
sleep $for_everything
|
11
12
|
end
|
12
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: robot_sweatshop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Scott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04
|
11
|
+
date: 2015-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: thin
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rake
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -249,41 +263,43 @@ files:
|
|
249
263
|
- bin/sweatshop-queue-handler
|
250
264
|
- bin/sweatshop-queue-watcher
|
251
265
|
- config.defaults.yaml
|
252
|
-
- kintama/README.md
|
253
|
-
- kintama/data/git_job.yaml
|
254
|
-
- kintama/data/payload_data.yaml
|
255
|
-
- kintama/data/test_job.yaml
|
256
|
-
- kintama/end-to-end_spec.rb
|
257
|
-
- kintama/input_http_spec.rb
|
258
|
-
- kintama/job_assembler_spec.rb
|
259
|
-
- kintama/job_worker_spec.rb
|
260
|
-
- kintama/moneta-queue_spec.rb
|
261
|
-
- kintama/payload_parser_spec.rb
|
262
|
-
- kintama/queue_broadcaster_spec.rb
|
263
|
-
- kintama/queue_handler_spec.rb
|
264
|
-
- kintama/run_all.rb
|
265
|
-
- kintama/shared/helpers.rb
|
266
|
-
- kintama/shared/process_spawning.rb
|
267
266
|
- lib/README.md
|
268
|
-
- lib/
|
269
|
-
- lib/
|
270
|
-
- lib/
|
271
|
-
- lib/
|
272
|
-
- lib/
|
273
|
-
- lib/
|
274
|
-
- lib/
|
275
|
-
- lib/
|
276
|
-
- lib/
|
277
|
-
- lib/
|
278
|
-
- lib/
|
279
|
-
- lib/
|
280
|
-
- lib/
|
281
|
-
- lib/
|
282
|
-
- lib/
|
267
|
+
- lib/robot_sweatshop.rb
|
268
|
+
- lib/robot_sweatshop/cli.rb
|
269
|
+
- lib/robot_sweatshop/cli/common.rb
|
270
|
+
- lib/robot_sweatshop/cli/config.rb
|
271
|
+
- lib/robot_sweatshop/cli/job.rb
|
272
|
+
- lib/robot_sweatshop/cli/start.rb
|
273
|
+
- lib/robot_sweatshop/config.rb
|
274
|
+
- lib/robot_sweatshop/create-config-directories.rb
|
275
|
+
- lib/robot_sweatshop/moneta-queue.rb
|
276
|
+
- lib/robot_sweatshop/payload.rb
|
277
|
+
- lib/robot_sweatshop/payload/bitbucket.rb
|
278
|
+
- lib/robot_sweatshop/payload/github.rb
|
279
|
+
- lib/robot_sweatshop/payload/json.rb
|
280
|
+
- lib/robot_sweatshop/payload/payload.rb
|
281
|
+
- lib/robot_sweatshop/queue-helper.rb
|
283
282
|
- robot_sweatshop.eye
|
284
283
|
- robot_sweatshop.gemspec
|
285
284
|
- robot_sweatshop.production.eye
|
286
285
|
- robot_sweatshop.testing.eye
|
286
|
+
- test/README.md
|
287
|
+
- test/data/empty_job.yaml
|
288
|
+
- test/data/git_job.yaml
|
289
|
+
- test/data/minimal_job.yaml
|
290
|
+
- test/data/payload_data.yaml
|
291
|
+
- test/data/test_job.yaml
|
292
|
+
- test/end-to-end_spec.rb
|
293
|
+
- test/input_http_spec.rb
|
294
|
+
- test/job_assembler_spec.rb
|
295
|
+
- test/job_worker_spec.rb
|
296
|
+
- test/moneta-queue_spec.rb
|
297
|
+
- test/payload_parser_spec.rb
|
298
|
+
- test/queue_broadcaster_spec.rb
|
299
|
+
- test/queue_handler_spec.rb
|
300
|
+
- test/run_all.rb
|
301
|
+
- test/shared/helpers.rb
|
302
|
+
- test/shared/process_spawning.rb
|
287
303
|
homepage: http://www.github.com/jscott/robot_sweatshop/
|
288
304
|
licenses:
|
289
305
|
- MIT
|
@@ -304,14 +320,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
304
320
|
version: '0'
|
305
321
|
requirements: []
|
306
322
|
rubyforge_project:
|
307
|
-
rubygems_version: 2.
|
323
|
+
rubygems_version: 2.2.3
|
308
324
|
signing_key:
|
309
325
|
specification_version: 4
|
310
326
|
summary: Robot Sweatshop
|
311
327
|
test_files:
|
312
|
-
-
|
313
|
-
-
|
314
|
-
-
|
315
|
-
-
|
316
|
-
-
|
328
|
+
- test/data/empty_job.yaml
|
329
|
+
- test/data/git_job.yaml
|
330
|
+
- test/data/minimal_job.yaml
|
331
|
+
- test/data/payload_data.yaml
|
332
|
+
- test/data/test_job.yaml
|
333
|
+
- test/shared/helpers.rb
|
334
|
+
- test/shared/process_spawning.rb
|
317
335
|
has_rdoc:
|