Configuration du projet

Informations

Merci de lire cette page complétement, vous y trouverez des informations importantes.

Vous travaillerez en équipe et partagerez vos développements/créations via un outil de travail collaboratif : git et le serveur gitlab de l’université. Nous vous avons préparé le travail, l’installation de Laravel est déjà faite. Un membre de votre groupe a été autorisé à créer une divergence du projet initiale : marathon 25.

Les outils

Vous devez proposer une application web qui utilise le cadriciel Laravel qui a été étudié en cours. La réalisation du front utilisera l’outil Vite qui est intégré à Laravel. Quelques informations sur Vite sont disponibles ici.

Vous veillerez à appliquer les bonnes pratiques de développement et en particulier les règles de l’architecture MVC proposées dans Laravel.

Vous planifierez la réalisation des tâches de votre projet en utilisant des tickets (voir ici) et des jalons sur votre dépôt GitLab.

Chaque fonctionnalité devra être réalisée sur une branche dédiée, et fusionnée sur la branche dev partagée par l’ensemble de l’équipe puis sur la branche main une fois terminée et validée.
Chaque commit devra être associé à la tâche à laquelle il participe. Le dernier commit devra fermer le ticket (close #n avec $n$ le numéro du ticket). Si un bug est découvert après fermeture du ticket, il faut ouvrir un nouveau ticket qui corrigera le bug.

Rappels

Un commit sur la branche principale (main) provoquera le déploiement de votre projet sur la machine marathon. Si vous souhaitez visualiser votre travail en local (pour l’équipe), il est préférable de créer une branche dev qui permettra à l’équipe de visualiser le travail déjà réalisé avant de le déployer sur la machine marathon.

Organisation du travail

Vous allez travailler en équipe, il est important d’organiser votre équipe dès le début et notamment indiquer le rôle de chacun vis à vis de l’équipe.

Pensez notamment à définir le rôle de validateur qui sera la personne qui validera la qualité du code produit par un membre de l’équipe et qui l’ajoutera sur la branche principale (main) ou la branche dev (partage pour l’équipe) de votre projet. Vous pouvez choisir de faire systématiquement des demandes de fusion (merge request) pour chaque modification importante ou non. Cela permet de faire relire le code par un autre membre de l’équipe avant de l’intégrer dans la branche principale (ou dev) et évite les incohérences si c’est toujours la même personne qui intègre les modifications.

Ce rôle doit être effectué avec diplomatie en indiquant des critiques constructives (Il n’est jamais agréable, même si le résultat n’est pas correct, d’entendre des critiques négatives).

Ce validateur sera le membre de l’équipe qui a créé la demande de divergence (fork) du projet dans sa forme initiale. Ce validateur sera celui qui a été désigné par l’équipe ou de façon aléatoire dans le cours SAÉ S3.A.01.

Tâches du validateur :

  1. Faire une demande de divergence du projet marathon 25 (1 seul membre du groupe peut le faire).

  2. Ajouter au projet obtenu les droits d’accès aux membres de l’équipe.

    • Le droit Reporter obligera les membres du groupe de demander la modification du projet par “Merge Request
    • Le droit Developper autorisera les membres de faire les modifications sans vérification par le validateur.

    C’est à vous de déterminer le meilleur fonctionnement.

  3. Ajouter les droits reporter aux enseignants informatique (M.Audemard, M. Dubois, M. Hemery, M. Hsu, M. Tabary, M. Wallon)

  4. Configuration de l’intégration continue

    Pour que le déploiement se déroule bien, il faut configurer deux variables dans votre projet sur gitlab.

    • Une variable NAME qui doit contenir votre nom de login (but25_groupeXX avec XX votre numéro de groupe) sur la machine marathon qui vous a été délivré en début de marathon.

    • Une variable SSH_PRIVATE_KEY qui doit contenir votre clé privée qui a été calculée pour vous et qui se trouve dans le fichier ~/.ssh/id_rsa sur la machine marathon.

      Pour récupérer sa valeur et configurer la connexion ssh sans avoir besoin de saisir un mot de passe par la suite, il faut donc se connecter sur la machine marathon (172.31.146.106) avec la commande

      ssh but25_groupeXX@172.31.146.106
      

      Utiliser le mot de passe qui vous a été fourni pour vous connecter puis :

      • Tapez la commande suivante pour autoriser la connexion à distance :
        ssh-copy-id but25_groupeXX@172.31.146.106
        
        saisir votre mot de passe et valider.
      • Visualiser la clé privée avec la commande cat ~/.ssh/id_rsa par exemple.

    Pour modifier ces 2 variables, il faut

    1. afficher dans votre navigateur, la page de votre projet sur gitlab.

    2. Puis sélectionner Paramètres ou Setting et l’entrée intégration et livraisons continues ou CI/CD.

    3. Créez la variable NAME (votre identifiant de login)

      Attention
          Sélectionnez l'option "Visible" dans la catégorie "Visibility, protection et masquage" 
          pour que la variable soit accessible dans les _pipelines_ de votre projet.
      
    4. Créez la variable SSH_PRIVATE_KEY (la valeur est le contenu du fichier ~/.ssh/id_rsa sur la machine marathon)

      Attention
          Sélectionnez l'option "Visible" dans la catégorie "Visibility, protection et masquage" 
          pour que la variable soit accessible dans les _pipelines_ de votre projet.
      

    Chaque modification de la branche main de votre projet entraine le déploiement vers la machine marathon à l’adresse http://172.31.146.106/~but25_groupeXX, avec XX votre numéro de groupe.

  5. Si vous avez choisi la validation du code par une personne à l’aide de merge request, le propriétaire du projet ( validateur) devra accepter la demande pour modifier le projet.

Commandes sur la machine marathon

Après avoir effectué le premier déploiement (git push origin main), vous devez initialiser l’environnement de votre site sur le serveur marathon.

Important

Les commandes qui sont indiquées dans la suite ne doivent être exécutées qu’une seule fois.

La connexion avec la base de données est un exemple de l’adaptation du contexte de votre application au serveur qui va la mettre à disposition des utilisateurs. Pour cela vous devez créer le fichier .env.

Les commandes à taper lors du premier déploiement :

Dans un premier temps, il faut vous connecter sur la machine marathon avec la commande :

ssh but25_groupeXX@172.31.146.106

Ensuite se déplacer dans le répertoire www :

cd www

Et exécuter les commandes qui suivent :

# liaison avec le SGBD et la base de données utilisée
cp .env.example .env

#########################################################
#
# Dans le fichier .env, il faut modifier en particulier les variables suivantes
#
# A MODIFIER
#
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=but25_groupeXX
# DB_USERNAME=but25_groupeXX
# DB_PASSWORD=password_but25_groupeXX
#
# A MODIFIER 
#
# APP_URL=http://localhost:8000 
#
#########################################################

Après la copie du fichier .env.example dans le fichier .env, il faut de faire la suite :

  • Donner les bonnes valeurs pour la connexion à la base de données associée avec votre projet sur la machine marathon ( Les informations vous ont été distribuées avec votre identifiant et votre mot de passe),
  • Il faut modifier la valeur de la variable APP_URL, elle doit indiquer l’adresse de votre application sur la machine marathon, par exemple, vous développez le projet pour le groupe but25_groupeTest, la valeur de la variable APP_URL doit être :
    APP_URL=http://172.31.146.106/~but25_groupeTest
    
# Génération de la clé initiale

php artisan key:generate

# génération des tables dans votre base de données

php artisan migrate

# ou pour ré-initialiser

php artisan migrate:fresh

# Initialisation des données de départ

cp -r resources/images storage/app/public

# Création du lien physique en storage/app/public et public/storage

php artisan storage:link

# Ajout de données aléatoire dans les tables de la base de données

php artisan db:seed

À partir de là, votre site doit être visible avec l’url : http://172.31.146.106/~but25_groupeXX avec XX votre numéro de groupe.

Modifications

Toutes les modifications pushées sur la branche main du projet seront visibles sur le serveur du marathon et donc sur http://172.31.146.106/~but25_groupeXX. Bien entendu, lorsque qu’un membre de votre groupe valide ses modifications (push sur la branche main sur gitlab), les autres membres de l’équipe devront intégrer ces modifications le plus rapidement possible dans lors projet local. C’est pourquoi il est important de toujours travailler sur une branche particulière (fixbug-xx, ticket-xx) quand on travaille sur un ticket.

Base de données

Un serveur mysql de base de données est à votre disposition sur la machine 172.31.146.106. Vous disposez d’une base (LOGIN_GROUPE) pour le projet. Les identifiants de connexion à ces bases vous ont été distribués. Vous pouvez directement les utiliser même à partir de votre ordinateur personnel (attention de bien renseigner le champ DB_HOST avec la valeur 172.31.146.106). Un accès via phpmyadmin est disponible à l’adresse : http://172.31.146.106/phpmyadmin.

Suite...
  • L’accès à la machine marathon n’est possible qu’à partir d’une machine connectée sur le réseau de l’université ( filière ou wifi).

    Cela signifie que la base de données de la machine marathon n’est pas accessible si vous utilisez le réseau internet à partir de votre connexion GSM.

  • La page Votre poste de développement vous donne les commandes pour configurer votre poste de travail pendant la phase de développement.