Revision: 62217
Updated Code
at February 8, 2013 02:25 by marcniko
Updated Code
<?php /** * Script per copiar els fitxers canviats en una revisió al servidor remot via sftp, using phpseclib (v. 0.3.1): http://sourceforge.net/projects/phpseclib/. */ define('USERNAME', 'my_username'); define('PWD', 'my_password'); define('REMOTE_SERVER', 'www.myproject.com'); define('WORKING_BASE', '/path/to/workspace/project/'); define('REMOTE_BASE', '/project/'); if ($argc == 1) { echo "\nFalta parametre núm. del changeset (obligatori)\n"; echo "> php deploy.php c032de81340 [--force] [--debug]\n\n"; exit; } // Parametres: // changeset $changeSet = (string) $argv[1]; // --force $force = false; // --debug (opcional) $debug = false; for ($i=2; $i < $argc; $i++) { if ($argv[$i] == '--force') { $force = true; } if ($argv[$i] == '--debug') { $debug = true; } } define('FORCE', $force); define('DEBUG', $debug); $output = array(); echo "\n[$changeSet]\n"; exec("git show --name-only --pretty=oneline {$changeSet}", $output); if (count($output) == 0) { echo "\nError en git"; die; } $description = array_shift($output); $descriptionArray = explode(' ', $description); $changesetFull = array_shift($descriptionArray); $description = implode(' ', $descriptionArray); echo "\nPublicando changeset [$changesetFull]\n$description\n\n"; include('Net/SFTP.php'); if (DEBUG) { define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); } $sftp = new Net_SFTP(REMOTE_SERVER); if (!$sftp->login(USERNAME, PWD)) { exit('Login Failed'); } foreach ($output as $fileName) { deployFile($fileName, $sftp); } echo "\n"; // ---------------------------------------------------------------------------------------- /** * Esta función se encarga de copiar el archivo local * al servidor remoto. * */ function deployFile($fileNamePath, $sftp) { $pathToFileNameArray = explode('/', $fileNamePath); $fileName = array_pop($pathToFileNameArray); $pathToFileName = REMOTE_BASE. implode('/', $pathToFileNameArray); $messageIgnored = ''; if ($fileName != 'databases.yml') { $local = WORKING_BASE . $fileNamePath; $remote = REMOTE_BASE . $fileNamePath; // copies filename.local to filename.remote on the SFTP server if (FORCE) { $ok = $sftp->put($remote, $local, NET_SFTP_LOCAL_FILE); echo (($ok)? "[OK] " : "\nERROR!\n"); if (DEBUG) { echo $sftp->getSFTPLog(); } } // system($command, $retval); // echo ' ['.$retval."]\n"; } else { if (FORCE) { $messageIgnored = "'$fileName' NO publicat per precaució!\n\n"; } else { $messageIgnored = "'$fileName' NO es publicarà  per precaució.\n\n"; } } if (FORCE) { echo "$fileNamePath -- $fileName => $pathToFileName"; } else { echo "$fileNamePath"; } echo "\n"; echo $messageIgnored; }
Revision: 62216
Updated Code
at February 8, 2013 02:23 by marcniko
Updated Code
<?php /** * Script per copiar els fitxers canviats en una revisió al servidor remot via sftp, using phpseclib (v. 0.3.1): http://sourceforge.net/projects/phpseclib/. */ define('USERNAME', 'my_username'); define('PWD', 'my_password'); define('REMOTE_SERVER', 'www.myproject.com'); define('WORKING_BASE', '/path/to/workspace/project/'); define('REMOTE_BASE', '/project/'); if ($argc == 1) { echo "\nFalta parametre núm. del changeset (obligatori)\n"; echo "> php deploy.php c032de81340 [--force] [--debug]\n\n"; exit; } // Parametres: // changeset $changeSet = (string) $argv[1]; // --force $force = false; // --debug (opcional) $debug = false; for ($i=2; $i < $argc; $i++) { if ($argv[$i] == '--force') { $force = true; } if ($argv[$i] == '--debug') { $debug = true; } } define('FORCE', $force); define('DEBUG', $debug); $output = array(); echo "\n[$changeSet]\n"; exec("git show --name-only --pretty=oneline {$changeSet}", $output); if (count($output) == 0) { echo "\nError en git"; die; } $description = array_shift($output); $descriptionArray = explode(' ', $description); $changesetFull = array_shift($descriptionArray); $description = implode(' ', $descriptionArray); echo "\nPublicando changeset [$changesetFull]\n$description\n\n"; include('Net/SFTP.php'); if (DEBUG) { define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); } $sftp = new Net_SFTP(REMOTE_SERVER); if (!$sftp->login(USERNAME, PWD)) { exit('Login Failed'); } foreach ($output as $fileName) { deployFile($fileName, $sftp); } echo "\n"; // ---------------------------------------------------------------------------------------- /** * Esta función se encarga de copiar el archivo local * al servidor remoto. * */ function deployFile($fileNamePath, $sftp) { $pathToFileNameArray = explode('/', $fileNamePath); $fileName = array_pop($pathToFileNameArray); $pathToFileName = REMOTE_BASE. implode('/', $pathToFileNameArray); $messageIgnored = ''; if ($fileName != 'databases.yml') { $local = WORKING_BASE . $fileNamePath; $remote = REMOTE_BASE . $fileNamePath; // copies filename.local to filename.remote on the SFTP server if (FORCE) { $ok = $sftp->put($remote, $local, NET_SFTP_LOCAL_FILE); echo (($ok)? "[OK] " : "\nERROR!\n"); if (DEBUG) { echo $sftp->getSFTPLog(); } } // system($command, $retval); // echo ' ['.$retval."]\n"; } else { if (FORCE) { $messageIgnored = "'$fileName' NO publicat per precaució!\n\n"; } else { $messageIgnored = "'$fileName' NO es publicaràper precaució.\n\n"; } } if (FORCE) { echo "$fileNamePath -- $fileName => $pathToFileName"; } else { echo "$fileNamePath"; } echo "\n"; echo $messageIgnored; }
Revision: 62215
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 8, 2013 02:21 by marcniko
Initial Code
<?php /** * Script per copiar els fitxers canviats en una revisió al servidor remot via sftp, using phpseclib (v. 0.3.1): http://sourceforge.net/projects/phpseclib/. */ define('USERNAME', 'my_username'); define('PWD', 'my_password'); define('REMOTE_SERVER', 'www.myproject.com'); define('WORKING_BASE', '/path/to/workspace/project/'); define('REMOTE_BASE', '/project/'); if ($argc == 1) { echo "\nFalta parametre núm. del changeset (obligatori)\n"; echo "> php deploy.php c032de81340 [--force] [--debug]\n\n"; exit; } // Parametres: // changeset $changeSet = (string) $argv[1]; // --force $force = false; // --debug (opcional) $debug = false; for ($i=2; $i < $argc; $i++) { if ($argv[$i] == '--force') { $force = true; } if ($argv[$i] == '--debug') { $debug = true; } } define('FORCE', $force); define('DEBUG', $debug); $output = array(); echo "\n[$changeSet]\n"; exec("git show --name-only --pretty=oneline {$changeSet}", $output); if (count($output) == 0) { echo "\nError en git"; die; } $description = array_shift($output); $descriptionArray = explode(' ', $description); $changesetFull = array_shift($descriptionArray); $description = implode(' ', $descriptionArray); echo "\nPublicando changeset [$changesetFull]\n$description\n\n"; include('Net/SFTP.php'); if (DEBUG) { define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); } $sftp = new Net_SFTP(REMOTE_SERVER); if (!$sftp->login(USERNAME, PWD)) { exit('Login Failed'); } foreach ($output as $fileName) { deployFile($fileName, $sftp); } echo "\n"; // ---------------------------------------------------------------------------------------- /** * Esta función se encarga de copiar el archivo local * al servidor remoto. * */ function deployFile($fileNamePath, $sftp) { $pathToFileNameArray = explode('/', $fileNamePath); $fileName = array_pop($pathToFileNameArray); $pathToFileName = REMOTE_BASE. implode('/', $pathToFileNameArray); $messageIgnored = ''; if ($fileName != 'databases.yml') { $local = WORKING_BASE . $fileNamePath; $remote = REMOTE_BASE . $fileNamePath; // copies filename.local to filename.remote on the SFTP server if (FORCE) { $ok = $sftp->put($remote, $local, NET_SFTP_LOCAL_FILE); echo (($ok)? "[OK] " : "\nERROR!\n"); if (DEBUG) { echo $sftp->getSFTPLog(); } } // system($command, $retval); // echo ' ['.$retval."]\n"; } else { if (FORCE) { $messageIgnored = "'$fileName' NO publicat per precaució!\n\n"; } else { $messageIgnored = "'$fileName' NO es publicarà per precaució.\n\n"; } } if (FORCE) { echo "$fileNamePath -- $fileName => $pathToFileName"; } else { echo "$fileNamePath"; } echo "\n"; echo $messageIgnored; }
Initial URL
Initial Description
Script per copiar els fitxers canviats en una revisió git al servidor remot via sftp, using PHP Secure Communications Library (phpseclib): http://sourceforge.net/projects/phpseclib/. Útil per usar amb 1and1.
Initial Title
Deploy GIT changeset to 1and1 via sftp (phpseclib)
Initial Tags
git
Initial Language
PHP