Forgejo — Git local pédagogique¶
Rôle dans la stack¶
Forgejo est un serveur Git auto-hébergé léger, intégré directement dans la stack PerfShop. Il remplace le GitLab externe pour les scripts de test — les étudiants travaillent sur un dépôt local, sans dépendance réseau externe.
perfshop-forgejo ← serveur Git (SQLite, compatible NAS Synology)
perfshop-forgejo-seed ← init automatique au premier démarrage (restart: no)
Accès¶
| Environnement | URL | Login |
|---|---|---|
| NAS prod | https://perfshop-git.perfshop.io |
forgejo-admin / PerfShop2026! |
| Docker Desktop / build local | http://localhost:3009 |
forgejo-admin / PerfShop2026! |
Comptes¶
| Compte | Rôle | Login | Mot de passe |
|---|---|---|---|
forgejo-admin |
Administrateur de l'instance | forgejo-admin |
PerfShop2026! |
perfshop-ci |
Compte technique CI/CD | perfshop-ci |
perfshop |
Le compte forgejo-admin est créé automatiquement au premier démarrage via les variables
d'environnement GITEA_ADMIN_USERNAME / GITEA_ADMIN_PASSWORD dans le compose.
Le compte perfshop-ci et le dépôt perfshop-tests sont créés par perfshop-forgejo-seed.
Dépôt perfshop-tests¶
Le dépôt principal contient tous les scripts de test :
| Script | Type | Description |
|---|---|---|
smoke-test.robot |
Robot Framework | Vérifie que l'API répond HTTP 200 |
CT-002-prix-coherence.robot |
Robot Framework | Cohérence prix catalogue vs panier (Selenium) |
run-pytest.robot |
Robot Framework | Wrapper générique pour scripts pytest |
test_prix_panier.py |
pytest / Selenium | CT-003 — vérification prix panier end-to-end |
Ajout automatique des scripts
perfshop-forgejo-seed scanne tous les fichiers .robot et .py présents dans
test-runner/scripts/ et les pousse automatiquement dans Forgejo. Tout nouveau script
déposé dans ce dossier sera présent dans Forgejo au prochain redémarrage du seed.
Architecture technique¶
perfshop-forgejo:
image: codeberg.org/forgejo/forgejo:14
volumes:
- forgejo-data:/data ← SQLite + dépôts Git
environment:
- FORGEJO__database__DB_TYPE=sqlite3
- FORGEJO__database__PATH=/data/gitea/forgejo.db
- FORGEJO__security__INSTALL_LOCK=true
- GITEA_ADMIN_USERNAME=forgejo-admin ← création admin au 1er boot
- GITEA_ADMIN_PASSWORD=PerfShop2026!
Chemin SQLite important
Le chemin de la base doit être /data/gitea/forgejo.db (pas /data/forgejo.db).
Forgejo crée le répertoire /data/gitea/ au démarrage — la DB à la racine /data/
provoque une erreur unable to open database file: no such file or directory.
Token API partagé¶
Le seed génère un token API pour perfshop-ci et le stocke dans le volume forgejo-token-data.
Ce volume est partagé en lecture par perfshop-scripts-ui, qui l'utilise pour pousser
les scripts modifiés vers Forgejo.
forgejo-token-data volume
├── écrit par : perfshop-forgejo-seed (/token/forgejo_token)
└── lu par : perfshop-scripts-ui (/token/forgejo_token — read-only)
Seed — comportement idempotent¶
Le seed forgejo-seed/seed.py est conçu pour s'exécuter plusieurs fois sans erreur :
- Si
perfshop-ciexiste déjà → pas de recréation - Si le token existe dans le volume → réutilisation sans recréation
- Si le token du même nom existe dans Forgejo → suppression + recréation (évite le 409)
- Si les scripts existent déjà dans le dépôt → mise à jour via SHA (PUT au lieu de POST)
Intégration avec Squash TM¶
Squash TM se connecte à Forgejo pour cloner les scripts avant chaque exécution.
| Champ Squash | Valeur |
|---|---|
| Type SCM | Git |
| URL | http://perfshop-forgejo:3000/perfshop-ci/ |
| Login | perfshop-ci |
| Mot de passe | Squash2026/* |
| Dépôt | perfshop-tests (branche main) |
Voir Configuration Squash TM pour le guide complet.
Commandes utiles¶
# Vérifier le statut de Forgejo
docker compose logs perfshop-forgejo | tail -20
# Relancer le seed après une modification des scripts
docker compose rm -f perfshop-forgejo-seed
docker compose up -d perfshop-forgejo-seed
docker compose logs -f perfshop-forgejo-seed
# Créer l'admin manuellement (si GITEA_ADMIN_* non fonctionnels)
docker exec -it -u git perfshop-forgejo \
forgejo admin user create \
--username forgejo-admin \
--password 'PerfShop2026!' \
--email forgejo-admin@perfshop.fr \
--admin
# Lister les utilisateurs
docker exec -it -u git perfshop-forgejo forgejo admin user list