|
2 | 2 | <a href="https://libertech-fr.github.io/sesame-daemon" target="blank"><img src="./static/sesame-logo.svg" width="200" alt="Sesame Logo" /></a> |
3 | 3 | </p> |
4 | 4 | <p align="center">Sésame daemon - Synchronisation d'Identités Multi-sources</p> |
5 | | -<p align="center"> |
6 | | - <img alt="GitHub all releases" src="https://img.shields.io/github/downloads/libertech-fr/sesame-daemon/total"> |
7 | | - <img alt="GitHub" src="https://img.shields.io/github/license/libertech-fr/sesame-daemon"> |
8 | | - <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/libertech-fr/sesame-daemon"> |
9 | | - <a href="https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch"><img alt="GitHub contributors" src="https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml/badge.svg"></a> |
10 | | -</p> |
11 | 5 | <br> |
12 | 6 |
|
13 | | -# Sesame - Un outil de synchronisation des comptes utilisateur |
14 | 7 | ## Description |
15 | 8 |
|
16 | | -Daemon pour Sesame. Le demon est chargé d'executer les backends sur les ordres de l'orchestrator |
17 | | - |
18 | | -## Architecture du projet |
19 | | -[Figma](https://www.figma.com/file/OplQ0tHFHS5rFz5K6OCgEd/Sesame?type=whiteboard&node-id=0%3A1&t=ZiPEDwJPp0id8frN-1) |
20 | | - |
21 | | -## Installation developpement |
22 | | -un environnement de developpement est donné en docker |
23 | | - |
24 | | -Copiez le dossier ./backends.example dans ./backends et ajouter vos backends dans ce dossier |
25 | | - |
26 | | -### Docker |
27 | | -#### contruisez l'image : |
28 | | -dans ./docker |
29 | | -````bash |
30 | | -docker-compose build |
31 | | -```` |
32 | | -Puis lancer le |
33 | | -````bash |
34 | | -docker-compose up -d |
35 | | -```` |
36 | | -#### Installation |
37 | | -````bash |
38 | | -docker exec sesame-daemon yarn |
39 | | -```` |
40 | | -#### Lancez l'application en mode dev ou debug |
41 | | -copier .env.example en .env |
42 | | -editer et regler les variable d'environnements |
| 9 | +Le **Sesame daemon** est le worker d’exécution de Sésame. Il se connecte à **Redis** et écoute une **queue BullMQ** (par défaut `sesame`). Lorsqu’un job arrive, il exécute l’action demandée via un **backend** (script/exécutable) présent dans un répertoire de backends. |
| 10 | + |
| 11 | +## Architecture (vue rapide) |
| 12 | + |
| 13 | +- **Daemon**: application NestJS lancée en *application context* (pas d’API HTTP), qui démarre un `Worker` BullMQ. |
| 14 | +- **Redis**: broker BullMQ (obligatoire). |
| 15 | +- **Backends**: dossiers contenant un `config.yml` décrivant le backend + les exécutables associés. |
| 16 | + |
| 17 | +Ressource: [Figma](https://www.figma.com/file/OplQ0tHFHS5rFz5K6OCgEd/Sesame?type=whiteboard&node-id=0%3A1&t=ZiPEDwJPp0id8frN-1) |
| 18 | + |
| 19 | +## Prérequis |
| 20 | + |
| 21 | +- **Node.js** (CI en Node 18) |
| 22 | +- **Yarn** (le repo est en Yarn v1) |
| 23 | +- **Redis** accessible depuis le daemon |
| 24 | + |
| 25 | +## Configuration (variables d’environnement) |
| 26 | + |
| 27 | +Les variables effectivement utilisées par le daemon sont dans `src/config.ts`. |
| 28 | + |
| 29 | +- **`SESAME_REDIS_URI`**: URI Redis (défaut `redis://localhost:6379/0`) |
| 30 | +- **`SESAME_NAME_QUEUE`**: nom de la queue BullMQ (défaut `sesame`) |
| 31 | +- **`SESAME_BACKENDS_PATH`**: chemin vers le répertoire des backends (défaut `./backends` à côté du code) |
| 32 | +- **`SESAME_LOG_LEVEL`**: niveau de logs (défaut `info`) |
| 33 | +- **`SESAME_BACKENDS_EXECUTOR_SHELL`**: configuration “shell” d’exécution (défaut: `true`) |
| 34 | + |
| 35 | +Exemple minimal (copie de `.env.example`) : |
| 36 | + |
| 37 | +```bash |
| 38 | +SESAME_REDIS_URI=redis://localhost:6379/0 |
| 39 | +``` |
| 40 | + |
| 41 | +## Backends |
| 42 | + |
| 43 | +### Structure attendue |
| 44 | + |
| 45 | +Le daemon **scanne récursivement** `SESAME_BACKENDS_PATH` et charge **uniquement** les fichiers `config.yml`. |
| 46 | + |
| 47 | +Règles de chargement: |
| 48 | +- le YAML doit contenir au minimum **`_version`** et **`name`** |
| 49 | +- si `path` n’est pas défini, il est automatiquement fixé au **dossier du `config.yml`** |
| 50 | +- si une config est invalide, le daemon **s’arrête** (exit 1) |
| 51 | + |
| 52 | +### Exemple de backends |
| 53 | + |
| 54 | +Le dépôt fournit des exemples dans `backends.example/`. |
| 55 | + |
| 56 | +Pour démarrer rapidement: |
| 57 | + |
| 58 | +```bash |
| 59 | +cp -R ./backends.example ./backends |
| 60 | +``` |
| 61 | + |
| 62 | +Puis ajoutez vos backends dans `./backends` (ou pointez `SESAME_BACKENDS_PATH` ailleurs). |
| 63 | + |
| 64 | +## Démarrage en développement (local) |
| 65 | + |
| 66 | +1) Installer: |
| 67 | + |
| 68 | +```bash |
| 69 | +yarn install |
| 70 | +``` |
| 71 | + |
| 72 | +2) Démarrer Redis (ex: en local sur `6379`) puis lancer le daemon: |
| 73 | + |
| 74 | +```bash |
| 75 | +export SESAME_REDIS_URI="redis://localhost:6379/0" |
| 76 | +yarn start:dev |
| 77 | +``` |
| 78 | + |
| 79 | +## Environnement de dev via Docker (Makefile) |
| 80 | + |
| 81 | +Le dépôt contient un `Makefile` qui fournit un parcours “container + network dev”. |
| 82 | + |
| 83 | +- **Démarrer Redis + Mongo (si besoin)**: |
| 84 | + |
| 85 | +```bash |
| 86 | +make dbs |
| 87 | +``` |
| 88 | + |
| 89 | +- **Construire l’image**: |
| 90 | + |
| 91 | +```bash |
| 92 | +make build |
| 93 | +``` |
| 94 | + |
| 95 | +- **Installer les dépendances dans le container**: |
| 96 | + |
| 97 | +```bash |
| 98 | +make install |
43 | 99 | ``` |
44 | | -# Host Redis (defaut "redis://localhost:6379/0") |
45 | | -REDIS_URL=redis://localhost:6379/0 |
46 | 100 |
|
47 | | -# Chemin des backends par defaut le repertoire backends du projet |
48 | | -#BACKENDS_PATH= |
| 101 | +- **Lancer le daemon en watch mode**: |
| 102 | + |
| 103 | +```bash |
| 104 | +make dev |
| 105 | +``` |
49 | 106 |
|
50 | | -# nom de la queue bullMQ (defaut: 'backend') |
51 | | -#NAME_QUEUE= |
| 107 | +## Tests |
52 | 108 |
|
53 | | -# Nom ou chemin du binaire d'exécution du shell (defaut: true) |
54 | | -#BACKENDS_EXECUTOR_SHELL= |
| 109 | +```bash |
| 110 | +yarn test |
55 | 111 | ``` |
56 | | -Vous etes pret |
57 | | -````bash |
58 | | -docker exec sesame-daemon yarn start:dev |
59 | | -```` |
60 | 112 |
|
61 | | -### complation du daemon en un executable |
62 | | -Générer une nouvelle release : [ici](https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch) |
63 | | -- via le bouton run workflow |
| 113 | +## Build / packaging |
64 | 114 |
|
65 | | -## License |
| 115 | +Le workflow de release génère un binaire via `pkg` (ex: `sesame-daemon-linux`) et des paquets `.deb` / `.rpm`. |
| 116 | + |
| 117 | +- **Release GitHub (binaire + paquets)**: déclencher le workflow “Release” via GitHub Actions: |
| 118 | + - `https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch` |
| 119 | + |
| 120 | +### Service systemd (paquets) |
| 121 | + |
| 122 | +Les paquets installent un service systemd `sesame-daemon` qui exécute `/usr/bin/sesame-daemon` avec: |
| 123 | +- `WorkingDirectory=/var/lib/sesame-daemon` |
| 124 | +- un fichier d’environnement optionnel: `/etc/default/sesame-daemon` |
| 125 | + |
| 126 | +Exemple de variables (fichier `/etc/default/sesame-daemon`) : |
| 127 | + |
| 128 | +```bash |
| 129 | +SESAME_LOG_LEVEL=INFO |
| 130 | +SESAME_REDIS_URI=redis://localhost:6379/0 |
| 131 | +SESAME_BACKENDS_PATH=/var/lib/sesame-daemon/backends |
| 132 | +``` |
66 | 133 |
|
| 134 | +## Licence |
67 | 135 |
|
| 136 | +Voir `LICENSE`. |
0 commit comments