Class: CF::Deploy

Inherits:
Object
  • Object
show all
Defined in:
lib/cf/deploy.rb,
lib/cf/deploy/config.rb,
lib/cf/deploy/version.rb,
lib/cf/deploy/commands.rb,
lib/cf/deploy/blue_green.rb,
lib/cf/deploy/env_config.rb

Defined Under Namespace

Classes: BlueGreen, Commands, Config, EnvConfig

Constant Summary collapse

VERSION =
'0.1.5'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_task) ⇒ Deploy

Returns a new instance of Deploy.



18
19
20
21
22
# File 'lib/cf/deploy.rb', line 18

def initialize(config_task)
  @config_task = config_task
  @config = config_task[:config]
  @cf = config_task[:commands]
end

Instance Attribute Details

#cfObject

Returns the value of attribute cf.



16
17
18
# File 'lib/cf/deploy.rb', line 16

def cf
  @cf
end

#configObject

Returns the value of attribute config.



16
17
18
# File 'lib/cf/deploy.rb', line 16

def config
  @config
end

#config_taskObject

Returns the value of attribute config_task.



16
17
18
# File 'lib/cf/deploy.rb', line 16

def config_task
  @config_task
end

Class Method Details

.rake_tasks!(&block) ⇒ Object



11
12
13
# File 'lib/cf/deploy.rb', line 11

def rake_tasks!(&block)
  new(config: Config.new(&block), commands: Commands.new).rake_tasks!
end

Instance Method Details

#define_deploy_task(env, deployment) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/cf/deploy.rb', line 48

def define_deploy_task(env, deployment)
  Rake::Task.define_task(deployment[:task_name] => env[:deps]) do
    unless cf.push(deployment[:manifest])
      raise "Failed to deploy #{deployment}"
    end

    env[:routes].reject { |r| r[:flip] == true }.each do |route|
      deployment[:app_names].each do |app_name|
        cf.map_route(route, app_name)
      end
    end

    unless env[:runtime_memory].nil?
      deployment[:app_names].each do |app_name|
        cf.scale_memory(app_name, env[:runtime_memory])
      end
    end
  end
end

#define_deploy_tasks(env) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/cf/deploy.rb', line 40

def define_deploy_tasks(env)
  BlueGreen.new(env, config_task) if env[:deployments].size > 1

  env[:deployments].each do |deployment|
    define_deploy_task(env, deployment)
  end
end

#define_login_taskObject



32
33
34
35
36
37
38
# File 'lib/cf/deploy.rb', line 32

def 
  return Rake::Task['cf:login'] if Rake::Task.task_defined?('cf:login')

  Rake::Task.define_task('cf:login') do
    cf.(config)
  end
end

#deploy_tasksObject



28
29
30
# File 'lib/cf/deploy.rb', line 28

def deploy_tasks
  config[:environments].map { |env| define_deploy_tasks(env) }
end

#rake_tasks!Object



24
25
26
# File 'lib/cf/deploy.rb', line 24

def rake_tasks!
  [].concat(deploy_tasks)
end