diff --git a/Mage/Task/BuiltIn/Releases/Rollback.php b/Mage/Task/BuiltIn/Releases/Rollback.php index 74e8ec6..08bb2d8 100644 --- a/Mage/Task/BuiltIn/Releases/Rollback.php +++ b/Mage/Task/BuiltIn/Releases/Rollback.php @@ -72,24 +72,28 @@ class Mage_Task_BuiltIn_Releases_Rollback } else { foreach ($tasksToRun as $taskName) { - $tasks++; - $task = Mage_Task_Factory::get($taskName, $this->_config); - $task->init(); - - Mage_Console::output('Running ' . $task->getName() . ' ... ', 2, false); - $result = $task->run(); - - if ($result == true) { - Mage_Console::output('OK', 0); - $completedTasks++; - } else { - Mage_Console::output('FAIL', 0); + $task = Mage_Task_Factory::get($taskName, $this->_config, true); + $task->init(); + Mage_Console::output('Running ' . $task->getName() . ' ... ', 2, false); + + if ($task instanceOf Mage_Task_Releases_RollbackAware) { + $tasks++; + $result = $task->run(); + + if ($result == true) { + Mage_Console::output('OK', 0); + $completedTasks++; + } else { + Mage_Console::output('FAIL', 0); + } + } else { + Mage_Console::output('SKIPPED', 0); } } } // Changing Release - Mage_Console::output('Releasing to ' . $releaseId . ' ... ', 2, false); + Mage_Console::output('Running Rollback Release [id=' . $releaseId . '] ... ', 2, false); $userGroup = ''; $resultFetch = $this->_runRemoteCommand('ls -ld ' . $rollbackTo . ' | awk \'{print \$3\":\"\$4}\'', $userGroup); diff --git a/Mage/Task/Factory.php b/Mage/Task/Factory.php index 34644f0..7139dec 100644 --- a/Mage/Task/Factory.php +++ b/Mage/Task/Factory.php @@ -5,21 +5,22 @@ class Mage_Task_Factory * * * @param string $taskName + * @param boolean $inRollback * @return Mage_Task_TaskAbstract */ - public static function get($taskName, Mage_Config $taskConfig) + public static function get($taskName, Mage_Config $taskConfig, $inRollback = false) { $instance = null; if (strpos($taskName, '/') === false) { Mage_Autoload::loadUserTask($taskName); $className = 'Task_' . ucfirst($taskName); - $instance = new $className($taskConfig); + $instance = new $className($taskConfig, $inRollback); } else { $taskName = str_replace(' ', '_', ucwords(str_replace('/', ' ', $taskName))); $className = 'Mage_Task_BuiltIn_' . $taskName; - $instance = new $className($taskConfig); + $instance = new $className($taskConfig, $inRollback); } assert($instance instanceOf Mage_Task_TaskAbstract); diff --git a/Mage/Task/Releases.php b/Mage/Task/Releases.php index 4275360..fb93518 100644 --- a/Mage/Task/Releases.php +++ b/Mage/Task/Releases.php @@ -57,10 +57,4 @@ class Mage_Task_Releases } } } - - private function _listReleases() - { - - } - } \ No newline at end of file diff --git a/Mage/Task/Releases/RollbackAware.php b/Mage/Task/Releases/RollbackAware.php new file mode 100644 index 0000000..dae4aa0 --- /dev/null +++ b/Mage/Task/Releases/RollbackAware.php @@ -0,0 +1,4 @@ +_config = $config; + $this->_inRollback = $inRollback; + } + + public function inRollback() + { + return $this->_inRollback; } public function init() diff --git a/docs/example-config/.mage/config/environment/production.yaml b/docs/example-config/.mage/config/environment/production.yaml index 5874fb1..795417e 100644 --- a/docs/example-config/.mage/config/environment/production.yaml +++ b/docs/example-config/.mage/config/environment/production.yaml @@ -20,4 +20,6 @@ tasks: - scm/update on-deploy: - privileges + - sampleTask + - sampleTaskRollbackAware #post-deploy: \ No newline at end of file diff --git a/docs/example-config/.mage/config/environment/staging.yaml b/docs/example-config/.mage/config/environment/staging.yaml index 97b604a..139669a 100644 --- a/docs/example-config/.mage/config/environment/staging.yaml +++ b/docs/example-config/.mage/config/environment/staging.yaml @@ -10,4 +10,6 @@ tasks: - scm/update on-deploy: - privileges + - sampleTask + - sampleTaskRollbackAware #post-deploy: \ No newline at end of file diff --git a/docs/example-config/.mage/tasks/SampleTask.php b/docs/example-config/.mage/tasks/SampleTask.php new file mode 100644 index 0000000..5664e52 --- /dev/null +++ b/docs/example-config/.mage/tasks/SampleTask.php @@ -0,0 +1,14 @@ +inRollback()) { + return 'A Sample Task aware of rollbacks [in rollback]'; + } else { + return 'A Sample Task aware of rollbacks [not in rollback]'; + } + } + + public function run() + { + return true; + } +} \ No newline at end of file