mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 09:00:18 +01:00 
			
		
		
		
	Add deployment status and execute post-deployment tasks if deploy failed (only execute branch reverse and clone removal).
This commit is contained in:
		
							parent
							
								
									46d00e2f08
								
							
						
					
					
						commit
						cebced4c9b
					
				@ -3,15 +3,26 @@ class Mage_Command_BuiltIn_Deploy
 | 
				
			|||||||
    extends Mage_Command_CommandAbstract
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
    implements Mage_Command_RequiresEnvironment
 | 
					    implements Mage_Command_RequiresEnvironment
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						const FAILED      = 'failed';
 | 
				
			||||||
 | 
						const SUCCEDED    = 'succeded';
 | 
				
			||||||
 | 
						const IN_PROGRESS = 'in_progress';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private $_startTime = null;
 | 
					    private $_startTime = null;
 | 
				
			||||||
    private $_startTimeHosts = null;
 | 
					    private $_startTimeHosts = null;
 | 
				
			||||||
    private $_endTimeHosts = null;
 | 
					    private $_endTimeHosts = null;
 | 
				
			||||||
    private $_hostsCount = 0;
 | 
					    private $_hostsCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static $_deployStatus = 'in_progress';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct()
 | 
					    public function __construct()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function getStatus()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    	return self::$_deployStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->getConfig()->setReleaseId(date('YmdHis'));
 | 
					        $this->getConfig()->setReleaseId(date('YmdHis'));
 | 
				
			||||||
@ -90,12 +101,14 @@ class Mage_Command_BuiltIn_Deploy
 | 
				
			|||||||
            $this->_endTimeHosts = time();
 | 
					            $this->_endTimeHosts = time();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ($failedTasks > 0) {
 | 
					            if ($failedTasks > 0) {
 | 
				
			||||||
 | 
					            	self::$_deployStatus = self::FAILED;
 | 
				
			||||||
                Mage_Console::output('A total of <dark_gray>' . $failedTasks . '</dark_gray> deployment tasks failed: <red>ABORTING</red>', 1, 2);
 | 
					                Mage_Console::output('A total of <dark_gray>' . $failedTasks . '</dark_gray> deployment tasks failed: <red>ABORTING</red>', 1, 2);
 | 
				
			||||||
                return;
 | 
					            } else {
 | 
				
			||||||
 | 
					            	self::$_deployStatus = self::SUCCEDED;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Releasing
 | 
					            // Releasing
 | 
				
			||||||
            if ($this->getConfig()->release('enabled', false) == true) {
 | 
					            if (self::$_deployStatus == self::SUCCEDED && $this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
                // Execute the Releases
 | 
					                // Execute the Releases
 | 
				
			||||||
                Mage_Console::output('Starting the <dark_gray>Releaseing</dark_gray>');
 | 
					                Mage_Console::output('Starting the <dark_gray>Releaseing</dark_gray>');
 | 
				
			||||||
                foreach ($hosts as $host) {
 | 
					                foreach ($hosts as $host) {
 | 
				
			||||||
@ -152,6 +165,9 @@ class Mage_Command_BuiltIn_Deploy
 | 
				
			|||||||
        // Time Information General
 | 
					        // Time Information General
 | 
				
			||||||
        $timeText = $this->_transcurredTime(time() - $this->_startTime);
 | 
					        $timeText = $this->_transcurredTime(time() - $this->_startTime);
 | 
				
			||||||
        Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.', 1, 2);
 | 
					        Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.', 1, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Send Notifications
 | 
				
			||||||
 | 
					        $this->_sendNotification();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -180,6 +196,11 @@ class Mage_Command_BuiltIn_Deploy
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // PostDeployment Hook
 | 
					        // PostDeployment Hook
 | 
				
			||||||
        if ($stage == 'post-deploy') {
 | 
					        if ($stage == 'post-deploy') {
 | 
				
			||||||
 | 
					        	// If Deploy failed, clear post deploy tasks
 | 
				
			||||||
 | 
					        	if (self::$_deployStatus == self::FAILED) {
 | 
				
			||||||
 | 
					        		$tasksToRun = array();
 | 
				
			||||||
 | 
					        	}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        	// Change Branch Back
 | 
					        	// Change Branch Back
 | 
				
			||||||
        	if ($this->getConfig()->deployment('scm', false)) {
 | 
					        	if ($this->getConfig()->deployment('scm', false)) {
 | 
				
			||||||
        		array_unshift($tasksToRun, 'scm/change-branch');
 | 
					        		array_unshift($tasksToRun, 'scm/change-branch');
 | 
				
			||||||
@ -289,4 +310,19 @@ class Mage_Command_BuiltIn_Deploy
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return implode(' ', $timeText);
 | 
					        return implode(' ', $timeText);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Send Email Notification if enabled
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function _sendNotification()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    	$projectName = $this->getConfig()->general('name', false);
 | 
				
			||||||
 | 
					    	$projectEmail = $this->getConfig()->general('email', false);
 | 
				
			||||||
 | 
					    	$notificationsEnabled = $this->getConfig()->general('notifications', false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    	// We need notifications enabled, and a project name and email to send the notification
 | 
				
			||||||
 | 
					        if (!$projectName || !$projectEmail || !$notificationsEnabled) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user