Software bots (Louis FLÉCHAIRE - Paul JOUAN - Tanguy MAIRE AMIGOT - Ones CHERIF)#47
Open
Teris35740 wants to merge 4 commits into
Open
Software bots (Louis FLÉCHAIRE - Paul JOUAN - Tanguy MAIRE AMIGOT - Ones CHERIF)#47Teris35740 wants to merge 4 commits into
Teris35740 wants to merge 4 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DevOps and bots : PR
Authors : Louis FLÉCHAIRE - Paul JOUAN - Tanguy MAIRE AMIGOT - Ones CHERIF
Contexte
Dans le cadre du module DevOps, nous avons dus configuré et intégré différents Software Bots afin d'automatiser les tâches répétitives, d'améliorer notre flux de travail et d'en apprendre davantage sur leur fonctionnement. L'objectif principal de ces ajouts est d'assurer une intégration continue fiable, de maintenir la sécurité de nos dépendances à jour et d'automatiser la communication.
Objectifs
L’objectif de cette automatisation est de :
Ces outils permettent de mettre en place une chaîne d’intégration continue (CI/CD) proche des pratiques utilisées dans les environnements professionnels.
Fonctionnement global des bots
Les différents bots travaillent ensemble dans une chaîne automatisée :
Cette automatisation permet de sécuriser les mises à jour tout en réduisant le travail manuel des développeurs.
Nos Bots DevOps
Ce document résume les différents robots (Software Bots) mis en place sur notre projet afin d’automatiser plusieurs tâches importantes du cycle de développement logiciel.
1. Le Bot de mise à jour (Dependabot)
Fichier :
.github/dependabot.ymlObjectif
Dependabot automatise la maintenance des dépendances du projet.
Dans un projet moderne, les librairies JavaScript ou Java évoluent constamment :
Sans maintenance régulière, le projet accumule de la dette technique et peut devenir vulnérable.
Ce que nous avons mis en place
Nous avons créé un fichier de configuration YAML permettant à GitHub d’activer automatiquement Dependabot sur le projet.
Le bot surveille :
npm),maven).Configuration utilisée
Explication de la configuration YAML
package-ecosystemDéfinit le gestionnaire de dépendances surveillé :
npmpour Angular / JavaScript,mavenpour Java.directoryIndique le dossier du projet à analyser :
Ici, Dependabot analyse toutes les dépendances présentes dans le Frontend.
scheduleDéfinit la fréquence des vérifications automatiques.
GitHub vérifie automatiquement les mises à jour chaque semaine.
open-pull-requests-limitLimite le nombre de Pull Requests ouvertes automatiquement.
Cela évite d’avoir trop de mises à jour simultanées.
Ce que le bot fait
Dependabot analyse automatiquement les dépendances du Front-End et du Back-End.
S’il détecte :
il crée automatiquement une Pull Request contenant la mise à jour nécessaire.
Son utilité dans une démarche DevOps
Dependabot joue un rôle essentiel dans la maintenance continue du projet :
Couplé à la CI/CD, chaque mise à jour proposée est automatiquement testée avant intégration.
2. Le Bot de Vérification (CI/CD)
Fichier :
.github/workflows/ci.ymlObjectif
Ce workflow met en place une chaîne d’intégration continue (Continuous Integration).
À chaque modification du projet, GitHub lance automatiquement plusieurs étapes permettant de vérifier que l’application fonctionne correctement.
Déclenchement automatique du workflow
Le workflow se lance automatiquement lorsqu’un développeur :
mainoumaster,Configuration utilisée
Cette automatisation garantit que chaque modification importante est vérifiée avant intégration.
Structure du workflow
Nom du workflow
Permet d’identifier facilement le workflow dans l’onglet Actions de GitHub.
Environnement d’exécution
GitHub crée automatiquement une machine virtuelle Linux temporaire pour exécuter les étapes du pipeline.
Étapes principales du workflow
1. Récupération du code
Cette étape clone automatiquement le dépôt GitHub dans la machine virtuelle.
2. Setup du Frontend Angular
Cette étape installe Node.js version 14 afin de pouvoir compiler le Frontend Angular.
3. Build du Frontend
Le bot :
4. Setup du Backend Java
Cette étape installe Java 11 avec la distribution Temurin afin de compiler l’API Java.
5. Build du Backend
Le bot compile automatiquement le Backend Java grâce à Maven.
La commande :
permet :
L’option :
désactive temporairement les tests pendant la compilation.
Ce que le bot fait
À chaque modification importante du projet, le bot :
Si une erreur apparaît, GitHub bloque l’intégration et affiche l’échec dans l’onglet Actions.
Son utilité dans une démarche DevOps
Ce bot agit comme un filet de sécurité automatique :
3. Le Bot de Notification (Discord)
Où ?
.github/workflows/ci.ymlDISCORD_WEBHOOK)Objectif
Ce système permet d’envoyer automatiquement des notifications sur Discord après l’exécution de la CI/CD.
L’objectif est de tenir l’équipe informée en temps réel de l’état du projet.
Configuration utilisée
Explication de la configuration
if: always()Cette instruction force l’envoi du message Discord même si le build échoue.
Ainsi, l’équipe est toujours informée du résultat.
DISCORD_WEBHOOKLe Webhook Discord est stocké dans les Secrets GitHub afin de sécuriser les informations sensibles.
Cela évite d’exposer le lien Discord publiquement dans le code source.
${{ github.actor }}Affiche automatiquement le nom du développeur ayant déclenché le workflow.
${{ job.status }}Affiche automatiquement le résultat du pipeline :
successfailureCe que le bot fait
Une fois le workflow terminé :
Son utilité dans une démarche DevOps
Ce bot améliore :
Les notifications automatiques sont très utilisées dans les pipelines DevOps professionnels.
4. Le Bot de gestion des Releases (Release Drafter)
Fichiers :
.github/workflows/release-drafter.yml.github/release-drafter.ymlObjectif
Release Drafter automatise la préparation des notes de version (Changelog).
L’objectif est de garder une trace claire des évolutions du projet sans devoir rédiger manuellement chaque release.
Workflow GitHub Actions
Déclenchement
Le workflow se lance automatiquement après chaque mise à jour importante du projet.
Permissions GitHub
Ces permissions permettent au bot :
Configuration du Release Drafter
Nom automatique des versions
Les versions sont générées automatiquement selon un format standardisé.
Catégories automatiques
Les Pull Requests sont automatiquement classées selon leurs labels GitHub.
Gestion des dépendances et sécurité
Les mises à jour Dependabot apparaissent automatiquement dans une catégorie dédiée.
Format des changements
Chaque modification est automatiquement affichée avec :
Template du changelog
Release Drafter génère automatiquement une release lisible et structurée.
Ce que le bot fait
À chaque fusion de Pull Request sur
main:Son utilité dans une démarche DevOps
Ce bot professionnalise la gestion des versions :
Cela facilite également la maintenance et le suivi du projet sur le long terme.
Rôle des Software Bots dans une démarche DevOps
Dans une approche DevOps, les Software Bots jouent un rôle essentiel dans l’automatisation du cycle de développement logiciel.
Le DevOps repose principalement sur trois grands objectifs :
Les bots permettent justement d’atteindre ces objectifs en exécutant automatiquement certaines tâches importantes sans intervention manuelle.
Pourquoi les Software Bots sont importants ?
Dans un projet classique sans automatisation, les développeurs doivent souvent :
Ces tâches prennent du temps et augmentent les risques d’oubli ou d’erreur humaine.
Les bots DevOps permettent donc :
Automatisation et Intégration Continue
Les bots sont au cœur des pratiques modernes d’intégration continue (Continuous Integration).
À chaque modification du code :
Cette automatisation garantit qu’une nouvelle modification ne casse pas le projet principal.
Maintenance et Sécurité
Les bots comme Dependabot jouent également un rôle important dans la cybersécurité du projet.
Ils permettent :
Dans les projets modernes contenant de nombreuses bibliothèques externes, cette surveillance automatique devient essentielle.
Collaboration et Communication
Les bots améliorent aussi la communication au sein d’une équipe de développement.
Grâce aux notifications automatiques :
Cela réduit les temps de correction et améliore l’organisation du travail.
Standardisation et Professionnalisation
Les bots permettent également de standardiser les processus :
Cette standardisation est très importante dans les environnements professionnels car elle améliore :
Conclusion
La mise en place de ces bots nous a permis de construire une première chaîne DevOps automatisée autour du projet.
Grâce à GitHub Actions, Dependabot, Discord Webhooks et Release Drafter, nous avons automatisé :
Cette approche améliore :