barbeque 0.7.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '0.7.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,14 +1,12 @@
1
- require 'barbeque/exception_handler'
2
- require 'barbeque/message_handler'
3
- require 'barbeque/message_queue'
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
- @queue_name = ENV['BARBEQUE_QUEUE'] || DEFAULT_QUEUE
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
- execute_job
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
- message_queue.stop!
58
+ @command.stop
48
59
  end
49
60
 
50
- def execute_job
51
- message = message_queue.dequeue
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.7.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-12 00:00:00.000000000 Z
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
@@ -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