- Sujet : Faire Burger Quizz !
- Notation
- Environnement
- Déroulement
- Creation des comptes
- Fork du projet
- TP1 - Stack Back-End
- Utiliser gitpod
- API Springboot
- API Quarkus
- Pull Request
- Commandes Utiles
Vous avez 4 séances de TD/TP pour produire un site web qui permettent de répondre à des questions et donne le score.
- 2pt de rendu par séance
- 12 pt de QCM/Questions ouvertes lors du dernier tp (1H dernière seance)
Warning
Noubliez pas de faire votre pullRequest en fin de td/tp
Tip
Il y a des commandes utiles en bas de page.
L'ensemble des 4 TD/TP sont à réaliser sur Gitpod.
Gitpod est une plateforme de développement cloud qui permet de configurer des environnements de développement prêts à l’emploi pour tout projet, directement depuis un dépôt Git. Elle automatise la préparation des environnements (dépendances, configurations, etc.), réduisant ainsi le temps d’installation et les problèmes de compatibilité. Grâce à son intégration avec des outils comme GitHub, GitLab, et Bitbucket, Gitpod propose des espaces de travail reproductibles et éphémères.
Dans le monde de l'Open Source, lorsque l'on veut contribuer à un projet, on propose des évolutions à une base de code (un repo) qui seront approuvées ou non par un validateur (reviewer). C'est ce que l'on appel faire une PR.
Vous allez reproduire le processus d'une PR pour chacun des TD/TP.
Ainsi pour chacun des TD/TPS, il faudra:
- Dupliquer (Forker) le projet github
- Modifier / compléter des fichier du repo. forké
- Commiter vos modifs sur votre repo.
- Proposer vos modifications sur le repo. parent (PullRequest)
Vous allez créer 2 comptes: un sur GitHub et un sur GitPod. Ces comptes seront utilisés lors des 4TD/TP.
Dans cette section nous créons un compte sur Github. Si vous en avez déjà vous pouvez passer à l'étape suivante.
- Se rendre sur https://github.com
- Bouton Sign up
- Remplissez le formulaire d'inscription
- Connecter vous au site github avec le nouveau compte créé
- Remplissez le formulaire
- Se rendre sur https://gitpod.io/login, selectionner Gitpod classic (PAS FLEX) et se connecter avec Github
- Authoriser Gitpod à accèder à votre compte Github
- Sélectionner la formule à 1Ohrs/mois
- Préciser que vous etes étudiant
Il faut ajouter à votre compte gitpod le droit de pouvoir lire&ecrire sur vos repos github.
- Se connecter à votre compte Gitpod
- Se rendre dans votre paramètres de comptes
- Editer les paramètres de vote liaison à Github dans le menu 'Git Provider'
- Ajouter le droit de lecture/ecriture à vos repos à travers Gitpod
L'objectif est de créer une copie du projet 'miage-numres-step1' sur votre compte github.
- Se rendre sur le projet github [miage-numres-step1] (https://github.com/aepsilon-tek/miage-numres-step1)
- Fork du projet grâce au bouton
L'architecture générale de l'application Burger Quizz est la suivante :
Une application web consomme une API Rest qui s'appuie sur une base de données relationnelles en mémoire H2.
Ce TP1 doit permettre de choisir la stack d'implementation de l'api. Le choix est à faire entre Springboot et Quarkus.
Pour utiliser GitPod avec votre projet forké, il suffit d'ouvrir l'url suivant dans votre navigateur : https://gitpod.io/# + URL_REPO_GITHUB
Avec un repo https://github.com/miage3-ae/miage-numres-step1 alors l'url est : https://gitpod.io/#https://github.com/miage3-ae/miage-numres-step1
Avec l'exemple ci-dessus et étant connecté à GitPod avec votre compte, vous devez obtenir cette fenêtre:
Vous êtes désormais connecté à votre environnement de developpement.
- Répondez aux questions Q1 et Q2 dans le fichier Questions.md
- Commiter & Pusher
- Vérifier sur le site github que dans votre repo le fichier Questions.md contient bien vos modifications
- Lancer application
springboot
en mode développement dans un Terminal - Tester dans un second Terminal que l'api répond :
curl -w "\n" http://localhost:8080/api/hello
- Modifier le contenu du message renvoyé
- Tester que la modification fonctionne
- Commiter & Pusher la modification du fichier
- Dans le terminal, construire l'application springboot
- Lancer la commande
java -jar api-springboot/target/api-springboot-0.0.1-SNAPSHOT.jar
- Tester que l'Api répond
- Mesurer la mémoire consommer par l'api SpringBoot
ps -e -o pid,rss,args | grep api-springboot
Répondre aux questions Q3,Q4,Q5 et Q6 du fichier Questions.md - Commiter & Pusher le fichier Questions.md
- Lancer application
quarkus
en mode développement dans un Terminal - Tester dans un second Terminal que l'api répond :
curl -w "\n" http://localhost:8080/hello
- Modifier le contenu du message renvoyé
- Tester que la modification fonctionne
- Commiter & Pusher la modification du fichier
-
Dans le terminal, construire l'application quarkus en mode JVM
-
Lancer la commande
java -jar api-quarkus/target/quarkus-app/quarkus-run.jar
-
Mesurer la mémoire consommer par l'api quarkus
ps -e -o pid,rss,args | grep quarkus-run
Répondre aux questions Q7,Q8 et Q9 du fichier Questions.md -
Dans le terminal, construire l'application quarkus en mode Natif
-
Lancer la commande
./api-quarkus/target/api-quarkus-1.0.0-SNAPSHOT-runner
-
Mesurer la mémoire consommer par l'api quarkus
ps -e -o pid,rss,args | grep runner
Répondre aux questions Q10,Q11 du fichier Questions.md -
Commiter & Pusher le fichier Questions.md
Une fois tous vos commits & Push réalisés sur votre repo, il est nécessaire de faire la Pull Request sur le repo parent. Pour cela, il suffit de :
- Se rendre sur votre compte personnel sur
GitHub
. - Sur la page principale, se rendre sur
Contribute
>Open pull Request
- Remplir le titre de la pull request en précisant votre nom (vos noms) et
Create pull request
./mvnw clean compile
: Compilation des 2 modules (api-quarkus
etapi-springboot
) du projet./mvnw spring-boot:run -pl api-springboot
: Lancement du projetapi-springboot
en mode developpement./mvnw clean package -pl api-springboot
: Construction du projetapi-springboot
./mvnw quarkus:dev -pl api-quarkus
: Lancement du projetapi-quarkus
en mode developpement./mvnw clean package -pl api-quarkus
: Construction du projetapi-quarkus
en mode JVM./mvnw clean package -P native -pl api-quarkus
: Construction du projetapi-quarkus
en mode Natif