Quelles sont les notions qui vont être abordées au cours de cet atelier ? Cet atelier a pour objectif de vous apprendre à créer des bases de données grace à Python et SQLite. Vous allez ensuite exploter cette base de données via la construction d'API. Vous allez utiliser et mettre en oeuvre au travers de cet atelier, un serveur Python utilisant le Framework Flask. Vous allez créer des API, découvrir les Actions et les Secrets GitHUB pour au final mettre en service et exploiter une base de données. Large programme mais tout à fait accessible et ne nécessitant pas de base technique particulière. Juste de l'observation et de la rigueur dans votre travail.
Objectif : Création d'un Repository GitHUB pour travailler avec son projet
Difficulté : Très facile (~10 minutes)
GitHUB est une plateforme en ligne utilisée pour stocker le code de son programme. GitHUB est organisé en "Repository", c'est à dire en répertoire (contenant lui même des sous répertoires et des fichiers). Chaque Repository sera indépendant les un des autres. Un Repository doit être vu comme un projet unique (1 Repository = 1 Projet). GitHUB est une plateforme très utilisée par les informaticiens.
Procedure à suivre :
1° - Créez vous un compte sur GitHub : https://github.com/
Si besoin, une vidéo pour vous aider à créer votre propre compte GitHUB : Créer un compte GitHUB
A noter que si vous possédez déjà un compte GitHUB, vous pouvez le conserver pour réaliser cet atelier. Pas besion d'en créer un nouveau.
Remarque importante : Lors de votre inscription, utilisez une adresse mail valide. GitHUB n'accepte pas les adresses mails temporaires
2° - Faites un Fork du Repository suivant : https://github.com/OpenRSI/flask_hello_world.git
Voici une vidéo d'accompagnement pour vous aider dans les "Forks" : Forker ce projet
Travail demandé : Créé votre compte GitHUB, faites le fork de ce projet et copier l'URL de votre Repository GitHUB dans la discussion public.
Notion acquise lors de cette séquence :
Vous avez appris lors de cette séquence à créer des Repository pour stocker et travailler avec votre code informatique. Vous pourez par la suite travailler en groupe sur un projet. Vous avez également appris à faire des Forks. C'est à dire, faire des copies de projets déjà existant dans GitHUB que vous pourrez ensuite adapter à vos besoins.
Rendez-vous sur https://www.alwaysdata.com/fr/
Remarque : Attention à bien vous rappeler de vos Login/Password lors de la création de votre compte site car vous en aurez besoin plus tard pour la création de vos Secrets GitHUB.
Voici une vidéo d'accompagnement pour vous aider dans cette séquence de création d'un site sur Alwaysdata : Vidéo Alwaysdata
Procédure :
1° - Créez votre compte Alwaysdata (gratuit jusqu'à 100Mo, aucune carte nécéssaire).
2° - Depuis la console d'administration (Le panel d'administration de Alwaysdata) :
. 2.1 - Cliquez sur "Sites" (Colonne de gauche) puis supprimer votre site PHP (via l'icone de la Poubelle).
. 2.2 - Installer ensuite une application Flask (Bouton + Installer une application).
. . 2.2.1 Adresses = utilisez le sous-domaine qui vous appartient que vous trouverez dans l'information " Les sous-domaines suivants vous appartiennent et sont actuellement inutilisés : {Site}.alwaysdata.net
. . 2.2.2 Répertoire d'installation = /www/flask
. 2.2.3 N'oubliez pas d'Accepter les conditions.
3° - Autoriser les connexions SSH :
. 3.1 - Cliquez sur SSH (Accès distant).
. 3.2 - Modifier les paramètres de votre utilisateur.
. 3.3 - Définissez si besion un nouveau mot de passe.
. 3.4 - Cliquez sur Activer la connexion par mot de passe.
Travail demandé : Mettre en ligne votre application Flask "Hello World !" et copier l'URL de votre site dans la discussion public.
Notions acquises lors de cette séquence :
Vous avez créer un hébergement (gratuit) et découvert également que vous pouvez installer bien d'autres applications (Django, Drupal, Jenkins, Magento, Symphony, etc...). Les perspectives sont nombreuses.
Objectif : Automatiser la mise à jour de votre hébergement Alwaysdata
Difficulté : Moyenne (~15 minutes)
Dans le Repository GitHUB que vous venez de créer précédemment lors de la séquence 1, vous avez un fichier intitulé CICD.yml et qui est déposé dans le répertoire .github/workflows. Ce fichier a pour objectif d'automatiser le déploiement de votre code sur votre site Alwaysdata. Pour information, c'est ce que l'on appel des Actions GitHUB. Ce sont des scripts qui s'exécutent automatiquement lors de chaque Commit dans votre projet (C'est à dire à chaque modification de votre code). Ces scripts (appelés actions) sont au format yml qui est un format structuré proche de celui d'XML.
Pour utiliser cette Action (CICD.yml), vous avez besoin de créer des secrets dans GitHUB afin de ne pas divulguer des informations sensibles aux internautes de passage dans votre Repository comme vos login et password par exemple.
Pour ce projet Métriques, vous avez 4 secrets à créer dans votre Repository GitHUB :
USERNAME = Le login qui est utilisé pour la connexion SSH.
PASSWORD = Le mot de passe qui est utilisé pour la connexion SSH.
ALWAYSDATA_TOKEN = Le token est à créer depuis l'interface d'administration Alwaysdata. Cliquez sur votre profil en haut à droite, puis sur 'Profil' puis sur 'Gérer les tokens'. Laissez le champ "Adresses IP autorisées" vide. Dans le cas contraire vous limiteriez les connexions seulement à une adresse IP. Pour le champ Application* mettez "Metriques" par exemple.
ALWAYSDATA_SITE_ID = Vous trouverez l'ID de votre site depuis l'interface d'administration Alwaysdata dans les paramètres de votre site (dans le titre #XXXXX) XXXXX étant l'ID de votre site. Ne prenez pas le # mais juste les chiffres.
Voici une vidéo pour vous expliquer le processus de création de vos secrets dans GitHUB : Création des secrets
Notions acquises de cette séquence :
Vous avez vu dans cette séquence comment créer des secrets GiHUB afin de mettre en place de l'industrialisation continue.
L'utilité des scripts d'actions (C'est à dire des scripts exécutés lors des Commits) est très importante mais sortes malheureusement du cadre de cet atelier faute de temps. Toutefois, je vous invites à découvrir cet outil via les différentes sources du Web (Google, ChatGPT, etc..).
1° - Connectez vous à votre serveur Alwaysdata en SSH.
2° - Depuis de la console SSH, executez la commande suivante : python3 create_db.py
Votre base de données est à présent opérationnelle sur votre serveur (Le fichier database.db à été créé dans votre répertoire sur le serveur)
Vous pouvez, si vous le souhaitez, tappez la commande ls dans votre console pour voir la présence de la base de données.
Votre solution est à présent opérationnelle. Vous pouvez testez les routes (API) comme suit :
https://{Votre_URL}/
Pointe sur le fichier helloWorld d'accueil
https://{Votre_URL}/lecture
L'accès est conditionné à un contrôle d'accès
https://{Votre_URL}/authentification
Page d'authentification (admin, password)
https://{Votre_URL}/fiche_client/1
Permet de faire un filtre sur un client. Vous pouvez changer la valeur de 1 par le N° du client de votre choix
https://{Votre_URL}/consultation/
Permet de consutler la base de données
https://{Votre_URL}/enregistrer_client
API pour enregistrer un nouveau client
Votre projet consiste à present à concevoir et développer une application de gestion de bibliothèque moderne qui simplifie le processus de prêt et de retour de livres. Les fonctionnalités attendues dans le cadre de ce projet sont les suivantes :
• L’enregistrement et la suppression de livres.
• La recherche de livres disponibles.
• L'emprunt possible d'un livre par un utilisateur.
• La gestion des utilisateurs.
• La gestion des stocks.
Votre travail est de modifier votre code afin de répondre aux besoins définis ci-dessus.
L'application exploitera des API pour interagir avec la base de données et un contrôle d'accès Utilisateur/Administrateur doit être mis en place.
L’application pourra être enrichie avec des fonctionnalités supplémentaires telles que des recommandations de livres, des notifications pour les retours en retard, ou encore des rapports statistiques sur l'utilisation des livres pour améliorer l'expérience utilisateur et la gestion de la bibliothèque.