barbeque 0.0.1 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/Rakefile +2 -6
  4. data/app/assets/javascripts/barbeque/application.js +5 -0
  5. data/app/assets/javascripts/barbeque/job_definitions.coffee +10 -0
  6. data/app/assets/stylesheets/barbeque/application.scss +7 -0
  7. data/app/assets/stylesheets/barbeque/common.scss +22 -0
  8. data/app/assets/stylesheets/barbeque/job_definitions.scss +21 -0
  9. data/app/controllers/barbeque/api/application_controller.rb +22 -0
  10. data/app/controllers/barbeque/api/job_executions_controller.rb +35 -0
  11. data/app/controllers/barbeque/api/job_retries_controller.rb +28 -0
  12. data/app/controllers/barbeque/api/revision_locks_controller.rb +34 -0
  13. data/app/controllers/barbeque/apps_controller.rb +43 -0
  14. data/app/controllers/barbeque/job_definitions_controller.rb +86 -0
  15. data/app/controllers/barbeque/job_executions_controller.rb +19 -0
  16. data/app/controllers/barbeque/job_queues_controller.rb +59 -0
  17. data/app/controllers/barbeque/job_retries_controller.rb +10 -0
  18. data/app/helpers/barbeque/job_definitions_helper.rb +14 -0
  19. data/app/helpers/barbeque/job_executions_helper.rb +18 -0
  20. data/app/models/{api → barbeque/api}/application_resource.rb +3 -1
  21. data/app/models/{api → barbeque/api}/job_execution_resource.rb +1 -1
  22. data/app/models/{api → barbeque/api}/job_retry_resource.rb +1 -1
  23. data/app/models/barbeque/api/revision_lock_resource.rb +7 -0
  24. data/app/models/{app.rb → barbeque/app.rb} +1 -1
  25. data/app/models/barbeque/job_definition.rb +26 -0
  26. data/app/models/{job_execution.rb → barbeque/job_execution.rb} +7 -4
  27. data/app/models/{job_queue.rb → barbeque/job_queue.rb} +1 -1
  28. data/app/models/{job_retry.rb → barbeque/job_retry.rb} +7 -2
  29. data/app/models/{slack_notification.rb → barbeque/slack_notification.rb} +1 -1
  30. data/app/services/barbeque/message_enqueuing_service.rb +41 -0
  31. data/app/services/barbeque/message_retrying_service.rb +32 -0
  32. data/app/views/barbeque/apps/_form.html.haml +34 -0
  33. data/app/views/barbeque/apps/edit.html.haml +3 -0
  34. data/app/views/barbeque/apps/index.html.haml +24 -0
  35. data/app/views/barbeque/apps/new.html.haml +3 -0
  36. data/app/views/barbeque/apps/show.html.haml +47 -0
  37. data/app/views/barbeque/job_definitions/_form.html.haml +45 -0
  38. data/app/views/barbeque/job_definitions/_slack_notification_field.html.haml +35 -0
  39. data/app/views/barbeque/job_definitions/edit.html.haml +3 -0
  40. data/app/views/barbeque/job_definitions/index.html.haml +24 -0
  41. data/app/views/barbeque/job_definitions/new.html.haml +3 -0
  42. data/app/views/barbeque/job_definitions/show.html.haml +90 -0
  43. data/app/views/barbeque/job_definitions/stats.html.haml +52 -0
  44. data/app/views/barbeque/job_executions/show.html.haml +92 -0
  45. data/app/views/barbeque/job_queues/_form.html.haml +29 -0
  46. data/app/views/barbeque/job_queues/edit.html.haml +3 -0
  47. data/app/views/barbeque/job_queues/index.html.haml +22 -0
  48. data/app/views/barbeque/job_queues/new.html.haml +3 -0
  49. data/app/views/barbeque/job_queues/show.html.haml +22 -0
  50. data/app/views/barbeque/job_retries/show.html.haml +59 -0
  51. data/app/views/layouts/barbeque/_header.html.haml +10 -0
  52. data/app/views/layouts/barbeque/_sidebar.html.haml +16 -0
  53. data/app/views/layouts/barbeque/application.html.haml +24 -0
  54. data/app/views/layouts/barbeque/apps.html.haml +6 -0
  55. data/app/views/layouts/barbeque/job_definitions.html.haml +6 -0
  56. data/app/views/layouts/barbeque/job_executions.html.haml +5 -0
  57. data/app/views/layouts/barbeque/job_queues.html.haml +6 -0
  58. data/config/initializers/garage.rb +4 -0
  59. data/config/routes.rb +32 -0
  60. data/db/migrate/20160829023237_prefix_barbeque_to_tables.rb +10 -0
  61. data/lib/barbeque.rb +3 -5
  62. data/lib/barbeque/configuration.rb +19 -0
  63. data/lib/barbeque/docker_image.rb +20 -0
  64. data/lib/barbeque/engine.rb +11 -0
  65. data/lib/barbeque/execution_log.rb +51 -0
  66. data/lib/barbeque/message.rb +28 -0
  67. data/lib/barbeque/message/base.rb +29 -0
  68. data/lib/barbeque/message/invalid_message.rb +11 -0
  69. data/lib/barbeque/message/job_execution.rb +20 -0
  70. data/lib/barbeque/message/job_retry.rb +16 -0
  71. data/lib/barbeque/message_handler.rb +8 -0
  72. data/lib/barbeque/message_handler/job_execution.rb +86 -0
  73. data/lib/barbeque/message_handler/job_retry.rb +83 -0
  74. data/lib/barbeque/message_queue.rb +66 -0
  75. data/lib/barbeque/runner.rb +12 -0
  76. data/lib/barbeque/runner/docker.rb +34 -0
  77. data/lib/barbeque/slack_client.rb +48 -0
  78. data/lib/barbeque/version.rb +1 -1
  79. data/lib/barbeque/worker.rb +58 -0
  80. data/lib/tasks/barbeque_tasks.rake +9 -4
  81. metadata +272 -18
  82. data/app/assets/stylesheets/barbeque/application.css +0 -15
  83. data/app/models/application_record.rb +0 -3
  84. data/app/models/job_definition.rb +0 -14
  85. data/app/views/layouts/barbeque/application.html.erb +0 -14
