mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	Adds general.yml parameter "ssh_needs_tty" which appends "-t" to the ssh
command
Adds deployment parameter "rsync: { copy: yes }" which copies the prior
release then rsync's (to increase speed)
			
			
This commit is contained in:
		
							parent
							
								
									5cc9c02c3e
								
							
						
					
					
						commit
						e7d8d5ce68
					
				@ -73,13 +73,15 @@ class InitCommand extends AbstractCommand
 | 
			
		||||
				'%notificationEnabled%',
 | 
			
		||||
				'%loggingEnabled%',
 | 
			
		||||
				'%maxlogs%',
 | 
			
		||||
				'%ssh_needs_tty%',
 | 
			
		||||
			),
 | 
			
		||||
			array(
 | 
			
		||||
				$projectName,
 | 
			
		||||
				$notificationEmail,
 | 
			
		||||
				$notificationEnabled,
 | 
			
		||||
				'true',
 | 
			
		||||
				30
 | 
			
		||||
				30,
 | 
			
		||||
				'false'
 | 
			
		||||
			),
 | 
			
		||||
			$this->getGeneralConfigTemplate()
 | 
			
		||||
    	);
 | 
			
		||||
@ -98,8 +100,9 @@ class InitCommand extends AbstractCommand
 | 
			
		||||
                  . 'email: %notificationEmail%' . PHP_EOL
 | 
			
		||||
                  . 'notifications: %notificationEnabled%' . PHP_EOL
 | 
			
		||||
                  . 'logging: %loggingEnabled%' . PHP_EOL
 | 
			
		||||
                  . 'maxlogs: %maxlogs%' . PHP_EOL;
 | 
			
		||||
                  . 'maxlogs: %maxlogs%' . PHP_EOL
 | 
			
		||||
                  . 'ssh_needs_tty: %ssh_needs_tty%' . PHP_EOL;
 | 
			
		||||
 | 
			
		||||
    	return $template;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -179,17 +179,20 @@ abstract class AbstractTask
 | 
			
		||||
                $releasesDirectory = '';
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                $releasesDirectory = '/'
 | 
			
		||||
                                   . $this->getConfig()->release('directory', 'releases')
 | 
			
		||||
                                   . '/'
 | 
			
		||||
                $releasesDirectory = '/'
 | 
			
		||||
                                   . $this->getConfig()->release('directory', 'releases')
 | 
			
		||||
                                   . '/'
 | 
			
		||||
                                   . $this->getConfig()->getReleaseId();
 | 
			
		||||
            }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            $releasesDirectory = '';
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // if general.yml includes "ssy_needs_tty: true", then add "-t" to the ssh command
 | 
			
		||||
        $needs_tty = ($this->getConfig()->general('ssh_needs_tty',false) ? "-t" : "");
 | 
			
		||||
 | 
			
		||||
        $localCommand = 'ssh -p ' . $this->getConfig()->getHostPort() . ' '
 | 
			
		||||
        $localCommand = 'ssh ' . $needs_tty . ' -p ' . $this->getConfig()->getHostPort() . ' '
 | 
			
		||||
                      . '-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no '
 | 
			
		||||
                      . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ' '
 | 
			
		||||
                      . '"cd ' . rtrim($this->getConfig()->deployment('to'), '/') . $releasesDirectory . ' && '
 | 
			
		||||
@ -213,4 +216,4 @@ abstract class AbstractTask
 | 
			
		||||
        	return $this->runCommandLocal($command, $output);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,12 @@ class RsyncTask extends AbstractTask implements IsReleaseAware
 | 
			
		||||
            if ($this->getConfig()->getParameter('overrideRelease', false) == true) {
 | 
			
		||||
                return 'Deploy via Rsync (with Releases override) [built-in]';
 | 
			
		||||
            } else {
 | 
			
		||||
                return 'Deploy via Rsync (with Releases) [built-in]';
 | 
			
		||||
                $rsync_copy = $this->getConfig()->deployment("rsync");
 | 
			
		||||
                if ( $rsync_copy && is_array($rsync_copy) && $rsync_copy['copy'] ) {
 | 
			
		||||
                    return 'Deploy via Rsync (with Releases) [built-in, incremental]';
 | 
			
		||||
                } else {
 | 
			
		||||
                    return 'Deploy via Rsync (with Releases) [built-in]';
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
                return 'Deploy via Rsync [built-in]';
 | 
			
		||||
@ -58,8 +63,8 @@ class RsyncTask extends AbstractTask implements IsReleaseAware
 | 
			
		||||
            '.svn',
 | 
			
		||||
            '.mage',
 | 
			
		||||
            '.gitignore',
 | 
			
		||||
    		'.gitkeep',
 | 
			
		||||
    		'nohup.out'
 | 
			
		||||
            '.gitkeep',
 | 
			
		||||
            'nohup.out'
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        // Look for User Excludes
 | 
			
		||||
@ -73,7 +78,18 @@ class RsyncTask extends AbstractTask implements IsReleaseAware
 | 
			
		||||
            $deployToDirectory = rtrim($this->getConfig()->deployment('to'), '/')
 | 
			
		||||
                               . '/' . $releasesDirectory
 | 
			
		||||
                               . '/' . $this->getConfig()->getReleaseId();
 | 
			
		||||
            $this->runCommandRemote('mkdir -p ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
 | 
			
		||||
            $resultFetch = $this->runCommandRemote('ls -ld current | cut -d"/" -f2', $releaseToOverride);
 | 
			
		||||
            
 | 
			
		||||
            if ( $resultFetch ) {
 | 
			
		||||
                // If deployment configuration is rsync, include a flag to simply sync the deltas between the prior release
 | 
			
		||||
                // rsync: { copy: yes }
 | 
			
		||||
                $rsync_copy = $this->getConfig()->deployment("rsync");
 | 
			
		||||
                if ( $rsync_copy && is_array($rsync_copy) && $rsync_copy['copy'] ) {
 | 
			
		||||
                    $this->runCommandRemote('cp -R ' . $releasesDirectory . '/' . $releaseToOverride . ' ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
 | 
			
		||||
                } else {
 | 
			
		||||
                    $this->runCommandRemote('mkdir -p ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $command = 'rsync -avz '
 | 
			
		||||
@ -137,4 +153,4 @@ class RsyncTask extends AbstractTask implements IsReleaseAware
 | 
			
		||||
        $excludesRsync = trim($excludesRsync);
 | 
			
		||||
        return $excludesRsync;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user