socle-technique et Spring
Bonnes pratiques relatives aux configurations en environnement de développement
- Les différents profils (Promethée, Spring)
- Bonnes pratiques pour les profils Spring
- Cas particuliers de SaaS Google (Pubsub)
- Questions / Réponses
N'hésitez pas à poser des questions au fil de la présentation
Sommaire
En environnement de développement, il convient d'utiliser le profil dev
Pré-configuré via java-development
Dans la CI, le profil Promethée utilisé est gcp-cd, héritant de gcp-staging
Profils Promethée
Si fichier application-dev.yml trouvé, ses clés seront prises en compte / surchargeront celles de application.yml
Si pas de fichier application-dev.yml => Utilisation des clés définies dans application.yml
Défini via configuration "-Dspring.profiles.active"
Profils Spring
# Configuration au lancement de votre application
-Dspring.profiles.active=dev# Si le "application.yml" contient la configuration suivante :
spring:
profiles:
active: @springboot.profile.name@
# La valeur définie dans le profil Maven courant sera prise, sinon defaultPar la valeur du profil Maven via l'héritage du pom-ciweb
Requiert un mvn compile à minima avant le démarrage de l'application Spring Boot
Directement depuis votre Intellij (Ultimate)
En renseignant "dev" dans le champ "Active profiles" de votre Run configuration "Spring Boot"
Exemples : Profil Spring de developpement
---
application:
name: mon-api-java-1
version: "@project.version@"
description: "@project.description@"
ma-super-cle-de-conf: "valeur par défault (release)"
server:
servlet:
context-path: /mon-api-java-1
spring:
application:
name: "${application.name}"
version: "${application.version}"
cloud:
promethee:
domain: environment
config:
import: prometheeserver:${confpj.promethee.v2.url}
# CODE
---
application:
ma-super-cle-de-conf: "Valeur en developpement"
server:
port: 8090
application.yml
application-dev.yml
Exemples : Avec Promethee
---
application:
name: mon-api-java-1
version: "@project.version@"
description: "@project.description@"
ma-super-cle-de-conf: "${confpj.mon-api-java-1.cle-de-conf}"
server:
servlet:
context-path: /mon-api-java-1
spring:
application:
name: "${application.name}"
version: "${application.version}"
cloud:
promethee:
domain: environment # Le domain dans Promethee
profile: ${confpj.promethee.v2.profile} # Valeur du profil utilisé dans le domain, dev par défaut en local
config:
import: prometheeserver:${confpj.promethee.v2.url}
# CODE
Pas de fichier spécifique, la valeur est conditionnée à celle trouvée dans Promethée

Cas particuliers de SaaS Google (Pubsub)
---
application:
name: mon-api-java-1
version: "@project.version@"
description: "@project.description@"
server:
servlet:
context-path: /mon-api-java-1
spring:
application:
name: "${application.name}"
version: "${application.version}"
cloud:
gcp:
credentials:
# En staging/production via secrets monté
location: file:<FICHIER_SERVICE_ACCOUNT_JSON>
project-id: production-project
promethee:
domain: environment
config:
import: prometheeserver:${confpj.promethee.v2.url}
# CODE
---
spring:
cloud:
gcp:
project-id: dev-project-id
pubsub:
# host:port de l'émulateur lancé via Gcloud CLI
emulator-host: localhost:8085
Questions / Réponses
best_practices_spring_profiles_and_promethee
By ideveseleer
best_practices_spring_profiles_and_promethee
- 30