robot_sweatshop 0.4.13 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -3
- data/FUTURE.md +6 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -22
- data/bin/sweatshop +9 -16
- data/config.defaults.yaml +1 -0
- data/docs/README.md +13 -0
- data/docs/architecture.dot +1 -1
- data/docs/architecture.gif +0 -0
- data/lib/robot_sweatshop/cli/config.rb +2 -2
- data/{robot_sweatshop.eye → lib/robot_sweatshop/cli/robot_sweatshop.eye.erb} +17 -13
- data/lib/robot_sweatshop/cli/start.rb +19 -3
- data/robot_sweatshop.gemspec +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e497e652596a13ab375886a0c9adfdbd6e5c33f
|
4
|
+
data.tar.gz: f6b1e12c4b42f20cdb391ee838600b537404244c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3e21f54d698b659bf86d0f07a699d2213d9b65450b101b5c4e1827483c4319e4f5b572f420ccd76897fe6d0e165a3549816143e9b262462153ed75248f335f0
|
7
|
+
data.tar.gz: 21556cc53d23695339f8d67d7dc7188a0ee2ce5848f9e4c9237d1e3161202c5b4089d1234bdb899744a2934408f19a3e2dea80a6270f6f58533ad5af0e8644da
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,22 @@
|
|
1
1
|
# Change Log
|
2
|
-
All notable changes to this project will be documented in this file.
|
3
|
-
This project adheres to [Semantic Versioning](http://semver.org/).
|
2
|
+
All notable changes to this project will be documented in this file as specified by [http://keepachangelog.com/](http://keepachangelog.com/). This project adheres to [Semantic Versioning](http://semver.org/).
|
4
3
|
|
5
|
-
## [Unreleased]
|
4
|
+
## [Unreleased] - unreleased
|
5
|
+
|
6
|
+
## [1.0.0] - 2015-08-10
|
6
7
|
### Added
|
7
8
|
- Multiple worker support
|
8
9
|
|
10
|
+
### Changed
|
11
|
+
- `sweatshop configure` takes a `--user` flag instead of looking for string arguments
|
12
|
+
- `sweatshop config` renamed `sweatshop configure`
|
13
|
+
- `sweatshop job` renamed `sweatshop plan`
|
14
|
+
|
15
|
+
## [0.4.13] - 2015-07-31
|
16
|
+
### Added
|
17
|
+
- Logging over ZMQ
|
18
|
+
- The Logger process to write files and reflect messages
|
19
|
+
|
9
20
|
## [0.4.12] - 2015-07-14
|
10
21
|
### Fixed
|
11
22
|
- Config erroring out if you don't have a home path
|
data/FUTURE.md
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
- Mascot/logo
|
2
|
+
- Use something appropriate than TCP for ZMQ connections
|
3
|
+
- Jenkins-to-Sweatshop job converting script
|
4
|
+
- Take a look at beefcake for data versioning/serialization
|
5
|
+
- CLI configuration via chomp and/or flags
|
6
|
+
- Use [eye-http](https://github.com/kostya/eye-http) somewhere?
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Robot Sweatshop is a single-purpose CI server that runs collections of arbitrary
|
|
11
11
|
- install [ZMQ as described in the EZMQ gem](https://github.com/colstrom/ezmq#operating-system-notes)
|
12
12
|
- `gem install robot_sweatshop`
|
13
13
|
- `sweatshop start`
|
14
|
-
- `sweatshop
|
14
|
+
- `sweatshop plan example --auto`
|
15
15
|
- `curl -d '' localhost:10555/run/example`
|
16
16
|
- `cat .robot_sweatshop/log/worker.log`
|
17
17
|
|
@@ -43,24 +43,3 @@ By default, Robot Sweatshop looks in your current working path to configure and
|
|
43
43
|
## Security
|
44
44
|
|
45
45
|
You probably don't want to run Robot Sweatshop as a sudo user. Create a testing user and group and run `sweatshop start` as them.
|
46
|
-
|
47
|
-
## Roadmap
|
48
|
-
|
49
|
-
1.0
|
50
|
-
|
51
|
-
- Mascot/logo
|
52
|
-
|
53
|
-
1.1
|
54
|
-
|
55
|
-
- Use something appropriate than TCP for ZMQ connections
|
56
|
-
- Easier way to run multiple workers
|
57
|
-
- Push/pull out node that worker streams output to
|
58
|
-
- Add worker tags to output so it can all go to one file
|
59
|
-
|
60
|
-
Beyond
|
61
|
-
|
62
|
-
- Jenkins-to-Sweatshop job converting script
|
63
|
-
- Take a look at beefcake for data versioning/serialization
|
64
|
-
- Better logging for the processes
|
65
|
-
- CLI configuration via chomp and/or flags
|
66
|
-
- Use [eye-http](https://github.com/kostya/eye-http) for the '/' route?
|
data/bin/sweatshop
CHANGED
@@ -7,12 +7,12 @@ require 'robot_sweatshop/config'
|
|
7
7
|
require 'robot_sweatshop/create-config-directories'
|
8
8
|
|
9
9
|
program :name, 'Robot Sweatshop'
|
10
|
-
program :version, '0.
|
10
|
+
program :version, '1.0.0'
|
11
11
|
program :description, 'A lightweight, nonopinionated CI server'
|
12
12
|
program :help, 'Author', 'Justin Scott <jvscott@gmail.com>'
|
13
13
|
|
14
|
-
command :
|
15
|
-
c.syntax = 'sweatshop
|
14
|
+
command :plan do |c|
|
15
|
+
c.syntax = 'sweatshop plan <name>'
|
16
16
|
c.description = 'Creates and edits jobs.'
|
17
17
|
c.option '--auto', 'Create the file without opening the editor.'
|
18
18
|
c.action do |args, options|
|
@@ -24,22 +24,15 @@ command :job do |c|
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
command :
|
28
|
-
c.syntax = 'sweatshop
|
29
|
-
c.description = '
|
30
|
-
c.action do
|
31
|
-
CLI::Job.list
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
command :config do |c|
|
36
|
-
c.syntax = 'sweatshop config [options]'
|
37
|
-
c.description = 'Creates and edits the user configuration file.'
|
27
|
+
command :configure do |c|
|
28
|
+
c.syntax = 'sweatshop configure [options]'
|
29
|
+
c.description = 'Creates and edits the configuration file.'
|
38
30
|
c.option '--auto', 'Create the file without opening the editor.'
|
31
|
+
c.option '--user', 'Create the file in the user\'s home directory instead of in the local path.'
|
39
32
|
c.action do |args, options|
|
40
33
|
options.default auto: false
|
41
|
-
|
42
|
-
config_file = CLI::Config.path
|
34
|
+
options.default user: false
|
35
|
+
config_file = CLI::Config.path for_user: options.user
|
43
36
|
CLI.create config_file, with_contents: CLI::Config.default
|
44
37
|
CLI.edit config_file unless options.auto
|
45
38
|
end
|
data/config.defaults.yaml
CHANGED
data/docs/README.md
CHANGED
@@ -72,6 +72,19 @@ PUSH {
|
|
72
72
|
}
|
73
73
|
```
|
74
74
|
|
75
|
+
## logger
|
76
|
+
|
77
|
+
```
|
78
|
+
PUB {
|
79
|
+
text String
|
80
|
+
process String
|
81
|
+
user String
|
82
|
+
host String
|
83
|
+
}
|
84
|
+
```
|
85
|
+
|
75
86
|
# Notes
|
76
87
|
|
77
88
|
Context is passed around with string keys because it's user provided. Everything else is passed with symbol keys
|
89
|
+
|
90
|
+
Anything published to the logger will be republished to the reflector port
|
data/docs/architecture.dot
CHANGED
data/docs/architecture.gif
CHANGED
Binary file
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
|
-
# TODO: per-user temp file
|
4
3
|
CONFIG_PATH = File.expand_path '~/.robot_sweatshop/compiled_config.yaml'
|
5
4
|
CONFIG = YAML.load_file CONFIG_PATH
|
6
5
|
PID_PATH = CONFIG[:pidfile_path]
|
@@ -17,44 +16,49 @@ Eye.application :robot_sweatshop do
|
|
17
16
|
group 'services' do
|
18
17
|
process :job_dictionary do
|
19
18
|
pid_file "#{PID_PATH}/job-dictionary.pid"
|
20
|
-
start_command "
|
19
|
+
start_command "sweatshop-job-dictionary"
|
21
20
|
daemonize true
|
22
21
|
end
|
23
22
|
process :payload_parser do
|
24
23
|
pid_file "#{PID_PATH}/payload-parser.pid"
|
25
|
-
start_command "
|
24
|
+
start_command "sweatshop-payload-parser"
|
26
25
|
daemonize true
|
27
26
|
end
|
28
27
|
process :conveyor do
|
29
28
|
pid_file "#{PID_PATH}/conveyor.pid"
|
30
|
-
start_command "
|
29
|
+
start_command "sweatshop-conveyor"
|
31
30
|
daemonize true
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
34
|
+
group 'workers' do
|
35
|
+
<% worker_count.times do |index| %>
|
36
|
+
process :worker_<%= index+1 %> do
|
37
|
+
pid_file "#{PID_PATH}/worker_<%= index+1 %>.pid"
|
38
|
+
start_command "sweatshop-worker <%= index+1 %>"
|
39
|
+
daemonize true
|
40
|
+
end
|
41
|
+
<% end %>
|
42
|
+
end
|
43
|
+
|
35
44
|
process :overseer do
|
36
45
|
pid_file "#{PID_PATH}/overseer.pid"
|
37
|
-
start_command "
|
46
|
+
start_command "sweatshop-overseer"
|
38
47
|
daemonize true
|
39
48
|
end
|
40
49
|
process :api do
|
41
50
|
pid_file "#{PID_PATH}/api.pid"
|
42
|
-
start_command "
|
51
|
+
start_command "sweatshop-api"
|
43
52
|
daemonize true
|
44
53
|
end
|
45
54
|
process :assembler do
|
46
55
|
pid_file "#{PID_PATH}/assembler.pid"
|
47
|
-
start_command "
|
48
|
-
daemonize true
|
49
|
-
end
|
50
|
-
process :worker do
|
51
|
-
pid_file "#{PID_PATH}/worker.pid"
|
52
|
-
start_command "#{__dir__}/bin/sweatshop-worker"
|
56
|
+
start_command "sweatshop-assembler"
|
53
57
|
daemonize true
|
54
58
|
end
|
55
59
|
process :logger do
|
56
60
|
pid_file "#{PID_PATH}/logger.pid"
|
57
|
-
start_command "
|
61
|
+
start_command "sweatshop-logger"
|
58
62
|
daemonize true
|
59
63
|
end
|
60
64
|
end
|
@@ -1,18 +1,34 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'terminal-announce'
|
3
3
|
require 'robot_sweatshop/config'
|
4
|
+
require 'erubis'
|
4
5
|
|
5
6
|
module CLI
|
6
7
|
# Methods for starting Robot Sweatshop
|
7
8
|
module Start
|
8
9
|
def self.sweatshop
|
10
|
+
Announce.info `eye stop robot_sweatshop:workers`
|
11
|
+
load_eye_config
|
12
|
+
Announce.info `eye restart robot_sweatshop`
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.load_eye_config
|
9
16
|
Config.compile_to_file
|
10
|
-
|
11
|
-
output = `eye load #{eye_config}`
|
17
|
+
output = `eye load #{generate_eye_config}`
|
12
18
|
fail output if $?.exitstatus != 0
|
13
19
|
Announce.success "Robot Sweatshop loaded"
|
14
|
-
Announce.info `eye restart robot_sweatshop`
|
15
20
|
Announce.info 'Run \'eye --help\' for more info on debugging'
|
16
21
|
end
|
22
|
+
|
23
|
+
def self.generate_eye_config
|
24
|
+
template = File.read "#{__dir__}/robot_sweatshop.eye.erb"
|
25
|
+
eruby = Erubis::Eruby.new template
|
26
|
+
compiled_config = eruby.result worker_count: configatron.worker_count
|
27
|
+
compiled_config_file = File.expand_path '~/.robot_sweatshop/robot_sweatshop.eye'
|
28
|
+
File.open compiled_config_file, 'w' do |file|
|
29
|
+
file.write compiled_config
|
30
|
+
file.path
|
31
|
+
end
|
32
|
+
end
|
17
33
|
end
|
18
34
|
end
|
data/robot_sweatshop.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'robot_sweatshop'
|
3
|
-
gem.version = '0.
|
3
|
+
gem.version = '1.0.0'
|
4
4
|
gem.licenses = 'MIT'
|
5
5
|
gem.authors = ['Justin Scott']
|
6
6
|
gem.email = 'jvscott@gmail.com'
|
7
|
-
gem.homepage = 'http://
|
7
|
+
gem.homepage = 'http://robotsweat.com'
|
8
8
|
gem.summary = 'Robot Sweatshop'
|
9
9
|
gem.description = 'A lightweight, nonopinionated CI server.'
|
10
10
|
|
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.
|
4
|
+
version: 1.0.0
|
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-08-
|
11
|
+
date: 2015-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faker
|
@@ -280,6 +280,7 @@ files:
|
|
280
280
|
- ".gitignore"
|
281
281
|
- ".rubocop.yml"
|
282
282
|
- CHANGELOG.md
|
283
|
+
- FUTURE.md
|
283
284
|
- Gemfile
|
284
285
|
- Gemfile.lock
|
285
286
|
- LICENSE
|
@@ -303,6 +304,7 @@ files:
|
|
303
304
|
- lib/robot_sweatshop/cli/common.rb
|
304
305
|
- lib/robot_sweatshop/cli/config.rb
|
305
306
|
- lib/robot_sweatshop/cli/job.rb
|
307
|
+
- lib/robot_sweatshop/cli/robot_sweatshop.eye.erb
|
306
308
|
- lib/robot_sweatshop/cli/start.rb
|
307
309
|
- lib/robot_sweatshop/config.rb
|
308
310
|
- lib/robot_sweatshop/connections.rb
|
@@ -316,7 +318,6 @@ files:
|
|
316
318
|
- lib/robot_sweatshop/templates/default_job.yaml
|
317
319
|
- lib/robot_sweatshop/templates/index.html.eruby
|
318
320
|
- lib/robot_sweatshop/templates/log.html.eruby
|
319
|
-
- robot_sweatshop.eye
|
320
321
|
- robot_sweatshop.gemspec
|
321
322
|
- test/README.md
|
322
323
|
- test/all.rb
|
@@ -343,7 +344,7 @@ files:
|
|
343
344
|
- test/shared/scaffolding.rb
|
344
345
|
- test/shared/stub.rb
|
345
346
|
- test/worker_spec.rb
|
346
|
-
homepage: http://
|
347
|
+
homepage: http://robotsweat.com
|
347
348
|
licenses:
|
348
349
|
- MIT
|
349
350
|
metadata: {}
|