Class: AvoDeploy::Task::LocalTaskExecutionEnvironment

Inherits:
TaskExecutionEnvironment show all
Defined in:
lib/avodeploy/task/local_task_execution_environment.rb

Instance Method Summary collapse

Methods inherited from TaskExecutionEnvironment

#get, #handle_abort, #log, #scm_provider=, #set

Constructor Details

#initialize(config) ⇒ LocalTaskExecutionEnvironment

Initialized the environment

Parameters:

  • config (Hash)

    deployment configuration



26
27
28
29
30
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 26

def initialize(config)
	super

	@dir = Dir.pwd
end

Instance Method Details

#chdir(dir) ⇒ Object

Changes the directory for commands to be executed in

Parameters:

  • dir (String)

    the directory to change to



43
44
45
46
47
48
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 43

def chdir(dir)
	log.debug "changing directory [#{dir.yellow}] " + "locally".cyan

	Dir.chdir(dir)
	@dir = Dir.pwd
end

#check_util_availability(utils) ⇒ Object

Checks, if all utilities are available for the deployment process to be executed

Parameters:

  • utils (Array)

    array with utilities to check



36
37
38
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 36

def check_util_availability(utils)
	super(utils, 'locally')
end

#command(cmd) ⇒ CommandExecutionResult

Executes a command locally in the current directory

Parameters:

  • cmd (String)

    the command to execute

Returns:



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 96

def command(cmd)
	log = AvoDeploy::Deployment.instance.log

	log.info "Executing [" + cmd.yellow + "] " + "locally".cyan

	result = AvoDeploy::CommandExecutionResult.new

	begin
		stdout, stderr, status = ::Open3.capture3(cmd, :chdir => cwd())

		result.stdin = cmd
		result.stdout = stdout
		result.stderr = stderr
		result.retval = status.exitstatus

		if result.stdout.nil? == false && result.stdout.empty? == false
			log.debug "Stdout: " + result.stdout.green
		end

		if result.stderr.nil? == false && result.stderr.empty? == false
			log.debug "Stderr: " + result.stderr.red
		end
	rescue Exception => e
		handle_abort e
	end

	result
end

#copy_to_target(target, file, remote) ⇒ Object

Copies a file to a remote system (= target)

Parameters:

  • target (Target)

    the target system to deploy to

  • file (String)

    the local file to upload

  • remote (String)

    path on the remote system



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 69

def copy_to_target(target, file, remote)
	log = AvoDeploy::Deployment.instance.log

	log.info "started upload of file #{file} to #{target.name}"

    Net::SSH.start(
        target.config[:host],
        target.config[:user]
    ) do |session|
      session.scp.upload!(file, remote, :recursive => true) do |ch, name, sent, total|
	        percentage = 0

	        begin
	          percentage = (sent.to_f * 100 / total.to_f).to_i
	        rescue Exception => e
	          AvoDeploy::Deployment.instance.handle_abort(e)
	        end
 		end
	end

	log.info "upload completed"
end

#cwdString

Returns the current working directory

Returns:

  • (String)

    current working directory



53
54
55
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 53

def cwd
	@dir
end

#targetsHash

Returns all target systems to deploy to

Returns:

  • (Hash)

    hash of target systems



60
61
62
# File 'lib/avodeploy/task/local_task_execution_environment.rb', line 60

def targets
	AvoDeploy::Deployment.instance.config.targets
end