Class: Wrapbox::Runner::Docker

Inherits:
Object
  • Object
show all
Defined in:
lib/wrapbox/runner/docker.rb

Defined Under Namespace

Classes: Cli, ExecutionError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Docker

Returns a new instance of Docker.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/wrapbox/runner/docker.rb', line 17

def initialize(options)
  @name = options[:name]
  @container_definitions = options[:container_definition] ? [options[:container_definition]] : options[:container_definitions]

  if @container_definitions.size >= 2
    raise "Docker runner does not support multi container currently"
  end

  @container_definition = @container_definitions[0]

  @keep_container = options[:keep_container]
end

Instance Attribute Details

#container_definition ⇒ Object (readonly)

Returns the value of attribute container_definition.



12
13
14
# File 'lib/wrapbox/runner/docker.rb', line 12

def container_definition
  @container_definition
end

#keep_container ⇒ Object (readonly)

Returns the value of attribute keep_container.



12
13
14
# File 'lib/wrapbox/runner/docker.rb', line 12

def keep_container
  @keep_container
end

#name ⇒ Object (readonly)

Returns the value of attribute name.



12
13
14
# File 'lib/wrapbox/runner/docker.rb', line 12

def name
  @name
end

Instance Method Details

#run(class_name, method_name, args, container_definition_overrides: {}, environments: []) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/wrapbox/runner/docker.rb', line 30

def run(class_name, method_name, args, container_definition_overrides: {}, environments: [])
  definition = container_definition
    .merge(container_definition_overrides)

  envs = base_environments(class_name, method_name, args)
  envs.concat(extract_environments(environments))

  exec_docker(definition: definition, cmd: ["bundle", "exec", "rake", "wrapbox:run"], environments: envs)
end

#run_cmd(cmds, container_definition_overrides: {}, environments: []) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/wrapbox/runner/docker.rb', line 40

def run_cmd(cmds,  container_definition_overrides: {}, environments: [])
  definition = container_definition
    .merge(container_definition_overrides)

  environments = extract_environments(environments)

  cmds << nil if cmds.empty?
  ths = cmds.map.with_index do |cmd, idx|
    Thread.new(cmd, idx) do |c, i|
      envs = environments + ["WRAPBOX_CMD_INDEX=#{idx}"]
      exec_docker(
        definition: definition,
        cmd: c&.shellsplit,
        environments: envs
      )
    end
  end
  ths.each(&:join)
end