@@ -0,0 +1,66 @@
1
+ require 'aws-sdk'
2
+ require 'barbeque/message'
3
+
4
+ module Barbeque
5
+ class MessageQueue
6
+ attr_reader :job_queue
7
+
8
+ def initialize(queue_name)
9
+ @job_queue = Barbeque::JobQueue.find_by!(name: queue_name)
10
+ @messages = []
11
+ @stop = false
12
+ end
13
+
14
+ # Receive a message and delete them all from SQS queue immediately.
15
+ # TODO: Stop removing them immediately to implement retry.
16
+ # @return [Barbeque::Message::Base]
17
+ def dequeue
18
+ while valid_messages.empty?
19
+ return nil if @stop
20
+ messages = receive_messages
21
+ messages = reject_invalid_messages(messages)
22
+ valid_messages.concat(messages)
23
+ end
24
+
25
+ valid_messages.shift.tap do |message|
26
+ delete_message(message)
27
+ end
28
+ end
29
+
30
+ def stop!
31
+ @stop = true
32
+ end
33
+
34
+ private
35
+
36
+ def receive_messages
37
+ result = client.receive_message(
38
+ queue_url: @job_queue.queue_url,
39
+ wait_time_seconds: Barbeque::JobQueue::SQS_RECEIVE_MESSAGE_WAIT_TIME,
40
+ )
41
+ result.messages.map { |m| Barbeque::Message.parse(m) }
42
+ end
43
+
44
+ def reject_invalid_messages(messages)
45
+ messages, invalid_messages = messages.partition(&:valid?)
46
+ invalid_messages.each { |m| delete_message(m) }
47
+ messages
48
+ end
49
+
50
+ # Remove a message from SQS queue.
51
+ def delete_message(message)
52
+ client.delete_message(
53
+ queue_url: @job_queue.queue_url,
54
+ receipt_handle: message.receipt_handle,
55
+ )
56
+ end
57
+
58
+ def valid_messages
59
+ @valid_messages ||= []
60
+ end
61
+
62
+ def client
63
+ @client ||= Aws::SQS::Client.new
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,12 @@
1
+ require 'barbeque/configuration'
2
+ require 'barbeque/runner/docker'
3
+
4
+ module Barbeque
5
+ module Runner
6
+ # @param [Barbeque::DockerImage] docker_image
7
+ def self.create(docker_image:)
8
+ klass = const_get(Barbeque.config.runner, false)
9
+ klass.new(docker_image: docker_image)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,34 @@
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
@@ -0,0 +1,48 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'uri'
4
+
5
+ module Barbeque
6
+ class SlackClient
7
+ def initialize(channel)
8
+ @channel = channel
9
+ end
10
+
11
+ def notify_success(message)
12
+ post_slack(
13
+ attachments: [{
14
+ text: message,
15
+ color: 'good',
16
+ mrkdwn_in: ['text'],
17
+ }],
18
+ )
19
+ end
20
+
21
+ def notify_failure(message)
22
+ post_slack(
23
+ attachments: [{
24
+ text: message,
25
+ color: 'danger',
26
+ mrkdwn_in: ['text'],
27
+ }],
28
+ )
29
+ end
30
+
31
+ private
32
+
33
+ def post_slack(payload)
34
+ Net::HTTP.post_form(
35
+ endpoint_uri,
36
+ payload: default_payload.merge(payload).to_json,
37
+ )
38
+ end
39
+
40
+ def default_payload
41
+ { link_names: 1, channel: @channel }
42
+ end
43
+
44
+ def endpoint_uri
45
+ @endpoint_uri ||= URI.parse(ENV['SLACK_WEBHOOK_URL'])
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.10'
3
3
  end
