grifork 0.4.0 → 0.5.0
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/CHANGELOG.md +9 -0
- data/example/Griforkfile.grifork +24 -0
- data/example/Griforkfile.standalone +12 -0
- data/lib/grifork.rb +2 -1
- data/lib/grifork/config.rb +6 -2
- data/lib/grifork/dsl.rb +40 -5
- data/lib/grifork/executor/{task.rb → carrier.rb} +1 -1
- data/lib/grifork/executor/local.rb +15 -0
- data/lib/grifork/graph.rb +8 -0
- data/lib/grifork/version.rb +1 -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: 140949f8595ff1cc52066e358268d58378b4274e
|
4
|
+
data.tar.gz: ffd353ed0b6ce568d9f8f598b55c6b92e1ebfce6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85dfb2017ae8dc051c23ca48fd8c179c3ec0c98b7c111fa8a49a1c7300ea87e87494e0d7a7950f0a51067c5a959c61ea9ca6ca1a987ef2db88ca7cf277392e11
|
7
|
+
data.tar.gz: 5c5cfe37f565437fba03aaddb48071319cd04c58c591e4b76499160facc167ef287081ad667a4403f92e81e085acc6b5f5a4ea75cbf30979740ef8dc745719f8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.5.0 (2016/10/10)
|
2
|
+
|
3
|
+
Features: (#4)
|
4
|
+
|
5
|
+
- New DSL methods:
|
6
|
+
- `#prepare`, `#finish`: Initialize or teardown the whole build procedure
|
7
|
+
- `#prepare_remote`, `#finish_remote`: Initialize or teardown the procedure on
|
8
|
+
remote hosts in `:grifork` mode
|
9
|
+
|
1
10
|
## 0.4.0 (2016/10/9)
|
2
11
|
|
3
12
|
Bug Fix: (#3)
|
data/example/Griforkfile.grifork
CHANGED
@@ -32,6 +32,12 @@ hosts ['web1.internal', 'web2.internal', '192.168.10.1', '192.168.10.2']
|
|
32
32
|
# Available full Hash options are bellow:
|
33
33
|
rsync delete: true, bwlimit: 4096, verbose: false, excludes: [], rsh: nil, dry_run: false
|
34
34
|
|
35
|
+
# Prepare before running tasks on localhost
|
36
|
+
prepare do
|
37
|
+
sh :echo, ['Prepare grifork mode.']
|
38
|
+
sh :mkdir, %w(-p path/to/tmp)
|
39
|
+
end
|
40
|
+
|
35
41
|
# Define task run on localhost
|
36
42
|
local do
|
37
43
|
sh :echo, %W(LOCAL: #{src} => #{dst})
|
@@ -39,6 +45,12 @@ local do
|
|
39
45
|
rsync '/path/to/src/', '/path/to/dest/'
|
40
46
|
end
|
41
47
|
|
48
|
+
# Prepare in the beginning of grifork tasks on remote
|
49
|
+
prepare_remote do
|
50
|
+
sh :echo, ['Prepare grifork on remote.']
|
51
|
+
sh %(cd path/to/app && bundle install)
|
52
|
+
end
|
53
|
+
|
42
54
|
# Define task run on remote hosts
|
43
55
|
# NOTE: This task is run as "local" task on remote
|
44
56
|
# different from "remote" task in :standalone mode
|
@@ -48,3 +60,15 @@ remote do
|
|
48
60
|
rsync '/path/to/src/', '/path/to/dest/'
|
49
61
|
end
|
50
62
|
|
63
|
+
# Closing tasks on remote
|
64
|
+
finish_remote do
|
65
|
+
sh :echo, ['Finish grifork on remote.']
|
66
|
+
sh %(cd path/to/app && bundle clean)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Closing tasks finally on localhost
|
70
|
+
finish do
|
71
|
+
sh :echo, ['Finish grifork mode.']
|
72
|
+
sh :rm, %w(-rf path/to/tmp)
|
73
|
+
end
|
74
|
+
|
@@ -23,6 +23,12 @@ ssh user: 'someone', keys: ['path/to/identity_file'], passphrase: 'xxx'
|
|
23
23
|
# Available full Hash options are bellow:
|
24
24
|
rsync delete: true, bwlimit: 4096, verbose: false, excludes: [], rsh: nil, dry_run: false
|
25
25
|
|
26
|
+
# Prepare before running tasks
|
27
|
+
prepare do
|
28
|
+
sh :echo, ['Prepare standalone mode.']
|
29
|
+
sh :mkdir, %w(-p path/to/tmp)
|
30
|
+
end
|
31
|
+
|
26
32
|
# Define task run on localhost
|
27
33
|
local do
|
28
34
|
sh :echo, %W(LOCAL: #{src} => #{dst})
|
@@ -37,3 +43,9 @@ remote do
|
|
37
43
|
rsync_remote '/path/to/src/', '/path/to/dest/'
|
38
44
|
end
|
39
45
|
|
46
|
+
# Closing tasks
|
47
|
+
finish do
|
48
|
+
sh :echo, ['Finish standalone mode.']
|
49
|
+
sh :rm, %w(-rf path/to/tmp)
|
50
|
+
end
|
51
|
+
|
data/lib/grifork.rb
CHANGED
@@ -17,7 +17,8 @@ class Grifork
|
|
17
17
|
require_relative 'grifork/executor'
|
18
18
|
require_relative 'grifork/mixin/executable'
|
19
19
|
require_relative 'grifork/executor/grifork'
|
20
|
-
require_relative 'grifork/executor/
|
20
|
+
require_relative 'grifork/executor/carrier'
|
21
|
+
require_relative 'grifork/executor/local'
|
21
22
|
require_relative 'grifork/dsl'
|
22
23
|
require_relative 'grifork/cli'
|
23
24
|
require_relative 'grifork/version'
|
data/lib/grifork/config.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
class Grifork::Config
|
2
|
-
|
3
|
-
|
2
|
+
attrs = {
|
3
|
+
ro: %i(branches hosts log grifork local_task remote_task prepare_task finish_task),
|
4
|
+
rw: %i(griforkfile dry_run),
|
5
|
+
}
|
6
|
+
attr_reader *attrs[:ro]
|
7
|
+
attr_accessor *attrs[:rw]
|
4
8
|
|
5
9
|
def initialize(args)
|
6
10
|
args.each do |key, val|
|
data/lib/grifork/dsl.rb
CHANGED
@@ -114,24 +114,59 @@ class Grifork::DSL
|
|
114
114
|
end
|
115
115
|
|
116
116
|
# Define tasks to execute at localhost
|
117
|
-
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::
|
117
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Carrier}
|
118
|
+
# @note In +:grifork+ mode, this is executed only at localhost
|
118
119
|
def local(&task)
|
119
120
|
return if @on_remote
|
120
|
-
config_set(:local_task, Grifork::Executor::
|
121
|
+
config_set(:local_task, Grifork::Executor::Carrier.new(:local, &task))
|
121
122
|
end
|
122
123
|
|
123
124
|
# Define tasks to execute at remote host
|
124
|
-
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::
|
125
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Carrier}
|
125
126
|
# @note In +:standalone+ mode, the task is executed at localhost actually.
|
126
127
|
# In +:grifork+ mode, it is executed at remote hosts via +grifork+ command on remote hosts
|
127
128
|
def remote(&task)
|
128
129
|
if @on_remote
|
129
|
-
config_set(:local_task, Grifork::Executor::
|
130
|
+
config_set(:local_task, Grifork::Executor::Carrier.new(:local, &task))
|
130
131
|
else
|
131
|
-
config_set(:remote_task, Grifork::Executor::
|
132
|
+
config_set(:remote_task, Grifork::Executor::Carrier.new(:remote, &task))
|
132
133
|
end
|
133
134
|
end
|
134
135
|
|
136
|
+
# Define tasks to execute at localhost before starting procedure
|
137
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Local}
|
138
|
+
# @note In +:grifork+ mode, this is executed only at localhost
|
139
|
+
def prepare(&task)
|
140
|
+
return if @on_remote
|
141
|
+
config_set(:prepare_task, Grifork::Executor::Local.new(:prepare, &task))
|
142
|
+
end
|
143
|
+
|
144
|
+
# Define tasks to execute at localhost in the end of procedure
|
145
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Local}
|
146
|
+
# @note In +:grifork+ mode, this is executed only at localhost
|
147
|
+
def finish(&task)
|
148
|
+
return if @on_remote
|
149
|
+
config_set(:finish_task, Grifork::Executor::Local.new(:finish, &task))
|
150
|
+
end
|
151
|
+
|
152
|
+
# Define tasks to execute at remote host which execute +grifork+ tasks in +:grifork+
|
153
|
+
# mode before starting its procedure
|
154
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Local}
|
155
|
+
# @note In +:standalone+ mode, this is never executed
|
156
|
+
def prepare_remote(&task)
|
157
|
+
return unless @on_remote
|
158
|
+
config_set(:prepare_task, Grifork::Executor::Local.new(:prepare, &task))
|
159
|
+
end
|
160
|
+
|
161
|
+
# Define tasks to execute at remote host which execute +grifork+ tasks in +:grifork+
|
162
|
+
# mode in the end of its procedure
|
163
|
+
# @param &task [Proc] Codes to be executed by an object of {Grifork::Executor::Local}
|
164
|
+
# @note In +:standalone+ mode, this is never executed
|
165
|
+
def finish_remote(&task)
|
166
|
+
return unless @on_remote
|
167
|
+
config_set(:finish_task, Grifork::Executor::Local.new(:finish, &task))
|
168
|
+
end
|
169
|
+
|
135
170
|
private
|
136
171
|
|
137
172
|
def config_set(key, value)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Grifork::Executor::Local
|
2
|
+
include Grifork::Executable
|
3
|
+
|
4
|
+
# Initialize with task
|
5
|
+
# @param &task [Proc] task to execute
|
6
|
+
def initialize(type, &task)
|
7
|
+
@type = type
|
8
|
+
@task = task
|
9
|
+
end
|
10
|
+
|
11
|
+
# Run the task
|
12
|
+
def run
|
13
|
+
instance_eval(&@task)
|
14
|
+
end
|
15
|
+
end
|
data/lib/grifork/graph.rb
CHANGED
@@ -29,6 +29,8 @@ class Grifork::Graph
|
|
29
29
|
|
30
30
|
# Launch local and remote tasks through whole graph
|
31
31
|
def launch_tasks
|
32
|
+
config.prepare_task.run if config.prepare_task
|
33
|
+
|
32
34
|
# level = 1
|
33
35
|
Parallel.map(root.children, config.parallel => root.children.size) do |node|
|
34
36
|
logger.info("Run locally. localhost => #{node.host}")
|
@@ -36,10 +38,14 @@ class Grifork::Graph
|
|
36
38
|
end
|
37
39
|
# level in (2..depth)
|
38
40
|
fork_remote_tasks(root.children)
|
41
|
+
|
42
|
+
config.finish_task.run if config.finish_task
|
39
43
|
end
|
40
44
|
|
41
45
|
# Run grifork command on child nodes recursively
|
42
46
|
def grifork
|
47
|
+
config.prepare_task.run if config.prepare_task
|
48
|
+
|
43
49
|
if root.children.size.zero?
|
44
50
|
logger.debug("#{root} Reached leaf. Nothing to do.")
|
45
51
|
return
|
@@ -53,6 +59,8 @@ class Grifork::Graph
|
|
53
59
|
end
|
54
60
|
Grifork::Executor::Grifork.new.run(child)
|
55
61
|
end
|
62
|
+
|
63
|
+
config.finish_task.run if config.finish_task
|
56
64
|
end
|
57
65
|
|
58
66
|
# Print graph structure for debug usage
|
data/lib/grifork/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grifork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- key-amb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|
@@ -134,8 +134,9 @@ files:
|
|
134
134
|
- lib/grifork/config.rb
|
135
135
|
- lib/grifork/dsl.rb
|
136
136
|
- lib/grifork/executor.rb
|
137
|
+
- lib/grifork/executor/carrier.rb
|
137
138
|
- lib/grifork/executor/grifork.rb
|
138
|
-
- lib/grifork/executor/
|
139
|
+
- lib/grifork/executor/local.rb
|
139
140
|
- lib/grifork/graph.rb
|
140
141
|
- lib/grifork/graph/node.rb
|
141
142
|
- lib/grifork/logger.rb
|