Class: BubBot::DeployManager

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

Instance Method Summary collapse

Instance Method Details

#branches(target_name) ⇒ Object



53
54
55
# File 'lib/bub_bot/deploy_manager.rb', line 53

def branches(target_name)
  Repo.branches(target(target_name)['git'])
end

#deploy(server, target_name, branch) ⇒ Object



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
    }

    # Handle each type of deploy here.
    # TODO: maybe handle multiple deploys for each target?  Right now the
    # workaround to do that is to just have a script-type deploy that does that.
    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

#target_namesObject



49
50
51
# File 'lib/bub_bot/deploy_manager.rb', line 49

def target_names
  targets.keys - ['all']
end