@@ -0,0 +1,58 @@
1
+ require 'barbeque/message_handler'
2
+ require 'barbeque/message_queue'
3
+ require 'serverengine'
4
+
5
+ module Barbeque
6
+ module Worker
7
+ class UnexpectedMessageType < StandardError; end
8
+
9
+ DEFAULT_QUEUE = 'default'
10
+
11
+ def self.run
12
+ options = {
13
+ worker_type: 'process',
14
+ workers: (ENV['BARBEQUE_WORKER_NUM'] || 4).to_i,
15
+ daemonize: ENV['DAEMONIZE_BARBEQUE'] == '1',
16
+ log: Rails.env.production? ? Rails.root.join("log/barbeque_worker.log").to_s : $stdout,
17
+ log_level: Rails.env.production? ? :info : :debug,
18
+ pid_path: Rails.root.join('tmp/pids/barbeque_worker.pid').to_s,
19
+ supervisor: Rails.env.production?,
20
+ }
21
+
22
+ worker = ServerEngine.create(nil, Barbeque::Worker, options)
23
+ worker.run
24
+ end
25
+
26
+ def initialize
27
+ @queue_name = ENV['BARBEQUE_QUEUE'] || DEFAULT_QUEUE
28
+ end
29
+
30
+ def run
31
+ until @stop
32
+ execute_job
33
+ end
34
+ end
35
+
36
+ def stop
37
+ @stop = true
38
+ message_queue.stop!
39
+ end
40
+
41
+ def execute_job
42
+ message = message_queue.dequeue
43
+ return unless message
44
+
45
+ handler = MessageHandler.const_get(message.type, false)
46
+ handler.new(message: message, job_queue: message_queue.job_queue).run
47
+ rescue => e
48
+ # Use Raven.capture_exception
49
+ Rails.logger.fatal("[ERROR] #{e.inspect}\n#{e.backtrace.join("\n")}")
50
+ end
51
+
52
+ private
53
+
54
+ def message_queue
55
+ @message_queue ||= MessageQueue.new(@queue_name)
56
+ end
57
+ end
58
+ end
@@ -1,4 +1,9 @@
1
- # desc "Explaining what the task does"
2
- # task :barbeque do
3
- # # Task goes here
4
- # end
1
+ namespace :barbeque do
2
+ desc 'Start worker to execute jobs'
3
+ task worker: :environment do
4
+ ENV['BARBEQUE_QUEUE'] ||= 'default'
5
+
6
+ require 'barbeque/worker'
7
+ Barbeque::Worker.run
8
+ end
9
+ end
metadata CHANGED
@@ -1,15 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barbeque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-29 00:00:00.000000000 Z
11
+ date: 2016-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: adminlte2-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coffee-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hamlit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hashie
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: jquery-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: kaminari
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
13
111
  - !ruby/object:Gem::Dependency
