6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/bub_bot/deploy_manager.rb', line 6
def deploy(server, target_name, branch)
if DeployState[server, target_name].deploying?
raise RespondableError.new("A deploy to #{target_name} on #{server} is already in progress. Not deploying.")
end
begin
DeployState[server, target_name].set(true)
target_config = target(target_name, server)
unless deploy_config = target_config['deploy']
raise "Missing deploy config for #{target_name}"
end
locals = {
server: server
}
if deploy_git_remote = deploy_config['git']
repo(target_name, server).push(branch, deploy_git_remote)
elsif deploy_script = deploy_config['script']
puts "xdeploying web script #{deploy_script}"
repo = repo(target_name, server)
puts "Checking out..."
repo.checkout(branch)
puts "Pulling..."
repo.pull
puts "Running script..."
success = Kernel.system("./#{deploy_script} #{repo.repo_dir} #{branch} #{server}")
puts "Success = #{success}"
unless success
raise RespondableError.new("Deploy script failed for server #{server} and target #{target_name}")
end
elsif deploy_url = deploy_config['http']
raise RespondableError.new('Sorry, deploys by http request are not supported yet')
end
ensure
DeployState[server, target_name].set(false)
end
end
|