class DeployDply::Archive

Attributes

branch[R]
name[R]
skip_depcheck[W]

Public Class Methods

new(name, branch: nil, revision: nil) click to toggle source
# File lib/deploy_dply/archive.rb, line 10
def initialize(name, branch: nil, revision: nil)
  @name = name
  @branch = (branch || load_branch).tr("/", "_")
  @revision = revision
  validate
end

Public Instance Methods

created(git: true, gnu_tar: false, &block) click to toggle source
# File lib/deploy_dply/archive.rb, line 17
def created(git: true, gnu_tar: false, &block)
  create_artifacts_dir
  create_tar git, gnu_tar
  instance_eval &block
  add_git_commit_id
  add_revision
  add_archive_name
  depcheck
  compress
end

Private Instance Methods

add(file, chdir: nil) click to toggle source
# File lib/deploy_dply/archive.rb, line 93
def add(file, chdir: nil)
  if chdir
    helper.sh %(tar --hard-dereference -h -C #{chdir} --append -f "#{tar}" "#{file}")
  else
    helper.sh %(tar --hard-dereference -h --append -f "#{tar}" "#{file}")
  end
end
add_archive_name() click to toggle source
# File lib/deploy_dply/archive.rb, line 60
def add_archive_name
  file = "ARCHIVE_NAME"
  File.write(file, @name)
  add file
end
add_bundle() click to toggle source
# File lib/deploy_dply/archive.rb, line 66
def add_bundle
  add ".bundle"
  add "vendor/bundle"
end
add_git_commit_id() click to toggle source
# File lib/deploy_dply/archive.rb, line 47
def add_git_commit_id
  commit_id = `git rev-parse HEAD`.chomp!
  file = "GIT_COMMIT_ID"
  File.write(file, commit_id)
  add file
end
add_revision() click to toggle source
# File lib/deploy_dply/archive.rb, line 54
def add_revision
  file = "REVISION"
  File.write(file, revision)
  add file
end
compress() click to toggle source
# File lib/deploy_dply/archive.rb, line 110
def compress
  helper.sh %(#{gzip} -f -9 "#{tar}")
end
create_artifacts_dir() click to toggle source
# File lib/deploy_dply/archive.rb, line 34
def create_artifacts_dir
  artifacts_dir = "tmp/build_artifacts"
  FileUtils.mkdir artifacts_dir if not File.directory? artifacts_dir
end
create_tar(git, gnu_tar) click to toggle source
# File lib/deploy_dply/archive.rb, line 71
def create_tar(git, gnu_tar)
  tmp_dir = "tmp/app_code"
  if git
    if gnu_tar
      FileUtils.rm_rf tmp_dir if File.exists? tmp_dir
      FileUtils.mkdir tmp_dir
      helper.sh "git archive HEAD | tar xf - -C #{tmp_dir}"
      helper.sh "tar cf #{tar} -C #{tmp_dir} ."
    else
      helper.sh "git archive -o #{tar} HEAD"
    end
  else
    helper.sh "tar -cf #{tar} -T /dev/null"
  end
ensure
  FileUtils.rm_rf tmp_dir if File.exists? tmp_dir
end
depcheck() click to toggle source
# File lib/deploy_dply/archive.rb, line 105
def depcheck
  return if @skip_depcheck
  helper.sh %(drake depcheck #{tar})
end
gzip() click to toggle source
# File lib/deploy_dply/archive.rb, line 114
def gzip
  File.exists?("/usr/bin/pigz") ? "pigz" : "gzip"
end
helper() click to toggle source
# File lib/deploy_dply/archive.rb, line 30
def helper
  @helper ||= Helper.new
end
load_branch() click to toggle source
# File lib/deploy_dply/archive.rb, line 39
def load_branch
  ENV["BUILD_BRANCH"] || ENV["BRANCH_NAME"] || `git rev-parse --abbrev-ref HEAD`.chomp!
end
remove(file) click to toggle source
# File lib/deploy_dply/archive.rb, line 101
def remove(file)
  helper.sh %(tar --delete -f "#{tar}" "#{file}")
end
revision() click to toggle source
# File lib/deploy_dply/archive.rb, line 43
def revision
  @revision ||= ENV["BUILD_NUMBER"]
end
tar() click to toggle source
# File lib/deploy_dply/archive.rb, line 89
def tar
  @tar ||= "tmp/build_artifacts/#{@name}-#{@revision}-#{@branch}.tar"
end
validate() click to toggle source
# File lib/deploy_dply/archive.rb, line 118
def validate
  raise "BUILD_NUMBER not specified" if ( !revision || revision.strip.empty?)
  arr = [:name, :branch]
  arr.each do |k|
    v = send k
    v ||= ""
    raise "archive param :#{k} is empty" if v.strip.empty?
  end
end