Class: Dk::ABDeploy::Update
- Inherits:
-
Object
- Object
- Dk::ABDeploy::Update
- Includes:
- Task
- Defined in:
- lib/dk-abdeploy/update.rb
Defined Under Namespace
Modules: TestHelpers
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.git_reset_cmd_str(repo_dir, ref) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/dk-abdeploy/update.rb', line 21 def self.git_reset_cmd_str(repo_dir, ref) "cd #{repo_dir} && " \ "git fetch -q origin && " \ "git reset -q --hard #{ref} && " \ "git clean -q -d -x -f" end |
.readlink_cmd_str(link) ⇒ Object
17 18 19 |
# File 'lib/dk-abdeploy/update.rb', line 17 def self.readlink_cmd_str(link) "readlink #{link}" end |
Instance Method Details
#run! ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/dk-abdeploy/update.rb', line 28 def run! # validate required params are set if params[REF_PARAM_NAME].to_s.empty? raise ArgumentError, "no #{REF_PARAM_NAME.inspect} param set" end if params[PRIMARY_SSH_HOST_PARAM_NAME].to_s.empty? raise ArgumentError, "no #{PRIMARY_SSH_HOST_PARAM_NAME.inspect} param set" end # lookup the current release dir; set current/deploy release dir params release_dirs = [ params[RELEASE_A_DIR_PARAM_NAME], params[RELEASE_B_DIR_PARAM_NAME] ] rl_ssh = ssh(readlink_cmd_str(params[CURRENT_DIR_PARAM_NAME]), { :hosts => params[PRIMARY_SSH_HOST_PARAM_NAME] }) current_dir = (o = rl_ssh.stdout.strip).empty? ? release_dirs.last : o set_param(CURRENT_RELEASE_DIR_PARAM_NAME, current_dir) release_dirs.delete(params[CURRENT_RELEASE_DIR_PARAM_NAME]) set_param(DEPLOY_RELEASE_DIR_PARAM_NAME, release_dirs.first) # reset the deploy release git repo ssh! git_reset_cmd_str(params[DEPLOY_RELEASE_DIR_PARAM_NAME], params[REF_PARAM_NAME]) end |