Class: DanarchyDeploy::RemoteDeploy

Inherits:
Object
  • Object
show all
Defined in:
lib/danarchy_deploy.rb

Class Method Summary collapse

Class Method Details

.new(deployment, options) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/danarchy_deploy.rb', line 38

def self.new(deployment, options)
  puts "\n" + self.name
  options[:working_dir] = options[:deploy_dir] + '/' + deployment[:hostname]
  connector = { hostname: deployment[:hostname],
                ipv4:     deployment[:ipv4],
                ssh_user: deployment[:ssh_user],
                ssh_key:  deployment[:ssh_key] }

  install_gem(connector, options)
  push_deployment(connector, options)
  deploy_result = remote_LocalDeploy(connector, options)

  if deploy_result[:stderr]
    puts '   ! Deployment failed!'
    abort("STDERR:\n#{deploy_result[:stderr]}")
  else
    puts deploy_result[:stdout]
  end

  pull_deployment(connector, options)
  remote_Cleanup(connector, options)

  puts "\nRemote deployment complete!"
  deployment = JSON.parse(File.read(options[:deploy_file]), symbolize_names: true) if options[:deploy_file].end_with?('.json')
  deployment = YAML.load_file(options[:deploy_file]) if options[:deploy_file].end_with?('.yaml')
  deployment
end