Pages vues depuis 25/05/2001 : 116 171 333
Index du forum »» Le coin des codeurs »» install auto encore plus auto ... déploiement
Citation : nicolas2
J’ai testé vite fait, c’est plutôt pas mal et tout s’est bien passé !
Citation : jpb
yes ! alors attention ce n'est pos encore pret pour les mises à jours ... mais c'est prévu ...Patrick RICHARD
Professeur de Technologie 1985 à 2024 patrickrichard.eu
Président de pagesTEC puis TÉC, Technologie Éducation Culture de 1997 à 2023
/**
* Télécharge une archive depuis GitHub avec version variable
* et extrait uniquement le contenu du premier dossier
*/
public function deployVersion(string $baseUrl, string $version, string $format = 'zip',? string $targetDir = null): array {
global $lang;
// ==================== VÉRIFICATION PRÉ-INSTALLATION ====================
$isUpdate = $this->isNPDSInstalled($targetDir);
if ($isUpdate) {
echo '<li class="progress" id="backup-step">💾 Sauvegarde de sécurité...</li>';
flush();
error_log("💾 Backup immédiat avant tout traitement...");
try {
$backupManager = new NPDSBackupManager();
$backupResult = $backupManager->backupCriticalFiles($targetDir);
if ($backupResult['success']) {
$sizeMB = round($backupResult['size'] / 1024 / 1024, 2);
echo '<script>document.getElementById("backup-step").innerHTML = "✅ Backup créé: ' . $sizeMB . ' MB";</script>';
flush();
error_log("✅ Backup réussi: " . $backupResult['file']);
} else {
error_log("❌ Backup échoué - arrêt du déploiement");
@unlink($lockFile);
return $this->createResult(false, "Échec du backup - déploiement annulé pour sécurité");
}
} catch (Exception $e) {
error_log("💥 Exception backup: " . $e->getMessage());
@unlink($lockFile);
return $this->createResult(false, "Erreur lors du backup: " . $e->getMessage());
}
}
if (!$isUpdate) { // Installation neuve uniquement
$validation = InstallationValidator::validateReceptacle($targetDir);
if (!$validation['safe'] && (!isset($_GET['force']) || $_GET['force'] !== 'yes')) {
// Afficher les warnings immédiatement
echo head_html();
echo '<h2 class="ms-3"><span class="display-6">🚨 </span>Vérification du réceptacle</h2>';
$this->showInstallationWarnings($validation, $targetDir, $version);
echo foot_html();
@unlink($lockFile);
return $this->createResult(false, "Réceptacle non sécurisé");
}
}
// ==================== VERROUILLAGE RENFORCÉ ====================
$lockFile = $this->tempDir . '/deploy.lock';
$lockTimeout = 600; // 10 minutes
/**
* Télécharge une archive depuis GitHub avec version variable
* et extrait uniquement le contenu du premier dossier
*/
public function deployVersion(string $baseUrl, string $version, string $format = 'zip',? string $targetDir = null): array {
global $lang;
// ==================== VERROUILLAGE RENFORCÉ ====================
$lockFile = $this->tempDir . '/deploy.lock';
$lockTimeout = 600; // 10 minutes
// ==================== VÉRIFICATION PRÉ-INSTALLATION ====================
$isUpdate = $this->isNPDSInstalled($targetDir);
if ($isUpdate) {
echo '<li class="progress" id="backup-step">💾 Sauvegarde de sécurité...</li>';
flush();
error_log("💾 Backup immédiat avant tout traitement...");
try {
$backupManager = new NPDSBackupManager();
$backupResult = $backupManager->backupCriticalFiles($targetDir);
if ($backupResult['success']) {
$sizeMB = round($backupResult['size'] / 1024 / 1024, 2);
echo '<script>document.getElementById("backup-step").innerHTML = "✅ Backup créé: ' . $sizeMB . ' MB";</script>';
flush();
error_log("✅ Backup réussi: " . $backupResult['file']);
} else {
error_log("❌ Backup échoué - arrêt du déploiement");
@unlink($lockFile);
return $this->createResult(false, "Échec du backup - déploiement annulé pour sécurité");
}
} catch (Exception $e) {
error_log("💥 Exception backup: " . $e->getMessage());
@unlink($lockFile);
return $this->createResult(false, "Erreur lors du backup: " . $e->getMessage());
}
}
if (!$isUpdate) { // Installation neuve uniquement
$validation = InstallationValidator::validateReceptacle($targetDir);
if (!$validation['safe'] && (!isset($_GET['force']) || $_GET['force'] !== 'yes')) {
// Afficher les warnings immédiatement
echo head_html();
echo '<h2 class="ms-3"><span class="display-6">🚨 </span>Vérification du réceptacle</h2>';
$this->showInstallationWarnings($validation, $targetDir, $version);
echo foot_html();
@unlink($lockFile);
return $this->createResult(false, "Réceptacle non sécurisé");
}
}
// Vérifier si un déploiement est déjà en cours
if (file_exists($lockFile)) {