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