robot_sweatshop 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -10
- data/bin/lib/setup.rb +25 -0
- data/bin/sweatshop +9 -1
- data/config.rb +0 -14
- data/config.yaml +2 -0
- data/robot_sweatshop.eye +2 -0
- data/robot_sweatshop.gemspec +3 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dba386e07d0e4cced4e3f798b2e8b0bad86f7fbf
|
4
|
+
data.tar.gz: d45191b2778dd0da0c68a3fa894af7b69adc6155
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bacf799921528b9999ba5f4bf14f007f471dc25804ac573f7a0024ee0911e5120bb8cdabd7525a74b2fa4fa8740b0461738fb2d9fe83d9c7012a3367f1eb7d99
|
7
|
+
data.tar.gz: 6f1799495398e16f2d50e3be43728513367dece4c5a7cca81354aaeb4893e656b85e88e869cb783e232fcce85c1631c25d3a0a578af10430ea098c439ccec9e2
|
data/README.md
CHANGED
@@ -6,12 +6,11 @@ Robot Sweatshop is a single-purpose CI server that runs collections of arbitrary
|
|
6
6
|
|
7
7
|
# Usage
|
8
8
|
|
9
|
-
|
10
|
-
gem install robot_sweatshop
|
11
|
-
sweatshop start
|
12
|
-
```
|
9
|
+
First install [ZMQ as described in the EZMQ gem](https://github.com/colstrom/ezmq). Then `gem install robot_sweatshop`.
|
13
10
|
|
14
|
-
|
11
|
+
You can now use `sweatshop config` to configure the processes, `sweatshop setup` to ensure the directories in your config exist, and `sweatshop start` to run everything.
|
12
|
+
|
13
|
+
Robot Sweatshop uses [Eye](https://github.com/kostya/eye) to handle its processes so you can use its commandline tool to monitor their status.
|
15
14
|
|
16
15
|
After configuring a job, POST a payload to `localhost:8080/:format/payload-for/:job`. For example, triggering a Bitbucket Git POST hook on `localhost:8080/bitbucket/payload-for/example` will parse the payload and run the 'example' job with the payload data in the environment.
|
17
16
|
|
@@ -24,20 +23,19 @@ Currently supported formats:
|
|
24
23
|
|
25
24
|
# Configuration
|
26
25
|
|
27
|
-
The server isn't much help without a job to run. Run `
|
28
|
-
|
29
|
-
You can also use `sudo -E sweatshop config` to create and edit a user configuration at `/etc/robot_sweatshop/config.yaml`.
|
26
|
+
The server isn't much help without a job to run. Run `sweatshop job <name>` to create a new job or edit an existing one.
|
30
27
|
|
31
28
|
Not sure if your job is valid? Run `sweatshop job --inspection <name>` to see if there's something you overlooked.
|
32
29
|
|
33
30
|
# Security
|
34
31
|
|
35
|
-
|
32
|
+
You probably don't want to run Robot Sweatshop as a sudo user. Create a testing user and group and point to them in the configuration file to run Robot Sweatshop processes with those permissions.
|
36
33
|
|
37
34
|
# Roadmap
|
38
35
|
|
39
36
|
- CLI job running
|
40
|
-
-
|
37
|
+
- custom/empty payloads
|
38
|
+
- Common scrips such as git repo syncing and creating a job run ID
|
41
39
|
- Support for multiple workers
|
42
40
|
- Better logging for the processes
|
43
41
|
- Improved architecture:
|
data/bin/lib/setup.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'configatron'
|
3
|
+
require_relative 'common'
|
4
|
+
require_relative '../../config'
|
5
|
+
|
6
|
+
config_directories = [
|
7
|
+
configatron.common.logfile_directory,
|
8
|
+
configatron.common.pidfile_directory,
|
9
|
+
configatron.common.user_config_directory,
|
10
|
+
configatron.queue.moneta_directory,
|
11
|
+
configatron.assembler.job_directory,
|
12
|
+
configatron.worker.workspace_directory
|
13
|
+
]
|
14
|
+
config_directories.each do |directory|
|
15
|
+
user = configatron.common.user
|
16
|
+
group = configatron.common.group
|
17
|
+
if Dir.exists? directory
|
18
|
+
notify :info, "'#{directory}' already exists"
|
19
|
+
else
|
20
|
+
FileUtils.mkdir_p directory
|
21
|
+
notify :success, "Created '#{directory}' and set owner as #{user}:#{group}"
|
22
|
+
end
|
23
|
+
FileUtils.chown_R user, group, directory
|
24
|
+
notify :success, "Recursively set owner of '#{directory}' as #{user}:#{group}\n\n"
|
25
|
+
end
|
data/bin/sweatshop
CHANGED
@@ -10,7 +10,7 @@ require_relative 'lib/config'
|
|
10
10
|
require_relative '../config'
|
11
11
|
|
12
12
|
program :name, 'Robot Sweatshop'
|
13
|
-
program :version, '0.1.
|
13
|
+
program :version, '0.1.2'
|
14
14
|
program :description, 'A lightweight, unopinionated CI server'
|
15
15
|
program :help, 'Author', 'Justin Scott <jvscott@gmail.com>'
|
16
16
|
|
@@ -53,6 +53,14 @@ command :stop do |c|
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
command :setup do |c|
|
57
|
+
c.syntax = 'sweatshop setup'
|
58
|
+
c.description = 'Create the directories and set permissions as specified in the config.'
|
59
|
+
c.action do
|
60
|
+
require_relative 'lib/setup'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
56
64
|
command :directory do |c|
|
57
65
|
c.syntax = 'sweatshop directory'
|
58
66
|
c.description = 'Return the path that Robot Sweatshop runs from.'
|
data/config.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'fileutils'
|
2
1
|
require 'configatron'
|
3
2
|
require 'yaml'
|
4
3
|
|
@@ -15,16 +14,3 @@ configurations.each do |config_path|
|
|
15
14
|
configatron.configure_from_hash hash
|
16
15
|
end
|
17
16
|
end
|
18
|
-
|
19
|
-
config_directories = [
|
20
|
-
configatron.common.logfile_directory,
|
21
|
-
configatron.common.pidfile_directory,
|
22
|
-
configatron.common.user_config_directory,
|
23
|
-
configatron.queue.moneta_directory,
|
24
|
-
configatron.assembler.job_directory,
|
25
|
-
configatron.worker.workspace_directory
|
26
|
-
]
|
27
|
-
config_directories.each do |directory|
|
28
|
-
FileUtils.mkdir_p directory unless Dir.exists? directory
|
29
|
-
# TODO: set chmod to appropriate user
|
30
|
-
end
|
data/config.yaml
CHANGED
data/robot_sweatshop.eye
CHANGED
@@ -12,6 +12,8 @@ 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
14
|
working_dir "#{__dir__}/lib"
|
15
|
+
uid "#{configatron.common.user}"
|
16
|
+
gid "#{configatron.common.group}"
|
15
17
|
|
16
18
|
group 'input' do
|
17
19
|
process :http do
|
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.1.
|
3
|
+
gem.version = '0.1.6'
|
4
4
|
gem.licenses = 'MIT'
|
5
5
|
gem.authors = ['Justin Scott']
|
6
6
|
gem.email = 'jvscott@gmail.com'
|
@@ -12,6 +12,8 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.test_files = `git ls-files -- kintama/**/*`.split("\n")
|
13
13
|
gem.executables = `git ls-files -- bin/sweatshop`.split("\n").map { |f| File.basename(f) }
|
14
14
|
|
15
|
+
gem.required_ruby_version = '>= 2.1'
|
16
|
+
|
15
17
|
gem.add_runtime_dependency 'sinatra'
|
16
18
|
gem.add_runtime_dependency 'ezmq'
|
17
19
|
gem.add_runtime_dependency 'faker'
|
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.1.
|
4
|
+
version: 0.1.6
|
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-
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -181,6 +181,7 @@ files:
|
|
181
181
|
- bin/lib/config.rb
|
182
182
|
- bin/lib/inspect.rb
|
183
183
|
- bin/lib/job.rb
|
184
|
+
- bin/lib/setup.rb
|
184
185
|
- bin/lib/start.rb
|
185
186
|
- bin/sweatshop
|
186
187
|
- config.rb
|
@@ -228,7 +229,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
228
229
|
requirements:
|
229
230
|
- - ">="
|
230
231
|
- !ruby/object:Gem::Version
|
231
|
-
version: '
|
232
|
+
version: '2.1'
|
232
233
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
233
234
|
requirements:
|
234
235
|
- - ">="
|