Aller au contenu

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-ci existe 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