Ce projet fonctionne avec une architecture modulaire utilisant des Git Submodules. Le dépôt principal sert à l'orchestration, tandis que le code source réside dans des dépôts séparés pour le frontend et le backend. Les cours sont dans courses.
graph TD;
Main[CodeClique Repo];
Main -->|submodule| Front[frontend Repo];
Main -->|submodule| Back[backend Repo];
Main -->|submodule| Courses[courses Repo];
- CodeClique : Contient la configuration Docker et l'orchestration.
- frontend : Le code du frontend, écrit avec Angular.
- backend : Le code du backend, écrit avec Django.
- courses : Dépôt des cours, écrits en Markdown.
- Prérequis : Docker et Docker Compose.
- Cloner & Initialiser le dépôt et ses sous-modules :
L'option
git clone --recurse-submodules https://github.com/CodeClique-RobertDoisneau/CodeClique.git
--recurse-submodulesest cruciale pour télécharger également le code du frontend et du backend. - Sélectionner les branches :
- Chacun des sous-modules fonctionnent indépendamment. Vous pouvez sélectionner la branche que vous voulez pour chacun.
- Pour changer de branche vous pouvez utiliser
git switch <nom de la branche>dans le dossier du sous-module concerné.
- Lancer les conteneurs :
docker compose watch
- Arrêter les conteneurs :
docker compose down
Pour mettre en production, exécutez les commandes suivantes. Voici ce qu'elles font étape par étape :
-
Récupération du code :
git clone --recurse-submodules https://github.com/CodeClique-RobertDoisneau/CodeClique.git cd CodeCliqueCela clone le dépôt principal et initialise immédiatement les sous-modules frontend et backend.
-
Construire les images :
docker compose -f compose.yaml -f compose.prod.yaml build --no-cache
Combine la configuration de base (
compose.yaml) avec la surcharge de production (compose.prod.yaml) et force une reconstruction complète des images pour garantir que les dernières dépendances sont installées. -
Lancer les conteneurs :
docker compose -f compose.yaml -f compose.prod.yaml up -d
Lance les services en arrière-plan (
-d). -
Arrêter les conteneurs :
docker compose -f compose.yaml -f compose.prod.yaml down
Nous utilisons un modèle de branches strict pour garder l'historique propre et lisible.
main: Branche de production, stable. Ne jamais commit directement dessus.dev: Branche d'intégration principale. Toutes les Pull Requests doivent viserdev.- Branches de travail : Doivent être tirées depuis
devet suivre la convention de nommage.
Nous suivons les spécifications suivantes pour le nommage des commit et des branches:
- Cible : Les PRs doivent être fusionnées dans
dev. - Méthode de Merge : Dans l'optique d'une meilleure compréhension de l'historique pour des futurs contributeurs, nous préférons faire des Merge Commit (sans fast-forward). Les Squash and Merge commits sont aussi autorisés mais moins idéaux.
- Validation : Pas de CI/CD automatique pour le moment. Une revue de code est obligatoire avant tout merge.
