102 lines
3.0 KiB
PHP
102 lines
3.0 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 : master, develop, 'tags' (par defaut : master)
|
||
|
deploy : Extraction pour déploiement sans compression
|
||
|
<?php
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
// --- Variables
|
||
|
$reposPath = "ssh://git@192.168.78.249:10022/SCORES";
|
||
|
$exportPath = '/home/vhosts/deploy/export';
|
||
|
|
||
|
define('COMPOSER_HOME', '/home/vhosts/deploy/composer');
|
||
|
define('COMPRESS', 'xz');
|
||
|
|
||
|
// --- Execution
|
||
|
$projet = $options['projet'];
|
||
|
( isset($options['tree']) && !empty($options['tree']) ) ? $version = $options['tree'] : $version = 'master' ;
|
||
|
|
||
|
// --- Export Git
|
||
|
echo date('Y-m-d H:i:s')." - Export Git\n";
|
||
|
if (array_key_exists('deploy', $options)) {
|
||
|
$archiveProjet = $projet;
|
||
|
} else {
|
||
|
$exportPath.= "/archives";
|
||
|
$archiveProjet = $projet.'-'.date('YmdHis');
|
||
|
}
|
||
|
if (!file_exists($exportPath)){
|
||
|
mkdir($exportPath, 0755, true);
|
||
|
}
|
||
|
if (file_exists($exportPath.'/'.$archiveProjet)) {
|
||
|
passthru('rm -rf '.$exportPath.'/'.$archiveProjet);
|
||
|
}
|
||
|
if (file_exists($exportPath.'/'.$projet.'.tar')) {
|
||
|
passthru('rm -rf '.$exportPath.'/'.$projet.'.tar');
|
||
|
}
|
||
|
passthru('git archive --remote='.$reposPath.'/'.$projet.'.git --prefix='.$archiveProjet.'/ -o '.
|
||
|
$exportPath.'/'.$projet.'.tar '.$version);
|
||
|
passthru('tar -xf '.$exportPath.'/'.$projet.'.tar --directory='.$exportPath);
|
||
|
if (!file_exists($exportPath.'/'.$archiveProjet)) {
|
||
|
echo "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, $result);
|
||
|
// Error result
|
||
|
if ($result != 0) {
|
||
|
echo date('Y-m-d H:i:s')." - Erreur composer\n";
|
||
|
exit(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
passthru('rm -rf '.$exportPath.'/'.$projet.'.tar');
|
||
|
// --- Deploiement, pas de compression
|
||
|
if (array_key_exists('deploy', $options)) {
|
||
|
passthru('rm -rf '.$exportPath.'/'.$archiveProjet);
|
||
|
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;
|
||
|
passthru($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";
|
||
|
passthru('rm -rf '.$exportPath.'/'.$archiveProjet);
|
||
|
echo date('Y-m-d H:i:s')." - Fichier : ".$exportPath.'/'.$archiveProjet.'.tar.'.$ext."\n";
|