gorgon 0.8.0 → 0.8.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/Gemfile.lock +1 -1
- data/README.md +7 -10
- data/daemon_with_upstart_and_rvm.md +3 -1
- data/lib/gorgon/settings/files_content.rb +1 -1
- data/lib/gorgon/settings/initial_files_creator.rb +11 -18
- data/lib/gorgon/settings/rails_project_files_content.rb +54 -60
- data/lib/gorgon/version.rb +1 -1
- data/rsync_transport.md +20 -0
- data/tutorial.md +6 -8
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eef07ed03530c2480e46991f18ffaedcb485dd2e
|
4
|
+
data.tar.gz: 69d4d71b43c58958eafbb489e9fea40aac62eea1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e546e88bc56e0e7d91a87691246d0ba555fdacb344f0cc832c968ce0f07599db929123061da6b6608f3d27cf7d754c82655153a193a0b9e0ca226d632841d397
|
7
|
+
data.tar.gz: fc1d646ada5533fdd070a7cdaeabdf61a3219f8edca3150fe69aabe62afebbea33c257515692bb1847133f6a1f9ecd470b0388b80554621cb05571d6ec831705
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -26,14 +26,10 @@ Gotchas
|
|
26
26
|
|
27
27
|
Also note that the steps in the tutorial are **not** meant to work on every project, they will only give you initial settings. You will probably have to modify the following files:
|
28
28
|
* gorgon.json
|
29
|
-
* test/gorgon_callbacks/
|
30
|
-
*
|
31
|
-
* test/gorgon_callbacks/after\_creating\_workers.rb
|
32
|
-
* test/gorgon_callbacks/before\_start.rb
|
33
|
-
* test/gorgon_callbacks/after\_complete.rb
|
34
|
-
* ~/.gorgon/gorgon_listener.json
|
29
|
+
* {test, spec}/gorgon_callbacks/gorgon_callbacks.rb
|
30
|
+
* gorgon_listener.json (located in your project root or in ~/.gorgon/)
|
35
31
|
|
36
|
-
If you modify ~/.gorgon/gorgon_listener.json, make sure you restart the listener
|
32
|
+
If you modify ~/.gorgon/gorgon_listener.json, make sure you restart the listener.
|
37
33
|
|
38
34
|
Configuration
|
39
35
|
---------------------
|
@@ -42,13 +38,14 @@ Configuration
|
|
42
38
|
This file contains project-specific settings for gorgon, such as:
|
43
39
|
|
44
40
|
* The connection information for AMQP
|
45
|
-
*
|
41
|
+
* The connection information for File Server
|
42
|
+
* Information about how clients can rsync the working directory (optional). See more info [here](/rsync_transport.md)
|
46
43
|
* Files that can be excluded by rsync
|
47
|
-
*
|
44
|
+
* Callback file containing Ruby code to be used as callbacks
|
48
45
|
* A glob for generating the list of test files
|
49
46
|
* The file used for Originator's logs
|
50
47
|
|
51
|
-
See [gorgon.json example](/gorgon.json.sample) for
|
48
|
+
See [gorgon.json example](/gorgon.json.sample) for an example file.
|
52
49
|
|
53
50
|
### gorgon_listener.json
|
54
51
|
This file contains the listener-specific settings, such as:
|
@@ -11,4 +11,6 @@ These steps will guarantee that the listener is always running and it will start
|
|
11
11
|
1. ``rvmsudo foreman export upstart /etc/init -a gorgon -u `whoami` -c listener=1``
|
12
12
|
1. `sudo start gorgon`
|
13
13
|
1. open ’/etc/init/gorgon.conf’ and add `start on runlevel [2345]` at the top of the file
|
14
|
-
1. Check if listener is running: Run `tail /tmp/gorgon-remote.log` and the last line should say “Waiting for jobs…”
|
14
|
+
1. Check if listener is running: Run `tail /tmp/gorgon-remote.log` and the last line should say “Waiting for jobs…”
|
15
|
+
|
16
|
+
If you modify ~/.gorgon/gorgon_listener.json, make sure you restart the listener by running `sudo restart gorgon`
|
@@ -25,7 +25,7 @@ module Settings
|
|
25
25
|
|
26
26
|
def self.create_gorgon_json content
|
27
27
|
if File.exist? GORGON_JSON_FILE
|
28
|
-
puts "
|
28
|
+
puts "#{GORGON_JSON_FILE} exists. Skipping..."
|
29
29
|
return
|
30
30
|
end
|
31
31
|
|
@@ -34,8 +34,8 @@ module Settings
|
|
34
34
|
file_server: {host: content.file_server_host},
|
35
35
|
job: {
|
36
36
|
sync: {
|
37
|
-
exclude: content.sync_exclude
|
38
|
-
|
37
|
+
exclude: content.sync_exclude,
|
38
|
+
rsync_transport: "ssh"
|
39
39
|
}
|
40
40
|
},
|
41
41
|
files: content.files
|
@@ -45,12 +45,11 @@ module Settings
|
|
45
45
|
config[:originator_log_file] = log_file if log_file
|
46
46
|
|
47
47
|
if content.callbacks
|
48
|
-
|
48
|
+
create_callback_file(content)
|
49
49
|
|
50
|
-
config[:job][:callbacks] =
|
51
|
-
|
52
|
-
|
53
|
-
end
|
50
|
+
config[:job][:callbacks] = {
|
51
|
+
callbacks_class_file: content.callbacks[:file_name]
|
52
|
+
}
|
54
53
|
end
|
55
54
|
|
56
55
|
puts "Creating #{GORGON_JSON_FILE}..."
|
@@ -59,23 +58,17 @@ module Settings
|
|
59
58
|
end
|
60
59
|
end
|
61
60
|
|
62
|
-
def self.
|
63
|
-
|
64
|
-
content.callbacks.each do |callback|
|
65
|
-
create_callback_file content.callbacks_dir, callback
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.create_callback_file dir, callback
|
70
|
-
file_path = "#{dir}/#{callback[:file_name]}"
|
61
|
+
def self.create_callback_file(content)
|
62
|
+
file_path = content.callbacks[:file_name]
|
71
63
|
if File.exist? file_path
|
72
64
|
puts "#{file_path} already exists. Skipping..."
|
73
65
|
return
|
74
66
|
end
|
75
67
|
|
76
68
|
puts "Creating #{file_path}..."
|
69
|
+
FileUtils.mkdir_p(File.dirname(file_path))
|
77
70
|
File.open(file_path, 'w') do |f|
|
78
|
-
f.write
|
71
|
+
f.write content.callbacks[:file_content]
|
79
72
|
end
|
80
73
|
end
|
81
74
|
end
|
@@ -14,95 +14,89 @@ module Settings
|
|
14
14
|
private
|
15
15
|
|
16
16
|
def create_callbacks
|
17
|
-
@
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
content: before_creating_workers_content},
|
22
|
-
{name: :after_creating_workers, file_name: "after_creating_workers.rb",
|
23
|
-
content: after_creating_workers_content},
|
24
|
-
{name: :before_start, file_name: "before_start.rb",
|
25
|
-
content: before_start_content}]
|
17
|
+
@callbacks = {
|
18
|
+
file_name: "#{get_app_subdir}/gorgon_callbacks/gorgon_callbacks.rb",
|
19
|
+
file_content: callback_file_content
|
20
|
+
}
|
26
21
|
end
|
27
22
|
|
28
23
|
def get_app_subdir
|
29
24
|
if Dir.exist? "test"
|
30
|
-
"test
|
25
|
+
"test"
|
31
26
|
elsif Dir.exist? "spec"
|
32
|
-
"spec
|
27
|
+
"spec"
|
33
28
|
elsif Dir.exist? "lib"
|
34
|
-
"lib
|
29
|
+
"lib"
|
35
30
|
else
|
36
31
|
""
|
37
32
|
end
|
38
33
|
end
|
39
34
|
|
40
|
-
def
|
35
|
+
def callback_file_content
|
41
36
|
<<-'CONTENT'
|
42
|
-
|
43
|
-
require 'open4'
|
44
|
-
|
45
|
-
Bundler.with_clean_env do
|
37
|
+
class GorgonCallbacks < Gorgon::DefaultCallbacks
|
46
38
|
BUNDLE_LOG_FILE||="/tmp/gorgon-bundle-install.log "
|
39
|
+
def after_sync
|
40
|
+
require 'bundler'
|
41
|
+
require 'open4'
|
47
42
|
|
48
|
-
|
49
|
-
|
50
|
-
ignore, status = Process.waitpid2 pid
|
43
|
+
Bundler.with_clean_env do
|
51
44
|
|
52
|
-
|
53
|
-
raise "ERROR: 'bundle install' failed.\n#{stderr.read}"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
CONTENT
|
57
|
-
end
|
45
|
+
pid, stdin, stdout, stderr = Open4::popen4 "bundle install > #{BUNDLE_LOG_FILE} 2>&1 "
|
58
46
|
|
59
|
-
|
60
|
-
<<-'CONTENT'
|
61
|
-
ENV["TEST_ENV_NUMBER"] = Process.pid.to_s
|
62
|
-
ENV["RAILS_ENV"] = 'remote_test'
|
47
|
+
ignore, status = Process.waitpid2 pid
|
63
48
|
|
64
|
-
|
65
|
-
|
49
|
+
if status.exitstatus != 0
|
50
|
+
raise "ERROR: 'bundle install' failed.\n#{stderr.read}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
66
54
|
|
67
|
-
|
68
|
-
|
69
|
-
|
55
|
+
def before_creating_workers
|
56
|
+
ENV["TEST_ENV_NUMBER"] = Process.pid.to_s
|
57
|
+
ENV["RAILS_ENV"] = 'remote_test'
|
70
58
|
|
71
|
-
|
72
|
-
|
59
|
+
pid, stdin, stdout, stderr = Open4::popen4 "TEST_ENV_NUMBER=#{Process.pid.to_s} RAILS_ENV='remote_test' bundle exec rake db:setup"
|
60
|
+
ignore, status = Process.waitpid2 pid
|
73
61
|
|
74
|
-
|
75
|
-
|
76
|
-
CONTENT
|
62
|
+
if status.exitstatus != 0
|
63
|
+
raise "ERROR: 'rake db:setup' failed.\n#{stderr.read}\n#{stdout.read}"
|
77
64
|
end
|
78
65
|
|
79
|
-
|
80
|
-
|
81
|
-
require 'rake'
|
82
|
-
load './Rakefile'
|
66
|
+
spec_helper_file = File.expand_path('../../spec_helper.rb', __FILE__)
|
67
|
+
test_helper_file = File.expand_path('../../test_helper.rb', __FILE__)
|
83
68
|
|
84
|
-
|
85
|
-
|
86
|
-
Rake::Task['db:drop'].execute
|
69
|
+
require spec_helper_file if File.exist?(spec_helper_file)
|
70
|
+
require test_helper_file if File.exist?(test_helper_file)
|
87
71
|
end
|
88
|
-
rescue Exception => ex
|
89
|
-
puts "Error dropping test database:\n #{ex}"
|
90
|
-
end
|
91
|
-
CONTENT
|
92
|
-
end
|
93
72
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
load './Rakefile'
|
73
|
+
def before_start
|
74
|
+
require 'rake'
|
75
|
+
load './Rakefile'
|
98
76
|
|
99
|
-
begin
|
100
|
-
|
101
|
-
|
77
|
+
begin
|
78
|
+
Rails.env = 'remote_test'
|
79
|
+
ENV['TEST_ENV_NUMBER'] = Process.pid.to_s
|
102
80
|
|
103
|
-
|
81
|
+
Rake::Task['db:reset'].invoke
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def after_creating_workers
|
86
|
+
require 'rake'
|
87
|
+
load './Rakefile'
|
88
|
+
|
89
|
+
begin
|
90
|
+
if Rails.env = 'remote_test'
|
91
|
+
Rake::Task['db:drop'].execute
|
92
|
+
end
|
93
|
+
rescue Exception => ex
|
94
|
+
puts "Error dropping test database:\n #{ex}"
|
95
|
+
end
|
96
|
+
end
|
104
97
|
end
|
105
98
|
|
99
|
+
Gorgon.callbacks = GorgonCallbacks.new
|
106
100
|
CONTENT
|
107
101
|
end
|
108
102
|
end
|
data/lib/gorgon/version.rb
CHANGED
data/rsync_transport.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Rsync Transport Documentation
|
2
|
+
=============================
|
3
|
+
|
4
|
+
In gorgon.json, you can change how files are uploaded from Originator to File Server and downloaded from File Server to Listeners.
|
5
|
+
This setting is "rsync_transport" which could be either "ssh" or "anonymous"
|
6
|
+
|
7
|
+
SSH Transport
|
8
|
+
-------------
|
9
|
+
|
10
|
+
If you are using this setting, originator and all listeners should have SSH passwordless access to File Server. You can follow [these steps](http://www.linuxproblem.org/art_9.html) to setup SSH login without password.
|
11
|
+
|
12
|
+
Anonymous Transport
|
13
|
+
-------------------
|
14
|
+
|
15
|
+
If you are using this setting, you need to run the following in the File Server:
|
16
|
+
|
17
|
+
```bash
|
18
|
+
mkdir -p ~/.gorgon/file_dir # here is where gorgon will push files under test
|
19
|
+
gorgon start_rsync ~/.gorgon/file_dir
|
20
|
+
```
|
data/tutorial.md
CHANGED
@@ -21,7 +21,7 @@ Run `rspec` and make sure all tests pass.
|
|
21
21
|
|
22
22
|
1. Install [RabbitMQ](https://www.rabbitmq.com/download.html).
|
23
23
|
|
24
|
-
2. Add Gorgon to the Gemfile: `gem 'gorgon', '0.
|
24
|
+
2. Add Gorgon to the Gemfile: `gem 'gorgon', '0.8.1'`
|
25
25
|
|
26
26
|
3. `bundle`
|
27
27
|
|
@@ -58,6 +58,11 @@ Run `rspec` and make sure all tests pass.
|
|
58
58
|
cp config/environments/test.rb config/environments/remote_test.rb
|
59
59
|
```
|
60
60
|
|
61
|
+
### Setting up SSH access
|
62
|
+
|
63
|
+
In this tutorial, we are using [SSH Transport](/rsync_transport.md) to move source code files. This requires you to have SSH access without password to File Server (in this case, to localhost).
|
64
|
+
To check if you have SSH access without password, running ```ssh localhost``` should not ask for a password. If it asks for a password, follow [these steps](http://www.linuxproblem.org/art_9.html) to setup passwordless SSH access.
|
65
|
+
|
61
66
|
### Run Gorgon Listener
|
62
67
|
|
63
68
|
1. Download a listener configuration sample:
|
@@ -73,13 +78,6 @@ Run `rspec` and make sure all tests pass.
|
|
73
78
|
gorgon listen
|
74
79
|
```
|
75
80
|
|
76
|
-
### Run File Server
|
77
|
-
|
78
|
-
```bash
|
79
|
-
mkdir -p ~/.gorgon/file_dir # here is where gorgon will push files under test
|
80
|
-
gorgon start_rsync ~/.gorgon/file_dir
|
81
|
-
```
|
82
|
-
|
83
81
|
### Run Gorgon
|
84
82
|
|
85
83
|
Now, you are ready to run Gorgon.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gorgon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Fitzsimmons
|
@@ -270,6 +270,7 @@ files:
|
|
270
270
|
- lib/gorgon_bunny/lib/gorgon_bunny/transport.rb
|
271
271
|
- lib/gorgon_bunny/lib/gorgon_bunny/version.rb
|
272
272
|
- lib/gorgon_bunny/lib/gorgon_bunny/versioned_delivery_tag.rb
|
273
|
+
- rsync_transport.md
|
273
274
|
- spec/acceptance/run_tests_spec.rb
|
274
275
|
- spec/acceptance_spec_helper.rb
|
275
276
|
- spec/callback_handler_spec.rb
|