14
112
  name: rails
15
113
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +122,34 @@ dependencies:
24
122
  - - "~>"
25
123
  - !ruby/object:Gem::Version
26
124
  version: 5.0.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: sass-rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: serverengine
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
27
153
  - !ruby/object:Gem::Dependency
28
154
  name: the_garage
29
155
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +164,62 @@ dependencies:
38
164
  - - ">="
39
165
  - !ruby/object:Gem::Version
40
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: uglifier
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: weak_parameters
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: factory_girl_rails
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: listen
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
41
223
  - !ruby/object:Gem::Dependency
42
224
  name: mysql2
43
225
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +234,21 @@ dependencies:
52
234
  - - ">="
53
235
  - !ruby/object:Gem::Version
54
236
  version: '0'
55
- description: barbeque engine
237
+ - !ruby/object:Gem::Dependency
238
+ name: rspec-rails
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ description: Job queue interface to run job with Docker
56
252
  email:
57
253
  - takashi-kokubun@cookpad.com
58
254
  executables: []
@@ -64,23 +260,65 @@ files:
64
260
  - Rakefile
65
261
  - app/assets/config/barbeque_manifest.js
66
262
  - app/assets/javascripts/barbeque/application.js
67
- - app/assets/stylesheets/barbeque/application.css
263
+ - app/assets/javascripts/barbeque/job_definitions.coffee
264
+ - app/assets/stylesheets/barbeque/application.scss
265
+ - app/assets/stylesheets/barbeque/common.scss
266
+ - app/assets/stylesheets/barbeque/job_definitions.scss
267
+ - app/controllers/barbeque/api/application_controller.rb
268
+ - app/controllers/barbeque/api/job_executions_controller.rb
269
+ - app/controllers/barbeque/api/job_retries_controller.rb
270
+ - app/controllers/barbeque/api/revision_locks_controller.rb
68
271
  - app/controllers/barbeque/application_controller.rb
272
+ - app/controllers/barbeque/apps_controller.rb
273
+ - app/controllers/barbeque/job_definitions_controller.rb
274
+ - app/controllers/barbeque/job_executions_controller.rb
275
+ - app/controllers/barbeque/job_queues_controller.rb
276
+ - app/controllers/barbeque/job_retries_controller.rb
69
277
  - app/helpers/barbeque/application_helper.rb
278
+ - app/helpers/barbeque/job_definitions_helper.rb
279
+ - app/helpers/barbeque/job_executions_helper.rb
70
280
  - app/jobs/barbeque/application_job.rb
71
281
  - app/mailers/barbeque/application_mailer.rb
72
- - app/models/api/application_resource.rb
73
- - app/models/api/job_execution_resource.rb
74
- - app/models/api/job_retry_resource.rb
75
- - app/models/app.rb
76
- - app/models/application_record.rb
282
+ - app/models/barbeque/api/application_resource.rb
283
+ - app/models/barbeque/api/job_execution_resource.rb
284
+ - app/models/barbeque/api/job_retry_resource.rb
285
+ - app/models/barbeque/api/revision_lock_resource.rb
286
+ - app/models/barbeque/app.rb
77
287
  - app/models/barbeque/application_record.rb
