Class: Gantree::DeployVersion

Inherits:
Deploy show all
Defined in:
lib/gantree/deploy_version.rb

Instance Attribute Summary

Attributes inherited from Deploy

#name

Instance Method Summary collapse

Methods inherited from Deploy

#application?, #check_dir_name, #check_eb_bucket, #create_eb_version, #deploy, #deploy_to_one, #environment?, #environment_found?, #generate_eb_bucket, #new_hash, #prod_deploy?, #set_bucket, #update_application, #upload_to_s3

Methods inherited from Base

#authenticate_librato, #cfm, #check_credentials, check_for_updates, #check_template_bucket, #create_default_env, #eb, #env_type, #error_msg, #escape_characters_in_string, #get_latest_docker_solution, #print_options, #s3, #set_aws_keys, #tag, update_configuration, #upload_templates

Constructor Details

#initialize(options, env) ⇒ DeployVersion

Returns a new instance of DeployVersion.



9
10
11
12
13
14
15
# File 'lib/gantree/deploy_version.rb', line 9

def initialize options, env
  @options = options
  @ext = @options[:ext]
  @ext_role = @options[:ext_role]
  @dockerrun_file = "Dockerrun.aws.json"
  @env = env
end

Instance Method Details

#clean_upObject



109
110
111
112
113
114
115
116
# File 'lib/gantree/deploy_version.rb', line 109

def clean_up
  puts "Cleaning up tmp files".yellow
  FileUtils.rm_rf @packaged_version if @packaged_version
  FileUtils.rm_rf("/tmp/#{@ext.split('/').last}") if File.directory?("/tmp/#{@ext.split('/').last}")
  FileUtils.rm_rf("/tmp/#{@ext_role.split('/').last}:#{get_role_type}") if @ext_role
  FileUtils.rm_rf("/tmp/merged_extensions/") if File.directory? "/tmp/merged_extensions/"
  puts "All tmp files removed".green
end

#clone_repo(repo) ⇒ Object



98
99
100
101
102
103
104
105
106
107
# File 'lib/gantree/deploy_version.rb', line 98

def clone_repo repo
  repo_name = repo.split('/').last
  FileUtils.mkdir("/tmp/#{repo_name}")
  if ext_branch? repo
    `git clone -b #{get_ext_branch repo} #{get_ext_repo repo} /tmp/#{repo_name}/`
  else
    `git clone #{get_ext_repo repo} /tmp/#{repo_name}/`
  end
  FileUtils.cp_r "/tmp/#{repo_name}/.", "/tmp/merged_extensions/.ebextensions/"
end

#create_version_filesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/gantree/deploy_version.rb', line 36

def create_version_files
  clean_up
  version = "#{tag}-#{Time.now.strftime("%m-%d-%Y-%H-%M-%S")}"
  puts "version: #{version}"
  set_image_path if @options[:image_path]
  set_tag_to_deploy
  if File.directory?(".ebextensions/") || @ext || @ext_role
    zip = "#{version}.zip"
    merge_extensions
    puts "The following files are being zipped".yellow
    system('ls -l /tmp/merged_extensions/.ebextensions/')
    Archive::Zip.archive(zip, ['/tmp/merged_extensions/.ebextensions/', "/tmp/#{@dockerrun_file}"])
    zip
  else
    new_dockerrun = "/tmp/#{version}-Dockerrun.aws.json"
    FileUtils.cp("/tmp/Dockerrun.aws.json", new_dockerrun)
    new_dockerrun
  end
end

#ext?Boolean

Returns:

  • (Boolean)


56
57
58
59
60
61
62
# File 'lib/gantree/deploy_version.rb', line 56

def ext?
  if @ext
    true
  else
    false
  end
end

#ext_branch?(repo) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
89
90
91
# File 'lib/gantree/deploy_version.rb', line 85

def ext_branch? repo
  if repo.count(":") == 2
    true
  else
    false
  end
end

#get_ext_branch(repo) ⇒ Object



93
94
95
96
# File 'lib/gantree/deploy_version.rb', line 93

def get_ext_branch repo
  branch = repo.match(/:.*(:.*)$/)[1]
  branch.tr(':','')
end

#get_ext_repo(repo) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/gantree/deploy_version.rb', line 77

def get_ext_repo repo
  if ext_branch? repo
    repo.sub(":#{get_ext_branch repo}", '')
  else
    repo
  end
end

#get_role_typeObject



125
126
127
# File 'lib/gantree/deploy_version.rb', line 125

def get_role_type
  @env.split('-')[2]
end

#local_extensions?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/gantree/deploy_version.rb', line 73

def local_extensions?
  File.directory?(".ebextensions/")
end

#merge_extensionsObject



118
119
120
121
122
123
124
# File 'lib/gantree/deploy_version.rb', line 118

def merge_extensions
  FileUtils.mkdir("/tmp/merged_extensions/")
  FileUtils.mkdir("/tmp/merged_extensions/.ebextensions/")
  clone_repo @ext if @ext
  clone_repo "#{@ext_role}:#{get_role_type}" if @ext_role
  FileUtils.cp_r('.ebextensions/.','/tmp/merged_extensions/.ebextensions') if File.directory? ".ebextensions/"
end

#repo?Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
70
71
# File 'lib/gantree/deploy_version.rb', line 64

def repo?
  if @ext.include? "github"
    puts "Cloning: #{@ext}..."
    true
  else
    false
  end
end

#runObject



17
18
19
# File 'lib/gantree/deploy_version.rb', line 17

def run
  @packaged_version = create_version_files
end

#set_image_pathObject



28
29
30
31
32
33
34
# File 'lib/gantree/deploy_version.rb', line 28

def set_image_path
  docker = JSON.parse(IO.read(@dockerrun_file))
  image = docker["Image"]["Name"]
  image.gsub!(/(.*):/, "#{@options[:image_path]}:")
  IO.write("/tmp/#{@dockerrun_file}", JSON.pretty_generate(docker))
  image
end

#set_tag_to_deployObject



21
22
23
24
25
26
# File 'lib/gantree/deploy_version.rb', line 21

def set_tag_to_deploy
  docker = JSON.parse(IO.read(@dockerrun_file))
  image = docker["Image"]["Name"]
  image.gsub!(/:(.*)$/, ":#{@options[:tag]}")
  IO.write("/tmp/#{@dockerrun_file}", JSON.pretty_generate(docker))
end