class Gantree::DeployVersion
Attributes
dockerrun_file[R]
packaged_version[R]
Public Class Methods
new(options, env)
click to toggle source
# File lib/gantree/deploy_version.rb, line 10 def initialize options, env @options = options @ext = @options[:ext] @ext_role = @options[:ext_role] @project_root = @options[:project_root] @dockerrun_file = "#{@project_root}Dockerrun.aws.json" @env = env end
Public Instance Methods
clean_up()
click to toggle source
# File lib/gantree/deploy_version.rb, line 138 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)
click to toggle source
# File lib/gantree/deploy_version.rb, line 127 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_files()
click to toggle source
# File lib/gantree/deploy_version.rb, line 64 def create_version_files clean_up version = "#{version_tag}-#{Time.now.strftime("%m-%d-%Y-%H-%M-%S")}" puts "version: #{version}" set_auth if @options[:auth] set_image_path if @options[:image_path] set_tag_to_deploy if File.directory?(".ebextensions/") || @ext || @ext_role zip = "#{@project_root}#{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
docker()
click to toggle source
# File lib/gantree/deploy_version.rb, line 23 def docker @docker ||= JSON.parse(IO.read(@dockerrun_file)) end
ext?()
click to toggle source
# File lib/gantree/deploy_version.rb, line 85 def ext? if @ext true else false end end
ext_branch?(repo)
click to toggle source
# File lib/gantree/deploy_version.rb, line 114 def ext_branch? repo if repo.count(":") == 2 true else false end end
get_ext_branch(repo)
click to toggle source
# File lib/gantree/deploy_version.rb, line 122 def get_ext_branch repo branch = repo.match(/:.*(:.*)$/)[1] branch.tr(':','') end
get_ext_repo(repo)
click to toggle source
# File lib/gantree/deploy_version.rb, line 106 def get_ext_repo repo if ext_branch? repo repo.sub(":#{get_ext_branch repo}", '') else repo end end
get_role_type()
click to toggle source
# File lib/gantree/deploy_version.rb, line 154 def get_role_type @env.split('-')[2] end
local_extensions?()
click to toggle source
# File lib/gantree/deploy_version.rb, line 102 def local_extensions? File.directory?(".ebextensions/") end
merge_extensions()
click to toggle source
# File lib/gantree/deploy_version.rb, line 147 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?()
click to toggle source
# File lib/gantree/deploy_version.rb, line 93 def repo? if @ext.include? "github" puts "Cloning: #{@ext}..." true else false end end
run()
click to toggle source
# File lib/gantree/deploy_version.rb, line 19 def run @packaged_version = create_version_files end
set_auth()
click to toggle source
# File lib/gantree/deploy_version.rb, line 27 def set_auth docker["Authentication"] = {} items = @options[:auth].split("/") bucket = items.shift key = items.join("/") docker["Authentication"]["Bucket"] = bucket docker["Authentication"]["Key"] = key IO.write("/tmp/#{@dockerrun_file}", JSON.pretty_generate(docker)) end
set_image_path()
click to toggle source
# File lib/gantree/deploy_version.rb, line 51 def set_image_path image = docker["Image"]["Name"] image.gsub!(/(.*):/, "#{@options[:image_path]}:") path = "/tmp/#{@dockerrun_file}" FileUtils.mkdir_p(File.dirname(path)) unless File.exist?(path) IO.write(path, JSON.pretty_generate(docker)) image end
set_tag_to_deploy()
click to toggle source
# File lib/gantree/deploy_version.rb, line 37 def set_tag_to_deploy image = docker["Image"]["Name"] token = image.split(":") if token.length == 3 image = token[0] + (":") + token[1] + ":#{@options[:tag]}" docker["Image"]["Name"] = image elsif token.length == 2 image.gsub!(/:(.*)$/, ":#{@options[:tag]}") else puts "Too many ':'".yellow end IO.write("/tmp/#{@dockerrun_file}", JSON.pretty_generate(docker)) end
version_tag()
click to toggle source
# File lib/gantree/deploy_version.rb, line 60 def version_tag @options[:tag] || tag end