78
- - app/models/job_definition.rb
79
- - app/models/job_execution.rb
80
- - app/models/job_queue.rb
81
- - app/models/job_retry.rb
82
- - app/models/slack_notification.rb
83
- - app/views/layouts/barbeque/application.html.erb
288
+ - app/models/barbeque/job_definition.rb
289
+ - app/models/barbeque/job_execution.rb
290
+ - app/models/barbeque/job_queue.rb
291
+ - app/models/barbeque/job_retry.rb
292
+ - app/models/barbeque/slack_notification.rb
293
+ - app/services/barbeque/message_enqueuing_service.rb
294
+ - app/services/barbeque/message_retrying_service.rb
295
+ - app/views/barbeque/apps/_form.html.haml
296
+ - app/views/barbeque/apps/edit.html.haml
297
+ - app/views/barbeque/apps/index.html.haml
298
+ - app/views/barbeque/apps/new.html.haml
299
+ - app/views/barbeque/apps/show.html.haml
300
+ - app/views/barbeque/job_definitions/_form.html.haml
301
+ - app/views/barbeque/job_definitions/_slack_notification_field.html.haml
302
+ - app/views/barbeque/job_definitions/edit.html.haml
303
+ - app/views/barbeque/job_definitions/index.html.haml
304
+ - app/views/barbeque/job_definitions/new.html.haml
305
+ - app/views/barbeque/job_definitions/show.html.haml
306
+ - app/views/barbeque/job_definitions/stats.html.haml
307
+ - app/views/barbeque/job_executions/show.html.haml
308
+ - app/views/barbeque/job_queues/_form.html.haml
309
+ - app/views/barbeque/job_queues/edit.html.haml
310
+ - app/views/barbeque/job_queues/index.html.haml
311
+ - app/views/barbeque/job_queues/new.html.haml
312
+ - app/views/barbeque/job_queues/show.html.haml
313
+ - app/views/barbeque/job_retries/show.html.haml
314
+ - app/views/layouts/barbeque/_header.html.haml
315
+ - app/views/layouts/barbeque/_sidebar.html.haml
316
+ - app/views/layouts/barbeque/application.html.haml
317
+ - app/views/layouts/barbeque/apps.html.haml
318
+ - app/views/layouts/barbeque/job_definitions.html.haml
319
+ - app/views/layouts/barbeque/job_executions.html.haml
320
+ - app/views/layouts/barbeque/job_queues.html.haml
321
+ - config/initializers/garage.rb
84
322
  - config/routes.rb
85
323
  - db/migrate/20160217020910_create_job_queues.rb
86
324
  - db/migrate/20160219010912_create_job_executions.rb
@@ -91,11 +329,28 @@ files:
91
329
  - db/migrate/20160415043427_create_slack_notifications.rb
92
330
  - db/migrate/20160509041452_add_job_queue_id_to_job_executions.rb
93
331
  - db/migrate/20160516041710_create_job_retries.rb
332
+ - db/migrate/20160829023237_prefix_barbeque_to_tables.rb
94
333
  - lib/barbeque.rb
334
+ - lib/barbeque/configuration.rb
335
+ - lib/barbeque/docker_image.rb
95
336
  - lib/barbeque/engine.rb
337
+ - lib/barbeque/execution_log.rb
338
+ - lib/barbeque/message.rb
339
+ - lib/barbeque/message/base.rb
340
+ - lib/barbeque/message/invalid_message.rb
341
+ - lib/barbeque/message/job_execution.rb
342
+ - lib/barbeque/message/job_retry.rb
343
+ - lib/barbeque/message_handler.rb
344
+ - lib/barbeque/message_handler/job_execution.rb
345
+ - lib/barbeque/message_handler/job_retry.rb
346
+ - lib/barbeque/message_queue.rb
347
+ - lib/barbeque/runner.rb
348
+ - lib/barbeque/runner/docker.rb
349
+ - lib/barbeque/slack_client.rb
96
350
  - lib/barbeque/version.rb
351
+ - lib/barbeque/worker.rb
97
352
  - lib/tasks/barbeque_tasks.rake
98
- homepage:
353
+ homepage: https://github.com/cookpad/barbeque
99
354
  licenses:
100
355
  - MIT
101
356
  metadata: {}
@@ -118,6 +373,5 @@ rubyforge_project:
118
373
  rubygems_version: 2.5.1
119
374
  signing_key:
120
375
  specification_version: 4
121
- summary: barbeque engine
376
+ summary: Job queue interface to run job with Docker
122
377
  test_files: []
123
- has_rdoc: