New option, max releases.

This commit is contained in:
Andrés Montañez 2012-03-30 23:51:17 -03:00
parent 6e3e8e0768
commit aaa65800d0
3 changed files with 38 additions and 7 deletions

View file

@ -27,8 +27,35 @@ class Mage_Task_BuiltIn_Deployment_Releases
. ' && '
. 'chown -h ' . $userGroup . ' ' . $symlink
. ' && '
. 'chown -R ' . $userGroup . ' ' . $currentCopy;
. 'chown -R ' . $userGroup . ' ' . $currentCopy;
$result = $this->_runRemoteCommand($command);
// Count Releases
$maxReleases = $this->_config->release('max', false);
if (($maxReleases !== false) && ($maxReleases > 0)) {
$releasesList = '';
$countReleasesFetch = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $releasesList);
$releasesList = trim($releasesList);
if ($releasesList != '') {
$releasesList = explode(PHP_EOL, $releasesList);
if (count($releasesList) > $maxReleases) {
$releasesToDelete = array_diff($releasesList, array($this->_config->getReleaseId()));
sort($releasesToDelete);
$releasesToDeleteCount = count($releasesToDelete) - $maxReleases;
$releasesToDelete = array_slice($releasesToDelete, 0, $releasesToDeleteCount + 1);
foreach ($releasesToDelete as $releaseIdToDelete) {
$directoryToDelete = $releasesDirectory . '/' . $releaseIdToDelete;
if ($directoryToDelete != '/') {
$command = 'rm -rf ' . $directoryToDelete;
$result = $result && $this->_runRemoteCommand($command);
}
}
}
}
}
return $result;
} else {

View file

@ -42,7 +42,7 @@ class Mage_Task_Deploy
if ($config->release('enabled', false) == true) {
$config->setReleaseId($this->_releaseId);
array_push($tasksToRun, 'deployment/releases');
array_push($tasksToRun, 'deployment/releases');
}
if (count($tasksToRun) == 0) {
@ -80,18 +80,21 @@ class Mage_Task_Deploy
// Run Post-Deployment Tasks
$this->_runNonDeploymentTasks('post-deploy', $config, 'Post-Deployment');
// Time Information General
$timeText = $this->_transcurredTime(time() - $this->_startTime);
Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.');
// Time Information Hosts
if ($this->_hostsCount > 0) {
$timeTextHost = $this->_transcurredTime($this->_endTimeHosts - $this->_startTimeHosts);
Mage_Console::output('Average time for deployment: <dark_gray>' . $timeTextHost . '</dark_gray>.');
$timeTextPerHost = $this->_transcurredTime(round(($this->_endTimeHosts - $this->_startTimeHosts) / $this->_hostsCount));
Mage_Console::output('Average time per host: <dark_gray>' . $timeTextPerHost . '</dark_gray>.');
}
// Time Information General
$timeText = $this->_transcurredTime(time() - $this->_startTime);
Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.', 1, 2);
}
private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
{
$tasksToRun = $config->getTasks($stage);

View file

@ -12,6 +12,7 @@ deployment:
- application/data/cache/twig/*
releases:
enabled: true
max: 5
symlink: current
directory: releases
hosts: