/** * Execute Pre and Post Deployment Tasks * * @param string $stage * @param Config $config * @param string $title */ protected function runNonDeploymentTasks($stage, Config $config, $title) { $tasksToRun = $config->getTasks($stage); self::$failedTasks = 0; // PreDeployment Hook if ($stage == AbstractTask::STAGE_PRE_DEPLOY) { // Look for Remote Source if (is_array($config->deployment('source', null))) { array_unshift($tasksToRun, 'scm/clone'); } // Change Branch if ($config->deployment('scm', false)) { array_unshift($tasksToRun, 'scm/change-branch'); } } // PostDeployment Hook if ($stage == AbstractTask::STAGE_POST_DEPLOY) { // If Deploy failed, clear post deploy tasks if (self::$deployStatus == self::FAILED) { $tasksToRun = array(); } // Change Branch Back if ($config->deployment('scm', false)) { array_unshift($tasksToRun, 'scm/change-branch'); $config->addParameter('_changeBranchRevert'); } // Remove Remote Source if (is_array($config->deployment('source', null))) { array_push($tasksToRun, 'scm/remove-clone'); } } if (count($tasksToRun) == 0) { Console::output('<dark_gray>No </dark_gray><light_cyan>' . $title . '</light_cyan> <dark_gray>tasks defined.</dark_gray>', 1, 3); } else { Console::output('Starting <dark_gray>' . $title . '</dark_gray> tasks:'); $tasks = 0; $completedTasks = 0; foreach ($tasksToRun as $taskData) { $tasks++; $task = Factory::get($taskData, $config, false, $stage); if ($this->runTask($task)) { $completedTasks++; } else { self::$failedTasks++; } } if ($completedTasks == $tasks) { $tasksColor = 'green'; } else { $tasksColor = 'red'; } Console::output('Finished <dark_gray>' . $title . '</dark_gray> tasks: <' . $tasksColor . '>' . $completedTasks . '/' . $tasks . '</' . $tasksColor . '> tasks done.', 1, 3); } }