web-dev-qa-db-fra.com

Comment demander au serveur Spring Cloud Config de vérifier la configuration d'une branche spécifique?

J'ai le cloud print config application.yml suivant: 

spring: 
  application: 
    name: configserver
  cloud: 
    config: 
      server: 
        git: 
          uri: https://[email protected]/xyz/microservices-configs.git
          username: xyz
          password: xyz
          basedir: target/configs
server:
  port: 8881  

Voici mon bootstrap.yml d'utilisateur microservice: 

spring: 
  application: 
    name: userservice
  cloud: 
    config: 
      uri: http://localhost:8881/  

Scénario 1
Quand je frappe le serveur de configuration dans le navigateur comme ceci:
http://localhost:8881/development/userservice-development.yml
Il sert le fichier correctement. et quand je regarde basedir c'est-à-dire target/config, je vois: 

- userservice.yml  
- gateway.yml  

Exactement ce que je voulais, Depuis que j'ai ajouté ces deux fichiers uniquement dans la branche de développement

Scénario - 2
Lorsque j'exécute mon projet de service utilisateur avec la commande suivante:
mvn clean spring-boot:run -Dspring.profiles.active=development 

Il récupère le bon fichier de git, mais il extrait de la branche master! mais pas de la branche de développement comme je l’attendais. Est-ce que j'attends bien? (FYI j'ai le développement et la production yml dans la branche principale) 

La question est donc de savoir comment utiliser le serveur de configuration. Existe-t-il une configuration que nous pouvons définir pour extraire yml de cette branche particulière uniquement? Je crois que nous devons définir une étiquette, car selon la documentation, l’étiquette par défaut est maître. Quelqu'un peut-il me dire comment procéder pour définir l'étiquette dans le scénario ci-dessus?

9
agpt

Selon la documentation , la configuration que vous souhaitez définir dans votre client de configuration est la suivante:

spring.cloud.config.label=mybranch

mybranch est une branche existante de votre dépôt Git.

21
spencergibb

Vous pouvez spécifier la branche par défaut (plus généralement, le libellé Git) utilisée par un serveur de configuration si un client ne spécifie pas le libellé, via la propriété spring.cloud.config.server.git.default-label. Certainement résout le problème pour moi!

11
Matthew Wise

Serveur de configuration conçu pour utiliser le profil dans un environnement distinct ..__ Exemple: 

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

Le branchement rend la configuration incohérente. 

Le concept de serveur de configuration est basé sur une configuration à 12 facteurs ( http://12factor.net/config ).

Vérifiez-le pour la raison de détail.

6
Hlex

Juste en ajoutant quelques informations.

Si quelqu'un utilise bootstrap.yaml, assurez-vous de donner des guillemets doubles autour de plusieurs branches. Chose étrange, vous n'avez pas besoin de guillemets pour ceux de application.yaml :)

spring
  cloud:
      config:
          label: "myfeature,develop"
0
Imran

Si seulement utilisez la branche dans un fichier yml, configurez simplement:

spring:
  cloud:
    config:
      server:
        git: 
          uri: https://gitlab.com/somerepo.git
          username: someuser
          password: somepass
          default-label: branchname
0
pabloferraz