/** * 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; }
/** * 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; }