barbeque 0.7.0 → 1.0.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/README.md +26 -1
- data/app/controllers/barbeque/job_queues_controller.rb +3 -4
- data/app/models/barbeque/docker_container.rb +2 -0
- data/app/models/barbeque/ecs_hako_task.rb +2 -0
- data/app/models/barbeque/job_queue.rb +0 -5
- data/app/services/barbeque/message_enqueuing_service.rb +1 -1
- data/app/services/barbeque/sns_subscription_service.rb +1 -1
- data/db/migrate/20170711085157_create_barbeque_docker_containers.rb +12 -0
- data/db/migrate/20170712075449_create_barbeque_ecs_hako_tasks.rb +13 -0
- data/db/migrate/20170724025542_add_index_to_job_execution_status.rb +6 -0
- data/lib/barbeque/config.rb +9 -4
- data/lib/barbeque/execution_log.rb +1 -15
- data/lib/barbeque/execution_poller.rb +34 -0
- data/lib/barbeque/executor.rb +29 -0
- data/lib/barbeque/executor/docker.rb +131 -0
- data/lib/barbeque/executor/hako.rb +159 -0
- data/lib/barbeque/message/base.rb +1 -1
- data/lib/barbeque/message_handler/job_execution.rb +12 -59
- data/lib/barbeque/message_handler/job_retry.rb +10 -57
- data/lib/barbeque/message_handler/notification.rb +4 -8
- data/lib/barbeque/message_queue.rb +25 -30
- data/lib/barbeque/retry_poller.rb +34 -0
- data/lib/barbeque/runner.rb +51 -7
- data/lib/barbeque/slack_notifier.rb +73 -0
- data/lib/barbeque/version.rb +1 -1
- data/lib/barbeque/worker.rb +21 -22
- metadata +13 -4
- data/lib/barbeque/runner/docker.rb +0 -34
- data/lib/barbeque/runner/hako.rb +0 -46
data/lib/barbeque/version.rb
CHANGED
data/lib/barbeque/worker.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
require 'barbeque/
|
2
|
-
require 'barbeque/
|
3
|
-
require 'barbeque/
|
1
|
+
require 'barbeque/execution_poller'
|
2
|
+
require 'barbeque/retry_poller'
|
3
|
+
require 'barbeque/runner'
|
4
4
|
require 'serverengine'
|
5
5
|
|
6
6
|
module Barbeque
|
7
7
|
module Worker
|
8
8
|
class UnexpectedMessageType < StandardError; end
|
9
9
|
|
10
|
-
DEFAULT_QUEUE = 'default'
|
11
|
-
|
12
10
|
def self.run(
|
13
11
|
worker_type: 'process',
|
14
12
|
workers: 4,
|
@@ -33,34 +31,35 @@ module Barbeque
|
|
33
31
|
end
|
34
32
|
|
35
33
|
def initialize
|
36
|
-
@
|
34
|
+
@command =
|
35
|
+
case worker_id
|
36
|
+
when 0
|
37
|
+
ExecutionPoller.new
|
38
|
+
when 1
|
39
|
+
RetryPoller.new
|
40
|
+
else
|
41
|
+
Runner.new
|
42
|
+
end
|
37
43
|
end
|
38
44
|
|
39
45
|
def run
|
46
|
+
$0 = "barbeque-worker (worker_id=#{worker_id} command=#{@command.class.name})"
|
40
47
|
until @stop
|
41
|
-
|
48
|
+
begin
|
49
|
+
execute_command
|
50
|
+
rescue => e
|
51
|
+
Barbeque::ExceptionHandler.handle_exception(e)
|
52
|
+
end
|
42
53
|
end
|
43
54
|
end
|
44
55
|
|
45
56
|
def stop
|
46
57
|
@stop = true
|
47
|
-
|
58
|
+
@command.stop
|
48
59
|
end
|
49
60
|
|
50
|
-
def
|
51
|
-
|
52
|
-
return unless message
|
53
|
-
|
54
|
-
handler = MessageHandler.const_get(message.type, false)
|
55
|
-
handler.new(message: message, job_queue: message_queue.job_queue).run
|
56
|
-
rescue => e
|
57
|
-
Barbeque::ExceptionHandler.handle_exception(e)
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def message_queue
|
63
|
-
@message_queue ||= MessageQueue.new(@queue_name)
|
61
|
+
def execute_command
|
62
|
+
@command.run
|
64
63
|
end
|
65
64
|
end
|
66
65
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: barbeque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: adminlte2-rails
|
@@ -301,6 +301,8 @@ files:
|
|
301
301
|
- app/models/barbeque/api/revision_lock_resource.rb
|
302
302
|
- app/models/barbeque/app.rb
|
303
303
|
- app/models/barbeque/application_record.rb
|
304
|
+
- app/models/barbeque/docker_container.rb
|
305
|
+
- app/models/barbeque/ecs_hako_task.rb
|
304
306
|
- app/models/barbeque/job_definition.rb
|
305
307
|
- app/models/barbeque/job_execution.rb
|
306
308
|
- app/models/barbeque/job_queue.rb
|
@@ -356,12 +358,19 @@ files:
|
|
356
358
|
- db/migrate/20160516041710_create_job_retries.rb
|
357
359
|
- db/migrate/20160829023237_prefix_barbeque_to_tables.rb
|
358
360
|
- db/migrate/20170420030157_create_barbeque_sns_subscriptions.rb
|
361
|
+
- db/migrate/20170711085157_create_barbeque_docker_containers.rb
|
362
|
+
- db/migrate/20170712075449_create_barbeque_ecs_hako_tasks.rb
|
363
|
+
- db/migrate/20170724025542_add_index_to_job_execution_status.rb
|
359
364
|
- lib/barbeque.rb
|
360
365
|
- lib/barbeque/config.rb
|
361
366
|
- lib/barbeque/docker_image.rb
|
362
367
|
- lib/barbeque/engine.rb
|
363
368
|
- lib/barbeque/exception_handler.rb
|
364
369
|
- lib/barbeque/execution_log.rb
|
370
|
+
- lib/barbeque/execution_poller.rb
|
371
|
+
- lib/barbeque/executor.rb
|
372
|
+
- lib/barbeque/executor/docker.rb
|
373
|
+
- lib/barbeque/executor/hako.rb
|
365
374
|
- lib/barbeque/message.rb
|
366
375
|
- lib/barbeque/message/base.rb
|
367
376
|
- lib/barbeque/message/invalid_message.rb
|
@@ -373,10 +382,10 @@ files:
|
|
373
382
|
- lib/barbeque/message_handler/job_retry.rb
|
374
383
|
- lib/barbeque/message_handler/notification.rb
|
375
384
|
- lib/barbeque/message_queue.rb
|
385
|
+
- lib/barbeque/retry_poller.rb
|
376
386
|
- lib/barbeque/runner.rb
|
377
|
-
- lib/barbeque/runner/docker.rb
|
378
|
-
- lib/barbeque/runner/hako.rb
|
379
387
|
- lib/barbeque/slack_client.rb
|
388
|
+
- lib/barbeque/slack_notifier.rb
|
380
389
|
- lib/barbeque/version.rb
|
381
390
|
- lib/barbeque/worker.rb
|
382
391
|
- lib/tasks/barbeque_tasks.rake
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'open3'
|
2
|
-
|
3
|
-
module Barbeque
|
4
|
-
module Runner
|
5
|
-
class Docker
|
6
|
-
# @param [Barbeque::DockerImage] docker_image
|
7
|
-
def initialize(docker_image:)
|
8
|
-
@docker_image = docker_image.to_s
|
9
|
-
end
|
10
|
-
|
11
|
-
# @param [Array<String>] command
|
12
|
-
# @param [Hash] envs
|
13
|
-
# @return [String] stdout
|
14
|
-
# @return [String] stderr
|
15
|
-
# @return [Process::Status] status
|
16
|
-
def run(command, envs)
|
17
|
-
cmd = build_docker_run_command(command, envs)
|
18
|
-
Bundler.with_clean_env { Open3.capture3(*cmd) }
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def build_docker_run_command(command, envs)
|
24
|
-
['docker', 'run', *env_options(envs), @docker_image, *command]
|
25
|
-
end
|
26
|
-
|
27
|
-
def env_options(envs)
|
28
|
-
envs.flat_map do |key, value|
|
29
|
-
['--env', "#{key}=#{value}"]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/lib/barbeque/runner/hako.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'open3'
|
2
|
-
|
3
|
-
module Barbeque
|
4
|
-
module Runner
|
5
|
-
class Hako
|
6
|
-
# @param [Barbeque::DockerImage] docker_image
|
7
|
-
# @param [String] hako_dir
|
8
|
-
# @param [Hash] hako_env
|
9
|
-
# @param [String] yaml_dir
|
10
|
-
def initialize(docker_image:, hako_dir:, hako_env: {}, yaml_dir:)
|
11
|
-
@app_name = docker_image.repository
|
12
|
-
@tag = docker_image.tag
|
13
|
-
@hako_dir = hako_dir
|
14
|
-
@hako_env = hako_env
|
15
|
-
@yaml_dir = yaml_dir
|
16
|
-
end
|
17
|
-
|
18
|
-
# @param [Array<String>] command
|
19
|
-
# @param [Hash] envs
|
20
|
-
# @return [String] stdout
|
21
|
-
# @return [String] stderr
|
22
|
-
# @return [Process::Status] status
|
23
|
-
def run(command, envs)
|
24
|
-
cmd = build_hako_oneshot_command(command, envs)
|
25
|
-
Bundler.with_clean_env do
|
26
|
-
Open3.capture3(@hako_env, *cmd, chdir: @hako_dir)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def build_hako_oneshot_command(command, envs)
|
33
|
-
[
|
34
|
-
'bundle', 'exec', 'hako', 'oneshot', '--tag', @tag,
|
35
|
-
*env_options(envs), File.join(@yaml_dir, "#{@app_name}.yml"), '--', *command,
|
36
|
-
]
|
37
|
-
end
|
38
|
-
|
39
|
-
def env_options(envs)
|
40
|
-
envs.map do |key, value|
|
41
|
-
"--env=#{key}=#{value}"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|