Skip to content

Commit cf1b238

Browse files
Cybertristclaude
andcommitted
build: intégration continue, Dependabot et identifiants hors du code
Aucun dépôt de l'organisation n'avait de CI. La WebApp portait pourtant 22 fichiers de test Jest et une configuration ESLint que rien n'exécutait. Les firmwares se compilent désormais à chaque pull request. Les identifiants qui étaient en dur dans les sources ESP32, mot de passe du portail et secret de module, passent dans include/env.h, déjà ignoré par git. Un env.h.example versionné dit quoi y mettre. Sans ce fichier le firmware ne compile pas, ce qui est voulu : un oubli se voit au build plutôt qu'en production. La procédure d'installation de GuessTheCoaster échouait à sa quatrième ligne, le .env.example qu'elle demandait de copier n'existait pas. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Cbvd7anoy6J7n9Aguf1wk
1 parent a8f6b95 commit cf1b238

5 files changed

Lines changed: 70 additions & 5 deletions

File tree

‎.github/dependabot.yml‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: 2
2+
3+
# PlatformIO résout ses bibliothèques lui-même, Dependabot ne sait pas les
4+
# suivre. Seules les actions du workflow sont surveillées ici.
5+
updates:
6+
- package-ecosystem: github-actions
7+
directory: "/"
8+
schedule:
9+
interval: monthly

‎.github/workflows/build.yml‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Build
2+
3+
# Compile le firmware à chaque pull request. Le dépôt ne versionne pas
4+
# include/env.h : le workflow le génère à partir de l'exemple, avec des
5+
# valeurs factices. On vérifie que le code compile, pas qu'il se connecte.
6+
on:
7+
push:
8+
branches: [main, develop]
9+
pull_request:
10+
branches: [main, develop]
11+
12+
jobs:
13+
platformio:
14+
name: Compilation ESP32
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.12'
22+
23+
- name: Installer PlatformIO
24+
run: pip install --upgrade platformio
25+
26+
- name: Générer un env.h de compilation
27+
run: |
28+
set -e
29+
cp include/env.h.example include/env.h
30+
sed -i 's|<mot de passe du portail, 8 caracteres minimum>|motdepassecompilation|' include/env.h
31+
sed -i 's|<secret du module>|secretdecompilation|' include/env.h
32+
33+
- name: Compiler
34+
run: pio run

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ Le contrôleur envoie le nom de la piste à jouer, le module répond une fois la
4343

4444
<img src="docs/sections/s04.png" alt="04 Mise en service" width="100%">
4545

46+
Copiez d'abord [`include/env.h.example`](include/env.h.example) en `include/env.h` et renseignez-le : identifiants du portail de secours, identité du module et son secret. Ce fichier n'est pas versionné, et sans lui le firmware ne compile pas.
47+
4648
Nécessite [PlatformIO](https://platformio.org/) dans Visual Studio Code.
4749

4850
```bash

‎include/env.h.example‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copiez ce fichier en `env.h` et renseignez les valeurs.
2+
//
3+
// `env.h` est ignoré par git : les identifiants ne doivent jamais partir
4+
// dans le dépôt. Sans ce fichier, le firmware ne compile pas, et c'est
5+
// voulu : un oubli se voit au build plutôt qu'en production.
6+
7+
#ifndef ENV_H
8+
#define ENV_H
9+
10+
// Point d'accès ouvert au premier démarrage, le temps de donner au module
11+
// le réseau qu'il doit rejoindre.
12+
#define ESP_WIFI_SSID "WifiManager-MicroCoaster"
13+
#define ESP_WIFI_PASSWORD "<mot de passe du portail, 8 caracteres minimum>"
14+
15+
// Identité du module auprès du serveur. Le mot de passe est vérifié en base
16+
// par `validateModuleAuth` : il doit correspondre à l'entrée du module dans
17+
// la table `modules` de la WebApp.
18+
#define MC_MODULE_ID "MC-0001-AP"
19+
#define MC_MODULE_PASSWORD "<secret du module>"
20+
#endif

‎src/main.cpp‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
// CONFIGURATION PRINCIPALE
2121
// ========================================
2222

23-
// Configuration WiFi (identifiants du point d'accès de secours)
24-
#define ESP_WIFI_SSID "WifiManager-MicroCoaster"
25-
#define ESP_WIFI_PASSWORD "123456789"
23+
// Identifiants du portail de secours et du module.
24+
// Voir include/env.h.example : env.h n'est pas versionne.
25+
#include "env.h"
2626

2727
// Instance du gestionnaire WiFi intelligent avec portail captif
2828
AyresWiFiManager wifi;
@@ -36,8 +36,8 @@
3636
const char* server_fingerprint = ""; // Ex: "AA BB CC DD EE FF 00 11 22 33 44 55 66 77 88 99 AA BB CC DD"
3737

3838
// Identifiants uniques du module Audio Player
39-
const String MODULE_ID = "MC-0001-AP"; // ID unique du module (MicroCoaster-Audio Player)
40-
const String MODULE_PASSWORD = "KKRBR8uOcijWdIxd3IbMU5BOF6kVFRIW"; // Mot de passe sécurisé pour authentification
39+
const String MODULE_ID = MC_MODULE_ID;
40+
const String MODULE_PASSWORD = MC_MODULE_PASSWORD;
4141

4242
// ========================================
4343
// VARIABLES GLOBALES

0 commit comments

Comments
 (0)