Method: Barbeque::Executor::Docker#start_execution

Defined in:
lib/barbeque/executor/docker.rb

#start_execution(job_execution, envs) ⇒ Object

Parameters:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/barbeque/executor/docker.rb', line 17

def start_execution(job_execution, envs)
  docker_image = DockerImage.new(job_execution.job_definition.app.docker_image)
  cmd = build_docker_run_command(docker_image, job_execution.job_definition.command, envs)
  stdout, stderr, status = Open3.capture3(*cmd)
  if status.success?
    Barbeque::DockerContainer.create!(message_id: job_execution.message_id, container_id: stdout.chomp)
    job_execution.update!(status: :running)
  else
    Barbeque::ExecutionLog.try_save_stdout_and_stderr(job_execution, stdout, stderr)
    job_execution.update!(status: :failed, finished_at: Time.zone.now)
    Barbeque::SlackNotifier.notify_job_execution(job_execution)
    job_execution.retry_if_possible!
  end
end