mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	Delegate Releases Deletion to Rsync.
This commit is contained in:
		
							parent
							
								
									d33b0b4858
								
							
						
					
					
						commit
						b6a0bad25b
					
				@ -34,32 +34,6 @@ class Mage_Task_BuiltIn_Deployment_Release
 | 
				
			|||||||
                     . 'chown -R ' . $userGroup . ' ' . $currentCopy;
 | 
					                     . 'chown -R ' . $userGroup . ' ' . $currentCopy;
 | 
				
			||||||
            $result = $this->_runRemoteCommand($command);
 | 
					            $result = $this->_runRemoteCommand($command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Count Releases
 | 
					 | 
				
			||||||
            $maxReleases = $this->getConfig()->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->getConfig()->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;
 | 
					            return $result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
				
			|||||||
@ -56,6 +56,41 @@ class Mage_Task_BuiltIn_Deployment_Rsync
 | 
				
			|||||||
                 . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory;
 | 
					                 . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $result = $this->_runLocalCommand($command);
 | 
					        $result = $this->_runLocalCommand($command);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Count Releases
 | 
				
			||||||
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
 | 
					            $releasesDirectory = $this->getConfig()->release('directory', 'releases');
 | 
				
			||||||
 | 
					            $symlink = $this->getConfig()->release('symlink', 'current');
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (substr($symlink, 0, 1) == '/') {
 | 
				
			||||||
 | 
					                $releasesDirectory = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $releasesDirectory;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            $maxReleases = $this->getConfig()->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->getConfig()->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;
 | 
					        return $result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user