mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	New feature. Copy application from remote source; e.g.: GIT repo.
This commit is contained in:
		
							parent
							
								
									38711cbac2
								
							
						
					
					
						commit
						0c2ee3c45f
					
				@ -135,6 +135,12 @@ class Mage_Config
 | 
				
			|||||||
        return $taskConfig;
 | 
					        return $taskConfig;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setFrom($from)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $options['deployment']['from'] = $from;
 | 
				
			||||||
 | 
					        return $this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public function deployment($option, $default = false)
 | 
					    public function deployment($option, $default = false)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $options = $this->getEnvironment();
 | 
					        $options = $this->getEnvironment();
 | 
				
			||||||
 | 
				
			|||||||
@ -85,8 +85,10 @@ class Mage_Console
 | 
				
			|||||||
        self::log('---- Executing: $ ' . $command);
 | 
					        self::log('---- Executing: $ ' . $command);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        ob_start();
 | 
					        ob_start();
 | 
				
			||||||
        system($command . ' 2>&1', $return);
 | 
					        $return = 1;
 | 
				
			||||||
        $log = ob_get_clean();
 | 
					        $log = array();
 | 
				
			||||||
 | 
					        exec($command . ' 2>&1', $log, $return);
 | 
				
			||||||
 | 
					        $log = implode(PHP_EOL, $log);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (!$return) {
 | 
					        if (!$return) {
 | 
				
			||||||
            $output = trim($log);            
 | 
					            $output = trim($log);            
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_BuiltIn_Deployment_Releases
 | 
					class Mage_Task_BuiltIn_Deployment_Releases
 | 
				
			||||||
    extends Mage_Task_TaskAbstract
 | 
					    extends Mage_Task_TaskAbstract
 | 
				
			||||||
 | 
					    implements Mage_Task_Releases_BuiltIn
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public function getName()
 | 
					    public function getName()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_BuiltIn_Deployment_Rsync
 | 
					class Mage_Task_BuiltIn_Deployment_Rsync
 | 
				
			||||||
    extends Mage_Task_TaskAbstract
 | 
					    extends Mage_Task_TaskAbstract
 | 
				
			||||||
 | 
					    implements Mage_Task_Releases_BuiltIn
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public function getName()
 | 
					    public function getName()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										49
									
								
								Mage/Task/BuiltIn/Scm/Clone.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Mage/Task/BuiltIn/Scm/Clone.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Task_BuiltIn_Scm_Clone
 | 
				
			||||||
 | 
					    extends Mage_Task_TaskAbstract
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private $_name = 'SCM Clone [built-in]';
 | 
				
			||||||
 | 
					    private $_source = null;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function getName()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_name;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function init()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_source = $this->_config->deployment('source');
 | 
				
			||||||
 | 
					        switch ($this->_source['type']) {
 | 
				
			||||||
 | 
					            case 'git':
 | 
				
			||||||
 | 
					                $this->_name = 'SCM Clone (GIT) [built-in]';
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case 'svn':
 | 
				
			||||||
 | 
					                $this->_name = 'SCM Clone (Subversion) [built-in]';
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function run()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_runLocalCommand('mkdir -p ' . $this->_source['temporal']);
 | 
				
			||||||
 | 
					        switch ($this->_source['type']) {
 | 
				
			||||||
 | 
					            case 'git':
 | 
				
			||||||
 | 
					                $command = 'cd ' . $this->_source['temporal']
 | 
				
			||||||
 | 
					                         . ' && '
 | 
				
			||||||
 | 
					                         . 'git clone ' . $this->_source['repository'] . ' . '
 | 
				
			||||||
 | 
					                         . ' && '
 | 
				
			||||||
 | 
					                         . 'git checkout ' . $this->_source['from'];
 | 
				
			||||||
 | 
					                $this->_config->setFrom($this->_source['temporal']);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case 'svn':
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $result = $this->_runLocalCommand($command);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return $result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								Mage/Task/BuiltIn/Scm/RemoveClone.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Mage/Task/BuiltIn/Scm/RemoveClone.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Task_BuiltIn_Scm_RemoveClone
 | 
				
			||||||
 | 
					    extends Mage_Task_TaskAbstract
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private $_name = 'SCM Remove Clone [built-in]';
 | 
				
			||||||
 | 
					    private $_source = null;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function getName()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_name;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function init() 
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_source = $this->_config->deployment('source');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function run()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_runLocalCommand('rm -rf ' . $this->_source['temporal']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -72,12 +72,24 @@ class Mage_Task_Deploy
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Run Post-Deployment Tasks
 | 
					        // Run Post-Deployment Tasks
 | 
				
			||||||
        $this->_runNonDeploymentTasks('post-deploy', $config, 'Post-Deployment');
 | 
					        $this->_runNonDeploymentTasks('post-deploy', $config, 'Post-Deployment');
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
 | 
					    private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $tasksToRun = $config->getTasks($stage);
 | 
					        $tasksToRun = $config->getTasks($stage);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        // Look for Remote Source
 | 
				
			||||||
 | 
					        if ($this->_config->deployment('from', false) == false) {
 | 
				
			||||||
 | 
					            if (is_array($this->_config->deployment('source', null))) {
 | 
				
			||||||
 | 
					                if ($stage == 'pre-deploy') {
 | 
				
			||||||
 | 
					                    array_unshift($tasksToRun, 'scm/clone');                    
 | 
				
			||||||
 | 
					                } elseif ($stage == 'post-deploy') {
 | 
				
			||||||
 | 
					                    array_unshift($tasksToRun, 'scm/remove-clone');
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (count($tasksToRun) == 0) {
 | 
					        if (count($tasksToRun) == 0) {
 | 
				
			||||||
            Mage_Console::output('<dark_gray>No </dark_gray><light_cyan>' . $title . '</light_cyan> <dark_gray>tasks defined.</dark_gray>', 1, 3);
 | 
					            Mage_Console::output('<dark_gray>No </dark_gray><light_cyan>' . $title . '</light_cyan> <dark_gray>tasks defined.</dark_gray>', 1, 3);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,8 @@ class Mage_Task_Factory
 | 
				
			|||||||
    public static function get($taskName, Mage_Config $taskConfig, $inRollback = false)
 | 
					    public static function get($taskName, Mage_Config $taskConfig, $inRollback = false)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $instance = null;
 | 
					        $instance = null;
 | 
				
			||||||
 | 
					        $taskName = ucwords(str_replace('-', ' ', $taskName));
 | 
				
			||||||
 | 
					        $taskName = str_replace(' ', '', $taskName);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
        if (strpos($taskName, '/') === false) {
 | 
					        if (strpos($taskName, '/') === false) {
 | 
				
			||||||
            Mage_Autoload::loadUserTask($taskName);
 | 
					            Mage_Autoload::loadUserTask($taskName);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,12 @@
 | 
				
			|||||||
#production
 | 
					#production
 | 
				
			||||||
deployment:
 | 
					deployment:
 | 
				
			||||||
  user: root
 | 
					  user: root
 | 
				
			||||||
  from: ./
 | 
					#  from: ./
 | 
				
			||||||
 | 
					  source:
 | 
				
			||||||
 | 
					    type: git
 | 
				
			||||||
 | 
					    repository: git://github.com/andres-montanez/Zend-Framework-Twig-example-app.git
 | 
				
			||||||
 | 
					    from: production
 | 
				
			||||||
 | 
					    temporal: /tmp/myAppClone
 | 
				
			||||||
  to: /var/www/vhosts/example.com/www
 | 
					  to: /var/www/vhosts/example.com/www
 | 
				
			||||||
  excludes:
 | 
					  excludes:
 | 
				
			||||||
    - application/data/cache/twig/*
 | 
					    - application/data/cache/twig/*
 | 
				
			||||||
@ -12,8 +17,6 @@ releases:
 | 
				
			|||||||
hosts:
 | 
					hosts:
 | 
				
			||||||
  - s01.example.com
 | 
					  - s01.example.com
 | 
				
			||||||
  - s02.example.com
 | 
					  - s02.example.com
 | 
				
			||||||
  - s03.example.com
 | 
					 | 
				
			||||||
  - s05.example.com
 | 
					 | 
				
			||||||
tasks:
 | 
					tasks:
 | 
				
			||||||
  pre-deploy:
 | 
					  pre-deploy:
 | 
				
			||||||
    - scm/update
 | 
					    - scm/update
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user