diff --git a/Mage/Task/BuiltIn/Deployment/Releases.php b/Mage/Task/BuiltIn/Deployment/Releases.php
index 937244e..d37484d 100644
--- a/Mage/Task/BuiltIn/Deployment/Releases.php
+++ b/Mage/Task/BuiltIn/Deployment/Releases.php
@@ -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 {
diff --git a/Mage/Task/Deploy.php b/Mage/Task/Deploy.php
index c8e7f9b..b4a6e10 100644
--- a/Mage/Task/Deploy.php
+++ b/Mage/Task/Deploy.php
@@ -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: ' . $timeText . '.');
// Time Information Hosts
if ($this->_hostsCount > 0) {
+ $timeTextHost = $this->_transcurredTime($this->_endTimeHosts - $this->_startTimeHosts);
+ Mage_Console::output('Average time for deployment: ' . $timeTextHost . '.');
+
$timeTextPerHost = $this->_transcurredTime(round(($this->_endTimeHosts - $this->_startTimeHosts) / $this->_hostsCount));
Mage_Console::output('Average time per host: ' . $timeTextPerHost . '.');
}
+
+ // Time Information General
+ $timeText = $this->_transcurredTime(time() - $this->_startTime);
+ Mage_Console::output('Total time: ' . $timeText . '.', 1, 2);
}
-
+
private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
{
$tasksToRun = $config->getTasks($stage);
diff --git a/docs/example-config/.mage/config/environment/production.yml b/docs/example-config/.mage/config/environment/production.yml
index 94a263a..9132522 100644
--- a/docs/example-config/.mage/config/environment/production.yml
+++ b/docs/example-config/.mage/config/environment/production.yml
@@ -12,6 +12,7 @@ deployment:
- application/data/cache/twig/*
releases:
enabled: true
+ max: 5
symlink: current
directory: releases
hosts: