Example #1
0
 /**
  * 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);
     }
 }