示例#1
0
 /**
  * Invokes a deployment.
  *
  * @param Project $project     The project
  * @param string  $environment The environment
  * @param bool    $dryRun      IF deployment is a dry run
  *
  * @return DeploymentPayload
  */
 public function deploy(Project $project, $environment, $dryRun)
 {
     \Assert\that($environment)->string()->notEmpty();
     Assertion::boolean($dryRun);
     $this->logger->debug(sprintf("Deploying '%s' to '%s'", $project->getName(), $environment));
     $environment = $project->getEnvironment($environment);
     $runner = $this->mappingConverter->convert($environment->getMapping());
     $projectDirectory = $this->projectDirectoryHelper->create($project);
     $this->interpolator->add('PROJECT', $environment->getName());
     $this->interpolator->add('ENVIRONMENT', $environment->getName());
     $this->interpolator->add('PROJECT_DIRECTORY', $projectDirectory);
     $payload = new DeploymentPayload();
     $payload->setProject($project);
     $payload->setEnvironment($environment);
     $payload->setProjectDirectory($projectDirectory);
     $payload->setDryRun($dryRun);
     $payload = $runner->run($payload);
     $this->projectDirectoryHelper->cleanup($project);
     return $payload;
 }
示例#2
0
 /**
  * Removes old project revision directories.
  *
  * @param Project $project Project instance
  * @param int     $copies  Amount of copies to keep
  *
  * @return int Amount of deleted directories
  */
 public function cleanup(Project $project, $copies = null)
 {
     Assertion::nullOrInteger($copies);
     Assertion::nullOrMin($copies, 1);
     if (is_null($copies)) {
         $copies = $this->copies;
     }
     $projectDirectory = sprintf('%s/%s', $this->baseDirectory, $project->getName());
     $finder = new Finder();
     $finder->directories()->in($projectDirectory)->sort($this->getSortByDateAscClosure());
     $directories = iterator_to_array($finder);
     // calculate amount of directories to delete
     $length = count($directories) - $copies;
     if ($length < 0) {
         $length = 0;
     }
     // extract directories to delete
     $directories = array_slice($directories, 0, $length);
     $fs = new Filesystem();
     $fs->remove($directories);
     $removedDirectoriesCount = count($directories);
     $this->logger->debug(sprintf("Removing %s old copies in working directory.", $removedDirectoriesCount));
     return $removedDirectoriesCount;
 }