From beb663e801df7874a2939c5f6e32f977ca43deee Mon Sep 17 00:00:00 2001 From: Osukaru Date: Mon, 7 Apr 2014 12:20:41 +0200 Subject: [PATCH] Added identity file option for ssh and scp commands --- Mage/Config.php | 36 ++++++++++++------- Mage/Task/AbstractTask.php | 2 +- .../BuiltIn/Deployment/Strategy/RsyncTask.php | 2 +- .../BuiltIn/Deployment/Strategy/TarGzTask.php | 2 +- bin/mage | 2 +- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/Mage/Config.php b/Mage/Config.php index a119886..6ce69e1 100644 --- a/Mage/Config.php +++ b/Mage/Config.php @@ -341,10 +341,20 @@ class Config public function getHostPort() { $info = explode(':', $this->host); - $info[] = $this->deployment('port', '22'); + $info[] = $this->deployment('port', '22'); return $info[1]; } + /** + * Get the general Host Identity File Option + * + * @return string + */ + public function getHostIdentityFileOption() + { + return $this->deployment('identity-file') ? '-i '.$this->deployment('identity-file').' ': ''; + } + /** * Get the current Host * @@ -405,7 +415,7 @@ class Config } // Global Config - $config = $this->getEnvironmentOption('deployment', array()); + $config = $this->getEnvironmentOption('deployment', array()); if (isset($config[$option])) { if (is_array($default) && ($config[$option] == '')) { return $default; @@ -424,7 +434,7 @@ class Config * @param string $default * @return mixed */ - public function release($option, $default = false) + public function release($option, $default = false) { // Host Config if (is_array($this->hostConfig) && isset($this->hostConfig['releases'])) { @@ -432,17 +442,17 @@ class Config return $this->hostConfig['releases'][$option]; } } - - $config = $this->getEnvironmentOption('releases', array()); + + $config = $this->getEnvironmentOption('releases', array()); if (isset($config[$option])) { - if (is_array($default) && ($config[$option] == '')) { - return $default; - } else { - return $config[$option]; - } - } else { - return $default; - } + if (is_array($default) && ($config[$option] == '')) { + return $default; + } else { + return $config[$option]; + } + } else { + return $default; + } } /** diff --git a/Mage/Task/AbstractTask.php b/Mage/Task/AbstractTask.php index d6afcec..f028ab7 100644 --- a/Mage/Task/AbstractTask.php +++ b/Mage/Task/AbstractTask.php @@ -192,7 +192,7 @@ abstract class AbstractTask // 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 ' . $needs_tty . ' -p ' . $this->getConfig()->getHostPort() . ' ' + $localCommand = 'ssh ' . $this->getConfig()->getHostIdentityFileOption() . $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 . ' && ' diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php index ead532c..74af0ea 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php @@ -94,7 +94,7 @@ class RsyncTask extends AbstractTask implements IsReleaseAware } $command = 'rsync -avz ' - . '--rsh="ssh -p' . $this->getConfig()->getHostPort() . '" ' + . '--rsh="ssh ' . $this->getConfig()->getHostIdentityFileOption() . '-p' . $this->getConfig()->getHostPort() . '" ' . $this->excludes(array_merge($excludes, $userExcludes)) . ' ' . $this->getConfig()->deployment('from') . ' ' . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory; diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php b/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php index aa23c70..e1b6477 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php @@ -89,7 +89,7 @@ class TarGzTask extends AbstractTask implements IsReleaseAware $result = $this->runCommandLocal($command); // Copy Tar Gz to Remote Host - $command = 'scp -P ' . $this->getConfig()->getHostPort() . ' ' . $localTarGz . '.tar.gz ' + $command = 'scp ' . $this->getConfig()->getHostIdentityFileOption() . '-P ' . $this->getConfig()->getHostPort() . ' ' . $localTarGz . '.tar.gz ' . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory; $result = $this->runCommandLocal($command) && $result; diff --git a/bin/mage b/bin/mage index 9236138..d62464b 100755 --- a/bin/mage +++ b/bin/mage @@ -13,7 +13,7 @@ date_default_timezone_set('UTC'); $baseDir = dirname(dirname(__FILE__)); -define('MAGALLANES_VERSION', '1.0.1'); +define('MAGALLANES_VERSION', '1.0.2'); define('MAGALLANES_DIRECTORY', $baseDir); // Preload