150 lines
6.9 KiB
Markdown
150 lines
6.9 KiB
Markdown
# agent_deploy.md
|
||
|
||
Respecte totalement et impérativemment les informations de ce document.
|
||
|
||
---
|
||
|
||
## Contexte
|
||
|
||
Consulte attentivement `lecoffre_node/IA_agents/context.md`.
|
||
Consulte attentivement `lecoffre_node/IA_agents/flux.md`.
|
||
Reste toujours sur la branche git "ext"
|
||
Fait toujours les build via CI avec des images docker pour le docker registry tagées "ext"
|
||
Ne fait jamais de tag git "ext"
|
||
|
||
---
|
||
|
||
## Objectifs
|
||
|
||
Le déploiement se fait depuis le répertoire **`lecoffre_node/`**, en utilisant les scripts présents dans **`scripts/`**.
|
||
Ces scripts doivent évoluer au fil des retours et être améliorés plutôt que dupliqués.
|
||
Arretes toi pour corriger chaque problème rencontré avant de passer à la suite.
|
||
C'est une VM dont assures toi que tous les services écoutent et soient accessibles de l'exétieur via le nom de domaine.
|
||
|
||
Dans **tous les projets** à vérifier un par un dont lecoffre_node:
|
||
|
||
- Analyse le dossier pour bien le comprendre
|
||
- Analyse le code pour bien le comprendre
|
||
- Une branche Git dédiée `ext` existe.
|
||
- Aucun tag Git nommé `ext` n’existe.
|
||
- Les services doivent écouter sur 0.0.0.0 (et non sur 127.0.0.1).
|
||
- Le serveur ngnix gère les url d'accès extérieurs
|
||
- Corrige aussi les erreurs non critiques.
|
||
|
||
Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||
|
||
## Procédure générale
|
||
|
||
### Vérifications initiales par projet
|
||
|
||
1. Vérifier que le dépôt distant est **public** (si possible).
|
||
2. Vérifier l’utilisation des **clés SSH** pour le déploiement Git (idéalement ~/.ssh/id_ed25519)
|
||
3. Vérifier que la branche courante est bien **`ext`**.
|
||
4. Mettre à jour les dépendances et les langages
|
||
5. Vérifier les **variables d’environnement**.
|
||
|
||
### Mise à jour et construction par projet
|
||
|
||
6. Supprime les caches, Optimise le build du projet et build le projet.
|
||
7. Mettre à jour la **documentation**.
|
||
8. Mettre à jour les **tests**.
|
||
9. Mettre à jour les **scripts**.
|
||
10. Vérifier que la présence et le contenu exhaustif et spécifique de :
|
||
- `.gitignore`
|
||
- `.dockerignore`
|
||
- `.cursorignore`
|
||
|
||
### Synchronisations par projet
|
||
|
||
11. Synchroniser les configurations dans `lecoffre_node/conf`.
|
||
Les configurations ngnix doivent toutes être cenralisées dans lecoffre_node/conf/ngninx (à synchroniser par des copies depuis lecoffre_node vers les fichiers cibles qui seront réellement utilisés -sauf dans lecoffre_node ce sont les fichiers de lecoffre_node/conf/ qui sont utilisés-, toujours vérifier la cohérence entre les copie et les fichiers utilisés, à intégrer dans le script existant de synchronisation à mettre à jour). Ne pas faire de liens symboliques pour les confs afin de le maintenir via git et docker.
|
||
12. Synchroniser les logs dans `lecoffre_node/logs` (brancher grafana pour un dashboard par projet)
|
||
|
||
### Sécurité et conformité par projet
|
||
|
||
13. Vérifier que le code ne fournit pas :
|
||
- de **données personnelles**,
|
||
- de **données sensibles exploitables**,
|
||
- de **failles de sécurité**.
|
||
|
||
### Gestion Git par projet
|
||
|
||
14. Pousser toutes les modifications sur la branche Git `ext`.
|
||
15. Supprimer les fichiers distants non suivis par Git.
|
||
|
||
### Analyse et correction par projet
|
||
|
||
16. Analyser les logs.
|
||
17. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||
18. Tester.
|
||
19. Analyser de nouveau les logs.
|
||
20. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||
21. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||
|
||
### Boucle d’amélioration par projet
|
||
|
||
22. Ne pas créer de nouvelles versions de scripts : **améliorer et tester ceux existants**.
|
||
23. Mettre à jour la documentation avec le **retour d’expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||
24. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||
25. Documenter toute **nouvelle connaissance technique ou fonctionnelle** acquise.
|
||
26. Répéter la synchronisation des confs et logs.
|
||
27. Pousser toutes les modifications sur la branche `ext`.
|
||
28. Supprimer à nouveau les fichiers distants non suivis.
|
||
29. Répéter anal
|
||
|
||
### Lancement des services
|
||
|
||
30. Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||
31. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||
32. Tester.
|
||
33. Analyser de nouveau les logs.
|
||
34. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||
35. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||
36. Mettre à jour la documentation avec le **retour d’expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||
37. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||
38. Assures toi d'être à jour pour le service grafana
|
||
39. Assures toi d'avoir bien synchroniser la conf ngnix et relance le serveur ngnix
|
||
40. Vérifie que Loki, Promtail et Grafana sont ok avec des dashboard alimentés
|
||
41. Vérifie qu'il n'y a aucun conflit de ports
|
||
|
||
---
|
||
|
||
## Spécificités Dockerfile par projet
|
||
|
||
Pour tous les projets contenant un **Dockerfile**, avant de pousser sur la branche `ext` :
|
||
|
||
- Supprime les caches
|
||
- Des images Docker avec le tag `ext` existent.
|
||
- Les images Docker ne sont build que via CI qui est la seule à pousser sur le registry ou pour test localement.
|
||
- Aucun Dockerfile ne doit utiliser de clés ssh car aucun repos n'est privé, utiliser HTTPS.
|
||
- Mettre à jour le Dockerfile pour maîtriser les prérequis :
|
||
- inclure `sudo apt update && sudo apt upgrade`,
|
||
- installer `build-essential`, `autoconf`, `automake`, `libtool`, `pkg-config`, `cmake`, `ninja-build`, `clang`, `lldb`, `lld`, `make`, `tree`, `ncdu`, `mc`, `exuberant-ctags`, `cscope`, `vim`, `emacs`, `jq`, `curl`, `sed`, `gawk`, `inetutils-tools`, `iputils-*`, `net-tools`, `iproute2` avec --fix-missing
|
||
- installer python3 (dernière version) et mettre à jour
|
||
- installer go (dernière version) et mettre à jour
|
||
- installer rust (dernière version) et mettre à jour
|
||
- installer `npm` (dernière version), instaler `wscat` (dernière version) et mettre à jour
|
||
- Optimise le build
|
||
- Construire l’image pour test.
|
||
- Vérifier `.dockerignore`.
|
||
- Vérifier à l'absence de dépendances croisées ou dupliquée entre les projets, sinon mutualiser via d'autres projets/docker
|
||
|
||
Après le push sur la branche Git `ext` :
|
||
|
||
- Pousser l’image sur le **tag Docker `ext`** via la CI.
|
||
|
||
---
|
||
|
||
## Autres
|
||
|
||
N'attend pas infiniment le résultat des curls.
|
||
Tests toute les urls publiques depuis l'extérieur avant de dire qu'elles sont OK.
|
||
Veuiller à tester les websockets spécifiquement et les services http(s) spécifiquement aussi.
|
||
Vérifie que tous les imports sont présents.
|
||
Vide les caches avant de construire ou charger les images.
|
||
Déclanche les builds via CI.
|
||
|
||
---
|
||
|
||
Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer.
|
||
Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md |