122 lines
3.4 KiB
PHP
122 lines
3.4 KiB
PHP
|
#!/usr/bin/php
|
||
|
<?php
|
||
|
$shortopts = '';
|
||
|
$longopts = array(
|
||
|
'help',
|
||
|
'projet:',
|
||
|
'tree:',
|
||
|
'deploy',
|
||
|
);
|
||
|
|
||
|
// --- Paramètres
|
||
|
$options = getopt($shortopts, $longopts);
|
||
|
if (array_key_exists('help', $options) || $options === false || count($options) == 0) {
|
||
|
?>
|
||
|
Extraction d'un projet et création d'une archive
|
||
|
|
||
|
Utilisation : <?php echo $argv[0]; ?> {options}
|
||
|
projet : nom du projet
|
||
|
tree : trunk, branches/X, tags/X (par defaut : trunk)
|
||
|
deploy : Extraction pour déploiement sans compression
|
||
|
<?php
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
// --- Variables
|
||
|
$reposLocal = true;
|
||
|
$reposPath = "file:///mnt/data/subversion";
|
||
|
$reposUser = '';
|
||
|
$reposPass = '';
|
||
|
$exportPath = '/home/vhosts/deploy/export';
|
||
|
|
||
|
define('COMPOSER_HOME', '/home/vhosts/deploy/composer');
|
||
|
define('COMPRESS', 'xz');
|
||
|
|
||
|
// --- Execution
|
||
|
$projet = $options['projet'];
|
||
|
$version = null;
|
||
|
if (array_key_exists('tree', $options)) {
|
||
|
$version = trim($options['tree'], '/');
|
||
|
}
|
||
|
if (empty($version)){
|
||
|
$working_copy = 'trunk';
|
||
|
} else {
|
||
|
$working_copy = $version;
|
||
|
}
|
||
|
|
||
|
// --- Export SVN
|
||
|
echo date('Y-m-d H:i:s')." - Export SVN\n";
|
||
|
if (array_key_exists('deploy', $options)) {
|
||
|
$archiveProjet = $projet;
|
||
|
} else {
|
||
|
$exportPath.= "/archives";
|
||
|
$pathProjet = explode('/', $working_copy);
|
||
|
switch($pathProjet[0]){
|
||
|
case 'trunk':
|
||
|
$archiveProjet = $projet.'-trunk';
|
||
|
break;
|
||
|
case 'branches':
|
||
|
$archiveProjet = $projet.'-'.$pathProjet[1].'-'.date('YmdHis');
|
||
|
break;
|
||
|
case 'tags':
|
||
|
$archiveProjet = $projet.'-'.$pathProjet[count($pathProjet)-1];
|
||
|
if ( count($pathProjet) > 2 ) {
|
||
|
if ( in_array($pathProjet[1], array('staging', 'release')) ) {
|
||
|
$archiveProjet.= '-'.$pathProjet[1];
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (!file_exists($exportPath)){
|
||
|
mkdir($exportPath, 0755, true);
|
||
|
}
|
||
|
if (file_exists($exportPath.'/'.$archiveProjet)) {
|
||
|
passthru('rm -rf '.$exportPath.'/'.$archiveProjet);
|
||
|
}
|
||
|
$reposPath.= '/'.$projet.'/'.$working_copy;
|
||
|
if ($reposLocal) {
|
||
|
passthru('svn export -q '.$reposPath.' '.$exportPath.'/'.$archiveProjet);
|
||
|
} else {
|
||
|
passthru('svn export --username '.$reposUser.' --password '.$reposPass.' --trust-server-cert -q '.
|
||
|
$reposPath.' '.$exportPath.'/'.$archiveProjet);
|
||
|
}
|
||
|
if (!file_exists($exportPath.'/'.$archiveProjet)){
|
||
|
echo date('Y-m-d H:i:s')." - Erreur\n";
|
||
|
exit(1);
|
||
|
}
|
||
|
|
||
|
// --- Composer
|
||
|
if (file_exists($exportPath.'/'.$archiveProjet.'/composer.lock')) {
|
||
|
putenv('COMPOSER_HOME='.COMPOSER_HOME);
|
||
|
passthru('composer install --no-dev --optimize-autoloader --no-interaction --working-dir '.$exportPath.'/'.$archiveProjet);
|
||
|
}
|
||
|
|
||
|
// --- Deploiement, pas de compression
|
||
|
if (array_key_exists('deploy', $options)) {
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
// --- Création de l'archive
|
||
|
echo date('Y-m-d H:i:s')." - Création de l'archive\n";
|
||
|
if (COMPRESS == 'gz'){
|
||
|
$options = 'cfz';
|
||
|
$ext = 'gz';
|
||
|
}elseif (COMPRESS == 'bz2'){
|
||
|
$options = 'cfj';
|
||
|
$ext = 'bz2';
|
||
|
} elseif (COMPRESS == 'xz') {
|
||
|
$options = 'cfJ';
|
||
|
$ext = 'xz';
|
||
|
}
|
||
|
$cmd = 'tar '.$options.' '. $exportPath.'/'.$archiveProjet.'.tar.'.$ext.' --directory='.$exportPath.' '.$archiveProjet;
|
||
|
exec($cmd);
|
||
|
if (!file_exists($exportPath.'/'.$archiveProjet.'.tar.'.$ext)){
|
||
|
echo date('Y-m-d H:i:s')." - Erreur\n";
|
||
|
exit(1);
|
||
|
}
|
||
|
|
||
|
// --- Suppression des fichiers
|
||
|
echo date('Y-m-d H:i:s')." - Suppression des fichiers\n";
|
||
|
exec('rm -rf '.$exportPath.'/'.$archiveProjet);
|
||
|
echo date('Y-m-d H:i:s')." - Fichier : ".$exportPath.'/'.$archiveProjet.'.tar.'.$ext."\n";
|