Deployer\Executor\SeriesExecutor::run PHP Method

run() public method

public run ( $tasks, $servers, $environments, $input, $output )
    public function run($tasks, $servers, $environments, $input, $output)
    {
        $output = new OutputWatcher($output);
        $informer = new Informer($output);
        $localhost = new Local();
        $localEnv = new Environment();
        foreach ($tasks as $task) {
            $success = true;
            $informer->startTask($task->getName());
            if ($task->isOnce()) {
                $task->run(new Context($localhost, $localEnv, $input, $output));
            } else {
                foreach ($servers as $serverName => $server) {
                    if ($task->isOnServer($serverName)) {
                        $env = isset($environments[$serverName]) ? $environments[$serverName] : ($environments[$serverName] = new Environment());
                        try {
                            $task->run(new Context($server, $env, $input, $output));
                        } catch (NonFatalException $exception) {
                            $success = false;
                            $informer->taskException($serverName, 'Deployer\\Exception\\NonFatalException', $exception->getMessage());
                        }
                        $informer->endOnServer($serverName);
                    }
                }
            }
            if ($success) {
                $informer->endTask();
            } else {
                $informer->taskError();
            }
        }
    }

Usage Example

Example #1
0
 /**
  * {@inheritdoc}
  */
 protected function execute(Input $input, Output $output)
 {
     $stage = $input->hasArgument('stage') ? $input->getArgument('stage') : null;
     $tasks = $this->deployer->getScriptManager()->getTasks($this->getName(), $stage);
     $servers = $this->deployer->getStageStrategy()->getServers($stage);
     $environments = iterator_to_array($this->deployer->environments);
     if (isset($this->executor)) {
         $executor = $this->executor;
     } else {
         if ($input->getOption('parallel')) {
             $executor = new ParallelExecutor($this->deployer->getConsole()->getUserDefinition());
         } else {
             $executor = new SeriesExecutor();
         }
     }
     try {
         $executor->run($tasks, $servers, $environments, $input, $output);
     } catch (\Exception $exception) {
         \Deployer\logger($exception->getMessage(), Logger::ERROR);
         // Check if we have tasks to execute on failure.
         if ($this->deployer['onFailure']->has($this->getName())) {
             $taskName = $this->deployer['onFailure']->get($this->getName());
             $tasks = $this->deployer->getScriptManager()->getTasks($taskName, $stage);
             $executor->run($tasks, $servers, $environments, $input, $output);
         }
         throw $exception;
     }
     if (Deployer::hasDefault('terminate_message')) {
         $output->writeln(Deployer::getDefault('terminate_message'));
     }
 }
All Usage Examples Of Deployer\Executor\SeriesExecutor::run
SeriesExecutor