Clone
1
Installation Developpement
Gato edited this page 2026-05-25 07:16:42 +02:00

Installation Développement

Cette page décrit comment démarrer l'environnement de développement local pour le projet Bonsai API.

Prérequis

Outil Version minimale
Java JDK 25
Docker + Docker Compose 24+
Gradle 8+ (wrapper inclus dans le dépôt)

Cloner le dépôt

git clone https://git.goutailler-olivier.com/bonsai/bonsai-api.git
cd bonsai-api

Option A — Hot-reload avec Docker Compose (recommandé)

Cette option monte les sources depuis l'hôte dans le conteneur. Gradle détecte les changements et relance automatiquement l'application.

docker compose -f docker-compose.dev.yml up --build
  • L'API est disponible sur http://localhost:8080
  • PostgreSQL est disponible sur localhost:5432
  • Le cache Gradle est conservé dans un volume dédié (gradle_home) : le premier build télécharge les dépendances, les suivants sont rapides

Pour arrêter et tout supprimer (y compris les volumes) :

docker compose -f docker-compose.dev.yml down -v

Option B — Gradle en local + PostgreSQL Docker

Démarrer uniquement la base de données :

docker compose up db -d

Lancer l'API avec le wrapper Gradle :

./gradlew bootRun

Flyway applique automatiquement la migration V1__init.sql au premier démarrage.


Variables d'environnement

En développement, les valeurs par défaut sont utilisées automatiquement (définies dans src/main/resources/application.yml). Aucun .env n'est nécessaire.

Variable Valeur locale Description
DATASOURCE_URL jdbc:postgresql://localhost:5432/bonsai URL JDBC
DATASOURCE_USERNAME bonsai Utilisateur PostgreSQL
DATASOURCE_PASSWORD bonsai Mot de passe PostgreSQL
KEYCLOAK_JWKS_URI https://auth.goutailler-olivier.com/realms/bonsai/protocol/openid-connect/certs Endpoint JWKS
CORS_ALLOWED_ORIGIN_PROD https://bonsai.goutailler-olivier.com Origine CORS de prod

L'origine http://localhost:4200 est toujours autorisée en CORS (front Angular en dev).


Documentation de l'API

Swagger UI est disponible à l'adresse suivante une fois l'API démarrée :

http://localhost:8080/swagger-ui.html

La spécification OpenAPI (JSON) est accessible sur :

http://localhost:8080/v3/api-docs

Lancer les tests

./gradlew test

Le rapport HTML est généré dans build/reports/tests/test/index.html.


Structure du projet

src/main/java/fr/bonsai/api/
├── domain/model/          # Entités métier (sans dépendance Spring)
├── application/
│   ├── port/in/           # Interfaces des use cases
│   ├── port/out/          # Interface du repository
│   └── usecase/           # Logique métier (IssueService)
├── adapter/
│   ├── in/web/            # Controllers REST et DTOs
│   └── out/persistence/   # Entités JPA et adaptateur repository
└── config/                # Configuration Spring (Security, CORS, Beans)

Sécurité

Toutes les routes nécessitent un token JWT Bearer valide émis par Keycloak :

  • Realm : bonsai
  • Client : bonsai-webapp
  • Issuer : https://auth.goutailler-olivier.com/realms/bonsai

Pour tester sans Keycloak local, utiliser l'instance de production comme fournisseur JWKS (valeur par défaut).

Authorization: Bearer <token>

Endpoints disponibles

Méthode Route Description
GET /issues Liste toutes les issues
POST /issues Crée une issue
PUT /issues/{id} Remplace une issue
DELETE /issues/{id} Supprime une issue (204)

CI/CD

Le pipeline Gitea Actions (.gitea/workflows/) construit l'image Docker et la pousse sur le registre interne à chaque push sur main. Le runner ubuntu-latest est fourni par le conteneur act_runner de la stack Gitea.