API backend de RIEAU
-
Java 11, par exemple AdoptOpenJDK 11 installé depuis sdkman.
-
Adaptez les variables à l'environnement de
dev
:
cp src/main/resources/application-{env}.properties.sample src/main/resources/application-{env}.properties
- Activez l'environnement de
dev
en ajoutant:
-Pdev
Ce dernier bouchonne la persistence des fichiers en filesystem, des données en mémoire dans une base H2 et l'authentification est basique avec Spring security.
Sinon, par défaut c'est l'environnement d'intégration qui est activé. Ce dernier intègre la persistence des fichiers avec un serveur Minio, des données avec une base PostgreSQL et l'authentification avec un serveur Oauth2/OIDC Keycloak. Ces derniers doivent être lancés en préalable avec une stack docker-compose en phase de développement:
docker-compose -f src/main/docker/docker-compose.yml up --build -d
Exporter le realm de test avec les users:
docker exec -it keycloak keycloak/bin/standalone.sh \
-Djboss.socket.binding.port-offset=100 \
-Dkeycloak.migration.action=export \
-Dkeycloak.migration.provider=dir \
-Dkeycloak.migration.realmName=rieau \
-Dkeycloak.migration.usersExportStrategy=REALM_FILE \
-Dkeycloak.migration.dir=/tmp/export
Importer le realm de test avec les users:
docker exec -it keycloak keycloak/bin/standalone.sh \
-Djboss.socket.binding.port-offset=100 \
-Dkeycloak.migration.action=import \
-Dkeycloak.migration.provider=singleFile \
-Dkeycloak.migration.file=/tmp/realm-rieau-test.json \
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
- Maven 3.6+, par exemple installé depuis sdkman.
- Spring boot CLI 2.1+, par exemple installé depuis sdkman.
./mvnw spring-boot:run
- Lancez tous les tests:
./mvnw clean test -Pdev
- Lancez une seule classe de test:
./mvnw clean test -Dtest=<nomdelaclasse> -Pdev
- Lancez une seule méthode de test:
./mvnw clean test -Dtest=<nomdelaclasse>#<nomdelamethode> -Pdev
Prérequis: la stack lancée avec docker-compose.
Attention geo.api.gouv.fr est limité à 10 appels/s/IP!
Pour désactiver la vérification des communes, ajouter:
-Dapp.communes-url=
- Lancez tous les tests sans échec:
./mvnw clean integration-test -Dapp.communes-url=
avec échec mais sans l'analyse des vulnérabilités:
./mvnw clean verify -Dapp.communes-url= -Dskip.check=true
- Lancez une seule classe de test:
./mvnw clean integration-test -Dit.test=<nomdelaclasse>IT -Dapp.communes-url=
- Lancez une seule méthode de test:
./mvnw clean integration-test -Dit.test=<nomdelaclasse>IT#<nomdelamethode> -Dapp.communes-url=
Prérequis: la stack lancée avec docker-compose.
KC_REALM=rieau
KC_USERNAME=jean.martin
KC_PASSWORD=
KC_CLIENT=rieau
KC_URL="http://localhost:8080/auth"
KC_RESPONSE=$( \
curl -k -v \
-d "username=$KC_USERNAME" \
-d "password=$KC_PASSWORD" \
-d 'grant_type=password' \
-d "client_id=$KC_CLIENT" \
"$KC_URL/realms/$KC_REALM/protocol/openid-connect/token" \
| jq .
)
KC_ACCESS_TOKEN=$(echo $KC_RESPONSE| jq -r .access_token)
KC_ID_TOKEN=$(echo $KC_RESPONSE| jq -r .id_token)
KC_REFRESH_TOKEN=$(echo $KC_RESPONSE| jq -r .refresh_token)
curl -k -H "Authorization: Bearer $KC_ACCESS_TOKEN" -v http://localhost:5000/dossiers
./mvnw clean check -Pdev -DskipTests
Avec le plugin maven-release, par exemples:
Tag git et pom puis update de la dev version dans pom:
./mvnw --batch-mode -Dtag=v1.0.0 -Ddry.run=true -Dskip.check=true release:prepare \
-DreleaseVersion=1.0.0 \
-DdevelopmentVersion=1.1.0-SNAPSHOT
Ajout de -DdryRun=true
pour tester seulement, puis mvn release:clean
.
Update seulement de la dev version dans pom:
mvn --batch-mode release:update-versions -DdevelopmentVersion=1.1.0-SNAPSHOT
- Build:
./mvnw clean package -DskipTests -DskipITs -Dskip.check=true
mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
docker build -t tristanrobert/rieau-api -f src/main/docker/Dockerfile .
- Run:
docker run -p 5000:5000 --name rieau-api -d -t tristanrobert/rieau-api
Il est possible de changer le port http du serveur à l'éxécution en ajoutant -e SERVER_PORT=5000
. Par défaut, il est égal à 5000
.
Il est possible de changer à l'exécution les variables d'environnement (cf. rieau-infra).
- Scan des vulnérabilités:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
-v $HOME/.trivy/caches:/root/.cache/ knqyf263/trivy tristanrobert/rieau-api:latest
- Publier:
Tagger une version semver et pousser la sur le registry:
docker tag tristanrobert/rieau-api:[digestid] tristanrobert/rieau-api:[semver]
docker push tristanrobert/rieau-api:[semver]
Les sources des modèles PlantUML sont dans src/main/docs
.
Pour prévisualiser, lancer un serveur de rendu:
docker run -d -p 8080:8080 plantuml/plantuml-server:tomcat