Skip to content
Snippets Groups Projects
Commit f85e6c01 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Passage de paramètres possibles pour toutes les étapes d'install ou de MAJ

parent 5fe184f1
No related branches found
No related tags found
No related merge requests found
......@@ -9,8 +9,10 @@
* les formules des établissements concernés ont été modifiées pour tenir compte de cette nouveauté.
* les heures de décharge ne sont plus gérées en tant que telles, mais impactent le paramètre "Dépassement de service dû sans HC"
* il est maintenant possible de personnaliser les structures gérées dans l'interface de test.
* Possibilité de saisir le taux de charges patronales directement dans l'IHM d'administration des statuts des intervenants
* Lorsqu'on utilise la commande ./bin/ose creer-utilisateur et que l'on demande à créer un intervenant, la feuille de route s'initialisera dans la foulée
* Possibilité de saisir le taux de charges patronales directement dans l'IHM d'administration des statuts des intervenants.
* Lorsqu'on utilise la commande ./bin/ose creer-utilisateur et que l'on demande à créer un intervenant, la feuille de route s'initialisera dans la foulée.
* Possibilité de définir des paramètres (version, etc.) avant les mises à jour de l'application afin de pouvoir automatiser à 100% les processue d'installation et de mise à jour.
* Possibilité de mettre à jour OSE vers une branche et plus uniquement vers un TAG de version (utile pour les développeurs ou en test)
## Correction de bugs
......
<?php
$actions = [
"update" => "Mise à jour de l'application",
"update" => "Mise à jour de l'application"
. "\n\t--maintenance=no : pas de prompt pour être averti du mode maintenance"
. "\n\t--version=<version cible> : Met à jour directement vers la version indiquée"
,
"notifier-indicateurs" => "Envoi des mails relatifs aux indicateurs",
"synchronisation" => "<job> : Effectue la synchronisation des données pour le <job> transmis",
"chargens-calcul-effectifs" => "Calcul des effectifs du module Charges",
......@@ -12,6 +15,9 @@ $actions = [
"maj-public-links" => "Mise à jour des liens vers les répertoires publics des dépendances",
"clear-cache" => "Vidage du cache de l'application",
"test-bdd" => "Test d'accès à la base de données",
"install-bdd" => "Installe la base de données"
. "\n\t--oseappli-pwd=<votre mdp> : mot de passe de l'utilisateur oseappli"
,
"update-bdd" => "Mise à jour de la base de données de l'application (sans les fichiers)",
];
$actionsDev = [
......
......@@ -11,7 +11,6 @@ $bdd = $oa->getBdd();
$schema = new \BddAdmin\Schema($bdd);
/* Mise en place du schéma de la BDD */
$c->println("\n" . 'Création des définitions de la base de données', $c::COLOR_LIGHT_PURPLE);
......@@ -23,7 +22,6 @@ $schema->setLogger($scl);
$schema->create($ref, true);
/* Insertion des données */
$c->println("\n" . 'Insertion des données', $c::COLOR_LIGHT_PURPLE);
$dataGen = new DataGen($oa);
......@@ -33,8 +31,10 @@ $c->println("\n" . 'Mise à jour du point d\'indice pour les HETD', $c::COLOR_LI
$bdd->exec('BEGIN OSE_FORMULE.UPDATE_ANNEE_TAUX_HETD; END;');
/* Définition d'un mdp pour oseappli */
if ($c->hasOption('oseappli-pwd')) {
$pwd1 = $c->getOption('oseappli-pwd');
} else {
$c->println("\n" . 'Choix d\'un mot de passe pour l\'utilisateur système oseappli', $c::COLOR_LIGHT_CYAN);
$c->println("Veuillez saisir un mot de passe :");
$pwd1 = $c->getSilentInput();
......@@ -45,8 +45,9 @@ $pwd2 = $c->getSilentInput();
if ($pwd1 <> $pwd2) {
$c->printDie('Les mots de passe saisis ne correspondent pas!');
}
}
$c->println('Application du changement de mot de pase ...');
$c->println('Application du de mot de pase de oseappli...');
$oa->exec("changement-mot-de-passe --utilisateur=oseappli --mot-de-passe=$pwd1");
$c->println('Mot de passe changé', $c::COLOR_LIGHT_GREEN);
......@@ -54,6 +55,5 @@ $c->println('Mot de passe changé', $c::COLOR_LIGHT_GREEN);
$c->println('Vous pourrez vous connecteur à OSE avec le login "oseappli" et votre nouveau mot de passe.');
/* Terminé!! */
$c->println('L\'installation de la base de données est maintenant terminée!', $c::COLOR_LIGHT_GREEN);
\ No newline at end of file
......@@ -14,24 +14,23 @@ if (!$fromMaster) {
foreach ($tags as $tag) {
$c->println($tag);
}
$ok = false;
while (!$ok) {
$c->print("Veuillez choisir une version à déployer: ");
$version = $c->getInput('version');
if ($oa->tagIsValid($version)) {
$ok = true;
} else {
$c->println("$version n'est pas dans la liste des versions disponibles.");
}
$version = $c->getInput();
if (!($oa->tagIsValid($version) || $oa->brancheIsValid($version))) {
$c->printDie("$version n'est pas dans la liste des versions disponibles.");
}
// Récupération des sources
$c->println("\nDéploiement à partir des sources GIT", $c::COLOR_LIGHT_CYAN);
$tbr = $oa->tagIsValid($version) ? 'tags/' : '';
$c->exec([
"cd $osedir",
"git checkout tags/$version",
"git checkout $tbr$version",
"mkdir cache",
"chmod 777 cache",
"mkdir log",
"chmod 777 log",
"chmod +7 bin/ose",
]);
$oa->writeVersion($version);
......@@ -40,6 +39,8 @@ if (!$fromMaster) {
"cd $osedir",
"mkdir cache",
"chmod 777 cache",
"mkdir log",
"chmod 777 log",
"chmod +7 bin/ose",
]);
}
......
<?php
$bdd = new \BddAdmin\Bdd(Config::get('bdds', 'dev-local'));
$schema = new \BddAdmin\Schema($bdd);
//$bdd = new \BddAdmin\Bdd(Config::get('bdds', 'dev-local'));
//$schema = new \BddAdmin\Schema($bdd);
$oa->migration(AbstractMigration::CONTEXTE_POST, 'DepartementsInitCodes');
\ No newline at end of file
......@@ -2,8 +2,10 @@
// Choix de la version
$c->println("Mise à jour de OSE");
if ($c->getOption('maintenance') != 'no') {
$c->println("Assurez-vous bien d'avoir mis OSE en mode maintenance avant de démarrer\n(pressez Entrée pour continuer)...");
$c->getInput();
}
if (!$oa->bddIsOk($msg)) {
$c->printDie('La mise à jour ne peut pas se poursuivre : la base de données est inaccessible : ' . "\n" . $msg);
......@@ -16,6 +18,7 @@ $c->exec([
"git fetch --all --tags --prune",
], false);
if (!$c->hasOption('version')) {
$c->println("Sélection de la version à déployer", $c::COLOR_LIGHT_CYAN);
$c->println("La version actuellement installée est la " . $oa->oldVersion);
$c->println("Voici la liste des versions de OSE disponibles:");
......@@ -24,20 +27,21 @@ foreach ($tags as $tag) {
$c->println($tag);
}
// Choix de la version
$c->print("Veuillez choisir une version à déployer: ");
$version = $c->getInput();
if (!$oa->tagIsValid($version)) {
}
$version = $c->getInput('version');
if (!($oa->tagIsValid($version) || $oa->brancheIsValid($version))) {
$c->printDie("$version n'est pas dans la liste des versions disponibles.");
}
// Récupération des sources
$c->println("\nMise à jour des fichiers à partir de GIT", $c::COLOR_LIGHT_CYAN);
$tbr = $oa->tagIsValid($version) ? 'tags/' : '';
$c->passthru([
"cd $osedir",
"git checkout tags/$version",
"git checkout $tbr$version",
]);
......@@ -59,5 +63,8 @@ $c->println("\nMise à jour des fichiers OK : la version installée est désorma
// Mise à jour de la base de données à partir d'un nouveau processus
$oa->run('update-bdd', true);
$c->println("\nFin de la mise à jour. N'oubliez pas de sortir du mode maintenance!");
$c->println("\nFin de la mise à jour.");
if ($c->getOption('maintenance') != 'no') {
$c->println("N'oubliez pas de sortir du mode maintenance!");
}
$c->println('');
\ No newline at end of file
......@@ -7,7 +7,7 @@
class OseAdmin
{
const OSE_ORIGIN = 'https://git.unicaen.fr/open-source/OSE';
const MIN_VERSION = 8; // version minimum installable
const MIN_VERSION = 10; // version minimum installable
/**
* @var Console
......@@ -24,6 +24,11 @@ class OseAdmin
*/
private $tags = false;
/**
* @var array
*/
private $branches = false;
/**
* @var int
*/
......@@ -77,9 +82,7 @@ class OseAdmin
public function gitlabIsReachable(): bool
{
$gitCheck = $this->console->exec("git ls-remote --heads " . self::OSE_ORIGIN, false);
return (false !== strpos(implode(' ', $gitCheck), 'heads/master'));
return $this->brancheIsValid('master');
}
......@@ -93,14 +96,42 @@ class OseAdmin
foreach ($ts as $tag) {
$this->tags[] = substr($tag, strpos($tag, 'refs/tags/') + 10);
}
usort($this->tags, function ($a, $b) {
$va = (int)substr($a, 0, strpos($a, '.'));
$vb = (int)substr($b, 0, strpos($b, '.'));
if ($va == $vb) return $a > $b;
return $va > $vb;
});
}
foreach ($this->tags as $i => $tag) {
$tags = $this->tags;
foreach ($tags as $i => $tag) {
$version = (int)substr($tag, 0, strpos($tag, '.'));
if ($version < $minVersion) unset($this->tags[$i]);
if ($version < $minVersion) unset($tags[$i]);
}
return $tags;
}
public function getBranches(): array
{
if (false === $this->branches) {
$this->branches = [];
$bs = $this->console->exec("git ls-remote --heads --refs " . self::OSE_ORIGIN, false);
foreach ($bs as $branche) {
$this->branches[] = substr($branche, strpos($branche, 'refs/heads/') + 11);
}
sort($this->branches);
}
return $this->tags;
return $this->branches;
}
......@@ -117,6 +148,18 @@ class OseAdmin
/**
* @param string $tag
*
* @return bool
*/
public function brancheIsValid(string $branche): bool
{
return in_array($branche, $this->getBranches());
}
public function currentVersion(): string
{
$vf = $this->getOseDir() . 'VERSION';
......@@ -229,7 +272,7 @@ class OseAdmin
public function getOseAppliId(): int
{
if (!$this->oseAppliId) {
$u = $this->getBdd()->select("SELECT id FROM UTILISATEUR WHERE USERNAME='oseappli'");
$u = $this->getBdd()->select("SELECT ID FROM UTILISATEUR WHERE USERNAME='oseappli'");
if (isset($u[0]['ID'])) {
$this->oseAppliId = (int)$u[0]['ID'];
} else {
......@@ -245,7 +288,7 @@ class OseAdmin
public function getSourceOseId(): int
{
if (!$this->sourceOseId) {
$src = $this->getBdd()->select("SELECT id FROM SOURCE WHERE CODE='OSE'");
$src = $this->getBdd()->select("SELECT ID FROM SOURCE WHERE CODE='OSE'");
if (isset($src[0]['ID'])) {
$this->sourceOseId = (int)$src[0]['ID'];
} else {
......
......@@ -69,23 +69,19 @@ $tags = $od->getTags();
foreach ($tags as $tag) {
$c->println($tag);
}
$ok = false;
while (!$ok) {
$c->print("Veuillez choisir une version à déployer: ");
$version = $c->getInput('version');
if ($od->tagIsValid($version)) {
$ok = true;
} else {
$c->println("$version n'est pas dans la liste des versions disponibles.");
}
$version = $c->getInput();
if (!($od->tagIsValid($version) || $od->brancheIsValid($version))) {
$c->printDie("$version n'est pas dans la liste des versions disponibles.");
}
// Récupération des sources
$c->println("\nDéploiement à partir des sources GIT", $c::COLOR_LIGHT_CYAN);
$tbr = $od->tagIsValid($version) ? 'tags/' : '';
$c->exec([
"cd $osedir",
"git checkout tags/$version",
"git checkout $tbr$version",
"mkdir cache",
"mkdir cache/Doctrine",
"chmod 777 cache/Doctrine",
......@@ -145,21 +141,13 @@ $c->exec([
// Conclusion
$c->println("\nFin du script d'installation des fichiers", $c::COLOR_LIGHT_GREEN);
$c->println("Il reste encore plusieurs étapes à réaliser pour que OSE soit pleinement fonctionnel :");
$c->println(" 1 - Configurez votre serveur Apache");
$c->println(" 2 - Initialisez la base de données de OSE à l'aide du script prévu à cet effet");
$c->println(" 3 - Mettez en place la configuration locale de l'application, si ce n'est déjà le cas");
$c->println(" 4 - Une fois bien connecté, configurez vos connecteurs en vous appuyant\n le cas échéant sur ceux qui vous sont fournis");
$c->println(" 5 - Mettez en place les tâches CRON nécessaires (envoi de mails pour les indicateurs, Synchronisation automatique, etc.");
$c->println(" 6 - Paramétrez l'application pour l'adapter à vos besoins");
$c->println(" 1 - Configurez votre serveur Apache si ce n'est déjà fait");
$c->println(" 2 - Veuillez personnaliser le fichier de configuration de OSE config.local.php, si ce n'est déjà le cas");
$c->println(" 3 - La base de données devra au besoin être initialisée à l'aide de la commande ./bin/ose install-bdd. Si votre base était déjà initialisée, alors la commande ./bin/ose update-bdd sera privilégiée");
$c->println(" 4 - Mettez en place les tâches CRON nécessaires (envoi de mails pour les indicateurs, Synchronisation automatique, etc.");
$c->println('');
$c->println("Pour la suite, merci de vous reporter au guide de l'administrateur pour vous aider à configurer l'application");
$c->println('');
/*
$c->println(" 1 - Configurez le cas échéant votre serveur Apache");
$c->println(" 2 - Veuillez personnaliser le fichier de configuration de OSE config.local.php, si ce n'est déjà le cas");
$c->println(" 3 - La base de données devra au besoin être initialisée à l'aide de la commande ./bin/ose install-bdd");
$c->println(" 4 - Mettez en place les tâches CRON nécessaires (envoi de mails pour les indicateurs, Synchronisation automatique, etc.");
*/
/************************************************************
......@@ -168,6 +156,7 @@ $c->println(" 4 - Mettez en place les tâches CRON nécessaires (envoi de mails
class OseDeploy
{
const OSE_ORIGIN = 'https://git.unicaen.fr/open-source/OSE';
const MIN_VERSION = 10; // version minimum installable
/**
* @var Console
......@@ -179,6 +168,11 @@ class OseDeploy
*/
private $tags = false;
/**
* @var array
*/
private $branches = false;
/**
......@@ -267,14 +261,12 @@ class OseDeploy
public function gitlabIsReachable(): bool
{
exec("git ls-remote --heads " . self::OSE_ORIGIN, $gitCheck );
return (false !== strpos(implode(' ', $gitCheck), 'heads/master'));
return $this->brancheIsValid('master');
}
public function getTags(): array
public function getTags($minVersion = self::MIN_VERSION): array
{
if (false === $this->tags) {
$this->tags = [];
......@@ -283,15 +275,42 @@ class OseDeploy
foreach ($ts as $tag) {
$this->tags[] = substr($tag, strpos($tag, 'refs/tags/') + 10);
}
usort($this->tags, function ($a, $b) {
$va = (int)substr($a, 0, strpos($a, '.'));
$vb = (int)substr($b, 0, strpos($b, '.'));
if ($va == $vb) return $a > $b;
return $va > $vb;
});
}
$minVersion = 8;
foreach ($this->tags as $i => $tag) {
$tags = $this->tags;
foreach ($tags as $i => $tag) {
$version = (int)substr($tag, 0, strpos($tag, '.'));
if ($version < $minVersion) unset($this->tags[$i]);
if ($version < $minVersion) unset($tags[$i]);
}
return $this->tags;
return $tags;
}
public function getBranches(): array
{
if (false === $this->branches) {
$this->branches = [];
$bs = $this->console->exec("git ls-remote --heads --refs " . self::OSE_ORIGIN, false);
foreach ($bs as $branche) {
$this->branches[] = substr($branche, strpos($branche, 'refs/heads/') + 11);
}
sort($this->branches);
}
return $this->branches;
}
......@@ -308,6 +327,18 @@ class OseDeploy
/**
* @param string $tag
*
* @return bool
*/
public function brancheIsValid(string $branche): bool
{
return in_array($branche, $this->getBranches());
}
public function currentVersion(string $osedir): string
{
$vf = $this->getVersionFile($osedir);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment