Skip to content

Commit

Permalink
Merge pull request #45 from drmikecrowe/master
Browse files Browse the repository at this point in the history
Adds "ssh_needs_tty" general parameter, and rsync copy option
  • Loading branch information
andres-montanez committed Mar 16, 2014
2 parents ae78522 + e7d8d5c commit 8b43a13
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 14 deletions.
9 changes: 6 additions & 3 deletions Mage/Command/BuiltIn/InitCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,15 @@ protected function getGeneralConfig()
'%notificationEnabled%',
'%loggingEnabled%',
'%maxlogs%',
'%ssh_needs_tty%',
),
array(
$projectName,
$notificationEmail,
$notificationEnabled,
'true',
30
30,
'false'
),
$this->getGeneralConfigTemplate()
);
Expand All @@ -98,8 +100,9 @@ protected function getGeneralConfigTemplate()
. 'email: %notificationEmail%' . PHP_EOL
. 'notifications: %notificationEnabled%' . PHP_EOL
. 'logging: %loggingEnabled%' . PHP_EOL
. 'maxlogs: %maxlogs%' . PHP_EOL;
. 'maxlogs: %maxlogs%' . PHP_EOL
. 'ssh_needs_tty: %ssh_needs_tty%' . PHP_EOL;

return $template;
}
}
}
15 changes: 9 additions & 6 deletions Mage/Task/AbstractTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -179,17 +179,20 @@ protected final function runCommandRemote($command, &$output = null)
$releasesDirectory = '';

} else {
$releasesDirectory = '/'
. $this->getConfig()->release('directory', 'releases')
. '/'
$releasesDirectory = '/'
. $this->getConfig()->release('directory', 'releases')
. '/'
. $this->getConfig()->getReleaseId();
}
}

} else {
$releasesDirectory = '';
}

// if general.yml includes "ssy_needs_tty: true", then add "-t" to the ssh command
$needs_tty = ($this->getConfig()->general('ssh_needs_tty',false) ? "-t" : "");

$localCommand = 'ssh -p ' . $this->getConfig()->getHostPort() . ' '
$localCommand = 'ssh ' . $needs_tty . ' -p ' . $this->getConfig()->getHostPort() . ' '
. '-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no '
. $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ' '
. '"cd ' . rtrim($this->getConfig()->deployment('to'), '/') . $releasesDirectory . ' && '
Expand All @@ -213,4 +216,4 @@ protected final function runCommand($command, &$output = null)
return $this->runCommandLocal($command, $output);
}
}
}
}
26 changes: 21 additions & 5 deletions Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,12 @@ public function getName()
if ($this->getConfig()->getParameter('overrideRelease', false) == true) {
return 'Deploy via Rsync (with Releases override) [built-in]';
} else {
return 'Deploy via Rsync (with Releases) [built-in]';
$rsync_copy = $this->getConfig()->deployment("rsync");
if ( $rsync_copy && is_array($rsync_copy) && $rsync_copy['copy'] ) {
return 'Deploy via Rsync (with Releases) [built-in, incremental]';
} else {
return 'Deploy via Rsync (with Releases) [built-in]';
}
}
} else {
return 'Deploy via Rsync [built-in]';
Expand Down Expand Up @@ -58,8 +63,8 @@ public function run()
'.svn',
'.mage',
'.gitignore',
'.gitkeep',
'nohup.out'
'.gitkeep',
'nohup.out'
);

// Look for User Excludes
Expand All @@ -73,7 +78,18 @@ public function run()
$deployToDirectory = rtrim($this->getConfig()->deployment('to'), '/')
. '/' . $releasesDirectory
. '/' . $this->getConfig()->getReleaseId();
$this->runCommandRemote('mkdir -p ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
$resultFetch = $this->runCommandRemote('ls -ld current | cut -d"/" -f2', $releaseToOverride);

if ( $resultFetch ) {
// If deployment configuration is rsync, include a flag to simply sync the deltas between the prior release
// rsync: { copy: yes }
$rsync_copy = $this->getConfig()->deployment("rsync");
if ( $rsync_copy && is_array($rsync_copy) && $rsync_copy['copy'] ) {
$this->runCommandRemote('cp -R ' . $releasesDirectory . '/' . $releaseToOverride . ' ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
} else {
$this->runCommandRemote('mkdir -p ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
}
}
}

$command = 'rsync -avz '
Expand Down Expand Up @@ -137,4 +153,4 @@ protected function excludes(Array $excludes)
$excludesRsync = trim($excludesRsync);
return $excludesRsync;
}
}
}

0 comments on commit 8b43a13

Please sign in to comment.