deploy/git/export.php

110 lines
3.3 KiB
PHP
Raw Normal View History

#!/usr/bin/env php
2017-03-10 15:02:09 +01:00
<?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@gitlab.factory.insight.doubletrade.com:scores";
2017-03-10 15:02:09 +01:00
$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');
}
// Git Archive
/*
2017-03-10 15:02:09 +01:00
passthru('git archive --remote='.$reposPath.'/'.$projet.'.git --prefix='.$archiveProjet.'/ -o '.
$exportPath.'/'.$projet.'.tar '.$version);
passthru('tar -xf '.$exportPath.'/'.$projet.'.tar --directory='.$exportPath);
passthru('rm -rf '.$exportPath.'/'.$projet.'.tar');
*/
// Git clone - because GitLab doesn't support 'git archive'
passthru('git clone -q -b '.$version.' '.$reposPath.'/'.$projet.'.git '.$exportPath.'/'.$archiveProjet);
passthru('rm -rf '.$exportPath.'/'.$archiveProjet.'/.git');
2017-03-10 15:02:09 +01:00
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);
}
}
// --- 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";