From 4528788d49bfa2108cd7cafbcca8f71e3eebcae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Monta=C3=B1ez?= Date: Thu, 12 Jun 2014 17:12:30 -0300 Subject: [PATCH] Reorganize common Deployment code. --- .../Strategy/BaseStrategyTaskAbstract.php | 64 +++++++++++++++++++ .../BuiltIn/Deployment/Strategy/RsyncTask.php | 28 ++------ .../BuiltIn/Deployment/Strategy/TarGzTask.php | 27 ++------ .../.mage/config/environment/staging.yml | 2 +- 4 files changed, 74 insertions(+), 47 deletions(-) create mode 100644 Mage/Task/BuiltIn/Deployment/Strategy/BaseStrategyTaskAbstract.php diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/BaseStrategyTaskAbstract.php b/Mage/Task/BuiltIn/Deployment/Strategy/BaseStrategyTaskAbstract.php new file mode 100644 index 0000000..f17afbd --- /dev/null +++ b/Mage/Task/BuiltIn/Deployment/Strategy/BaseStrategyTaskAbstract.php @@ -0,0 +1,64 @@ + +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +namespace Mage\Task\BuiltIn\Deployment\Strategy; + +use Mage\Task\AbstractTask; +use Mage\Task\Releases\IsReleaseAware; + +/** + * Abstract Base task to concentrate common code for Deployment Tasks + * + * @author Andrés Montañez + */ +abstract class BaseStrategyTaskAbstract extends AbstractTask implements IsReleaseAware +{ + /** + * Checks if there is an override underway + * + * @return bool + */ + protected function checkOverrideRelease() + { + $overrideRelease = $this->getParameter('overrideRelease', false); + + if ($overrideRelease == true) { + $releaseToOverride = false; + $resultFetch = $this->runCommandRemote('ls -ld current | cut -d"/" -f2', $releaseToOverride); + if ($resultFetch && is_numeric($releaseToOverride)) { + $this->getConfig()->setReleaseId($releaseToOverride); + } + } + + return $overrideRelease; + } + + /** + * Gathers the files to exclude + * + * @return array + */ + protected function getExcludes() + { + $excludes = array( + '.git', + '.svn', + '.mage', + '.gitignore', + '.gitkeep', + 'nohup.out' + ); + + // Look for User Excludes + $userExcludes = $this->getConfig()->deployment('excludes', array()); + + return array_merge($excludes, $userExcludes); + } +} diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php index 74af0ea..cf29b3e 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php @@ -10,7 +10,7 @@ namespace Mage\Task\BuiltIn\Deployment\Strategy; -use Mage\Task\AbstractTask; +use Mage\Task\BuiltIn\Deployment\Strategy\BaseStrategyTaskAbstract; use Mage\Task\Releases\IsReleaseAware; /** @@ -18,7 +18,7 @@ use Mage\Task\Releases\IsReleaseAware; * * @author Andrés Montañez */ -class RsyncTask extends AbstractTask implements IsReleaseAware +class RsyncTask extends BaseStrategyTaskAbstract implements IsReleaseAware { /** * (non-PHPdoc) @@ -48,27 +48,9 @@ class RsyncTask extends AbstractTask implements IsReleaseAware */ public function run() { - $overrideRelease = $this->getParameter('overrideRelease', false); + $this->checkOverrideRelease(); - if ($overrideRelease == true) { - $releaseToOverride = false; - $resultFetch = $this->runCommandRemote('ls -ld current | cut -d"/" -f2', $releaseToOverride); - if ($resultFetch && is_numeric($releaseToOverride)) { - $this->getConfig()->setReleaseId($releaseToOverride); - } - } - - $excludes = array( - '.git', - '.svn', - '.mage', - '.gitignore', - '.gitkeep', - 'nohup.out' - ); - - // Look for User Excludes - $userExcludes = $this->getConfig()->deployment('excludes', array()); + $excludes = $this->getExcludes(); // If we are working with releases $deployToDirectory = $this->getConfig()->deployment('to'); @@ -95,7 +77,7 @@ class RsyncTask extends AbstractTask implements IsReleaseAware $command = 'rsync -avz ' . '--rsh="ssh ' . $this->getConfig()->getHostIdentityFileOption() . '-p' . $this->getConfig()->getHostPort() . '" ' - . $this->excludes(array_merge($excludes, $userExcludes)) . ' ' + . $this->excludes($excludes) . ' ' . $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 e1b6477..eae35bb 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php @@ -10,7 +10,7 @@ namespace Mage\Task\BuiltIn\Deployment\Strategy; -use Mage\Task\AbstractTask; +use Mage\Task\BuiltIn\Deployment\Strategy\BaseStrategyTaskAbstract; use Mage\Task\Releases\IsReleaseAware; /** @@ -18,7 +18,7 @@ use Mage\Task\Releases\IsReleaseAware; * * @author Andrés Montañez */ -class TarGzTask extends AbstractTask implements IsReleaseAware +class TarGzTask extends BaseStrategyTaskAbstract implements IsReleaseAware { /** * (non-PHPdoc) @@ -43,27 +43,9 @@ class TarGzTask extends AbstractTask implements IsReleaseAware */ public function run() { - $overrideRelease = $this->getParameter('overrideRelease', false); + $this->checkOverrideRelease(); - if ($overrideRelease == true) { - $releaseToOverride = false; - $resultFetch = $this->runCommandRemote('ls -ld current | cut -d"/" -f2', $releaseToOverride); - if ($resultFetch && is_numeric($releaseToOverride)) { - $this->getConfig()->setReleaseId($releaseToOverride); - } - } - - $excludes = array( - '.git', - '.svn', - '.mage', - '.gitignore', - '.gitkeep', - 'nohup.out' - ); - - // Look for User Excludes - $userExcludes = $this->getConfig()->deployment('excludes', array()); + $excludes = $this->getExcludes(); // If we are working with releases $deployToDirectory = $this->getConfig()->deployment('to'); @@ -79,7 +61,6 @@ class TarGzTask extends AbstractTask implements IsReleaseAware // Create Tar Gz $localTarGz = tempnam(sys_get_temp_dir(), 'mage'); $remoteTarGz = basename($localTarGz); - $excludes = array_merge($excludes, $userExcludes); $excludeCmd = ''; foreach ($excludes as $excludeFile) { $excludeCmd .= ' --exclude=' . $excludeFile; diff --git a/docs/example-config/.mage/config/environment/staging.yml b/docs/example-config/.mage/config/environment/staging.yml index 2880d9e..9facee7 100644 --- a/docs/example-config/.mage/config/environment/staging.yml +++ b/docs/example-config/.mage/config/environment/staging.yml @@ -2,7 +2,7 @@ deployment: user: root from: ./ - to: /var/www/ + to: /var/vvv scm: branch: master releases: