Jump to content

bonnes pratiques pour un environnement de dev collaboratif ?


Recommended Posts

Bonjour à toutes et tous

Nous nous demandons comment mettre en place notre environnement de dev et de preprod pour travailler sur une preprod conforme à la version de prod (on a une replication de base vers un serveur local toutes les nuits).

Le problème tient surtout à l'importance de l'id_shop directement lié à l'URL sous Prestashop.
Nous voudrions que chacun puisse accéder via un sous-domaine, par exemple dev1.monsite.com, dev2.monsite.com, mais que tout le monde utilise la même bdd (celle que nous répliquons).

Comment fonctionnez-vous avec vos équipes de devs, des intervenants exterieurs, etc pour maintenir et développer vos Prestashop ?

Merci

Edited by ChDUP
changement de titre (see edit history)
Link to comment
Share on other sites

Si chacun utilise la même bdd vous allez forcément vous colisionner ! Pas la bonne idée à mon avis

Mais sinon il te suffit de créer autant d'environnement que souhaité et de ne pas forcer la redirection sur l'url canonique et chacun verra son code sur la même bdd.

Attention quand même, les liens dynamiques, et menu ne respecterons pas ce "domaine" sauf à forcer cela via une override de link

Link to comment
Share on other sites

ah oui , ne pas forcer la redirection, effectivement.
Il faut que je teste le comportement.
Mais de ce que j'ai vu, l' ID_shop est determiné par l'URL
donc tout ce qui découle de l'ID_shop (modules activés, prix, etc) découle de l'URL.
Je vais tester , voir comment ça se comporte (et nous sommes en multiboutique)

Link to comment
Share on other sites

Concernant vos environnements de dev, vous êtes sur quoi ?
Quelque chose comme Docker / Vagrant ?

Car pour Vagrant, vous pourriez créer une machine virtuelle que chacun pourrait déployer sur son poste.
Cette image pourrait, à son chargement, soit récupérer un dump tout frais ou meme, se connecter à la base de votre choix.
Ensuite différentes solutions sont possibles pour le projet /www et les vhosts.

Ensuite, vous pouvez étendre les fonctions et configurations de ce Vagrant via quelques scripts d'installation assez simples à mettre en place.

Link to comment
Share on other sites

  • 1 month later...

C'est exactement le problème que j'avais : Partager la base de données d'un Prestashop pour bosser localement à plusieurs, tout en gardant chaque poste accessible en http depuis le réseau local (et donc sur des ips et hostname différents).

On s'est inspirés du rewritter fourni par l'image docker prestashop officielle.

On a donc modifié le vhost de l'apache du docker pour ajouter cette directive php :

php_value auto_prepend_file /docker_prepend.php

 

Dorénavant, chaque page appelée depuis le prestashop hébergé dans l'un de nos environnements docker est prepended par ces quelques lignes de PHP :

<?php

$pdo_dsn = sprintf('mysql:host=%s;dbname=%s', getenv('DB_SERVER'), getenv('MYSQL_DATABASE'));

$DBHandler = new PDO($pdo_dsn, getenv('DB_USER_FRONT'), getenv('DB_PASSWD'));

$DBStatement = $DBHandler->prepare("UPDATE `ps_shop_url` SET `domain` = :domain, `domain_ssl` = :domain WHERE `id_shop` = :shop_id AND `domain` != :domain;");

$DBStatement->execute([
    'domain' => $_SERVER['HTTP_HOST'],
    'shop_id' => getenv('SHOP_ID'),
]);

Si la requête (HTTP) courante provient d'un HTTP_HOST différent du domaine souhaité (celui du shop_id voulu), le domain est alors ré-écrit juste avant que Prestashop soit initialisé.

C'est pas joli-joli, mais c'est Presta qu'a commencé.

En tout cas, ça fonctionne et ça nous permet de tous travailler sur nos environnements locaux à partir de la même base de données, tout en nous permettant de joindre le serveur des autres dans jamais se soucier du hostname.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...