Aller au contenu

Cloner depuis Forgejo

Le code source de PerfShop est hébergé sur une instance Forgejo auto-hébergée (voir Forgejo pour la présentation de l'outil). Forgejo est un fork communautaire de Gitea, entièrement compatible avec les commandes Git standard. Cloner PerfShop se fait exactement comme depuis GitHub ou GitLab — seule l'URL change.

URL du dépôt

L'URL du dépôt dépend du déploiement Forgejo que vous utilisez :

  • Instance Forgejo locale (déployée par PerfShop lui-même) : http://<HOST_IP>:3009/<user>/perfshop.git
  • Instance Forgejo publique : contactez contact@perfshop.io pour obtenir l'URL et les credentials

Pour les environnements de cours, il est fréquent que le formateur héberge sa propre instance Forgejo sur un poste ou un NAS, et distribue l'URL aux étudiants au début du TP.

Clone HTTPS classique

git clone https://forgejo.example.com/perfshop/perfshop.git
cd perfshop

Si le dépôt est privé, Git demande un login / mot de passe au premier appel. Sur Forgejo, vous pouvez aussi utiliser un token d'accès personnel à la place du mot de passe — c'est la méthode recommandée pour scripts et CI.

Clone SSH

Si vous avez ajouté une clé SSH à votre compte Forgejo :

git clone git@forgejo.example.com:perfshop/perfshop.git
cd perfshop

Le format git@host:owner/repo.git est identique à GitHub et GitLab.

Structure du dépôt

Une fois cloné, le dépôt contient ces dossiers principaux :

perfshop/
├── backend/               ← Spring Boot 3.2 + Java 21 + Maven
├── frontend/              ← React 18 + Vite
├── chaos-admin/           ← Panneau formateur + page étudiant (vanilla HTML/JS)
├── monitoring/            ← Dashboard HTML Node.js
├── welcome/               ← Page d'accueil pédagogique (Nginx statique)
├── jmeter/                ← Tests JMeter prêts à l'emploi
├── jmeter-ui/             ← Lanceur web JMeter
├── scripts-ui/            ← Éditeur web de scripts Robot / pytest
├── test-runner/           ← Runner polyglotte Robot Framework + pytest
├── selenium/              ← Configuration Selenium Grid
├── squash-tm/             ← Configuration Squash TM
├── squash-orchestrator/   ← Orchestrateur Squash
├── squash-seed/           ← Seed des projets Squash TM
├── grafana/               ← Dashboards et provisioning Grafana
├── grafana-seed/          ← Seed ACL Grafana
├── prometheus/            ← Configuration Prometheus
├── loki/                  ← Configuration Loki
├── tempo/                 ← Configuration Tempo
├── pyroscope/             ← Configuration Pyroscope
├── promtail/              ← Configuration Promtail
├── vector/                ← Configuration Vector (relay OpenSearch)
├── opensearch/            ← Configuration OpenSearch
├── opensearch-seed/       ← Seed des index et templates
├── forgejo-seed/          ← Seed du dépôt Forgejo interne
├── mkdocs/                ← Cette documentation (source)
├── mkdocs-patch/          ← Patchs et refonte docs (en cours)
├── shell/                 ← Scripts shell utilitaires
├── admin/                 ← Backoffice admin (assets)
├── .env.example           ← Modèle de configuration
├── .env.production        ← Valeurs production (NAS)
├── docker-compose.yml     ← Compose principal (prod NAS + images)
├── docker-compose.desktop.yml  ← Compose Docker Desktop (Windows/macOS)
├── docker-compose.build.yml    ← Compose build local (VPS Unix)
├── build.sh               ← Script de build complet
├── build.bat              ← Équivalent Windows
├── LICENSE                ← AGPL-3.0
├── LICENSE-COMMERCIAL.fr  ← Licence commerciale française
├── LICENSE-COMMERCIAL.en  ← Licence commerciale anglaise
├── THIRD-PARTY-LICENSES   ← Licences des dépendances
└── README.md              ← Vue d'ensemble

Organisation du backend

backend/
├── pom.xml
├── Dockerfile
├── src/main/
│   ├── java/com/perfshop/
│   │   ├── PerfShopApplication.java
│   │   ├── config/            ← Beans Spring, CORS, MVC
│   │   ├── controller/        ← REST controllers
│   │   ├── service/           ← Services métier
│   │   ├── repository/        ← Spring Data JPA repositories
│   │   ├── entity/            ← Entités JPA
│   │   ├── chaos/             ← Services chaos + interceptors
│   │   └── pedagogique/       ← Moteur pédagogique (énigmes, sessions)
│   └── resources/
│       ├── application.yml
│       ├── messages_fr.properties
│       ├── messages_en.properties
│       ├── db/migration-fr/   ← Migrations Flyway V1-V10 consolidées
│       └── i18n/              ← JSON énigmes + logique
└── src/test/                  ← Tests JUnit

Organisation du frontend

frontend/
├── package.json
├── vite.config.js
├── Dockerfile
├── env-inject.sh              ← Injection runtime des VITE_*
├── index.html
├── public/                    ← Assets statiques copiés tels quels
└── src/
    ├── main.jsx               ← Point d'entrée React
    ├── App.jsx                ← Routes et AppShell
    ├── index.css
    ├── chaos-agent.js         ← Chaos Frontend côté navigateur
    ├── pages/                 ← Composants de pages
    ├── pedagogique/           ← Composants du parcours pédagogique
    ├── services/api.js        ← Client API unique
    └── i18n/                  ← I18nContext + dictionnaires FR/EN

Prochaines étapes

Une fois le dépôt cloné, vous pouvez :

  1. Démarrer la stack complète via Docker Compose — voir Lancer Docker Compose
  2. Itérer sur le backend seul — voir Build backend
  3. Itérer sur le frontend seul — voir Build frontend
  4. Contribuer — voir Workflow Git Forgejo

Mise à jour

Pour récupérer les dernières modifications :

cd perfshop
git pull

Si vous travaillez sur une branche locale, faites un git pull --rebase pour éviter les merges inutiles dans l'historique.