Ce fut ma config initiale:
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: file:///home/codependent/git/scc-dev
repos:
dev:
pattern: '*/dev'
uri: file:///home/codependent/git/scc-dev
pre:
pattern: '*/pre'
uri: file:///home/codependent/git/scc-pre
pro:
pattern: '*/pro'
uri: file:///home/codependent/git/scc-pro
Il y a une prise en pension par défaut dans le cas où il n'y a pas de match de l'environnement et trois prises en pension selon un motif.
L'idée est d'avoir un autre dépôt de base (avec la priorité la plus basse) qui serait toujours chargé et dépend également de l'environnement. Ce repo de base contient un fichier application.yml avec des propriétés partagées gérées par une équipe différente.
Apparemment, il n'y a aucun moyen de le faire via les propriétés de YML donc je devais définir les haricots manuellement, c'est le code nécessaire pour le faire:
@Bean
public EnvironmentRepository baseEnvironmentRepository(){
ConfigurableEnvironment ce = new StandardServletEnvironment();
PatternMatchingJGitEnvironmentRepository devRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-dev");
devRepo.setEnvironment(ce);
devRepo.setForcePull(false);
devRepo.setPattern(new String[]{ "*/dev" });
PatternMatchingJGitEnvironmentRepository preRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-pre");
preRepo.setEnvironment(ce);
preRepo.setForcePull(false);
preRepo.setPattern(new String[]{ "*/pre" });
PatternMatchingJGitEnvironmentRepository proRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-pro");
proRepo.setEnvironment(ce);
proRepo.setForcePull(false);
proRepo.setPattern(new String[]{ "*/pro" });
Map<String, PatternMatchingJGitEnvironmentRepository> map = new HashMap<>();
map.put("dev", devRepo);
map.put("pre", preRepo);
map.put("pro", proRepo);
MultipleJGitEnvironmentRepository multiple = new MultipleJGitEnvironmentRepository(new StandardServletEnvironment());
multiple.setUri("file:///home/codependent/git/scc-ops-dev");
multiple.setRepos(map);
multiple.setOrder(Ordered.LOWEST_PRECEDENCE);
return multiple;
}
@Bean
public EnvironmentRepository environmentRepository(){
ConfigurableEnvironment ce = new StandardServletEnvironment();
PatternMatchingJGitEnvironmentRepository devRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-dev");
devRepo.setEnvironment(ce);
devRepo.setForcePull(false);
devRepo.setPattern(new String[]{ "*/dev" });
PatternMatchingJGitEnvironmentRepository preRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-pre");
preRepo.setEnvironment(ce);
preRepo.setForcePull(false);
preRepo.setPattern(new String[]{ "*/pre" });
PatternMatchingJGitEnvironmentRepository proRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-pro");
proRepo.setEnvironment(ce);
proRepo.setForcePull(false);
proRepo.setPattern(new String[]{ "*/pro" });
Map<String, PatternMatchingJGitEnvironmentRepository> map = new HashMap<>();
map.put("dev", devRepo);
map.put("pre", preRepo);
map.put("pro", proRepo);
MultipleJGitEnvironmentRepository multiple = new MultipleJGitEnvironmentRepository(new StandardServletEnvironment());
multiple.setUri("file:///home/codependent/git/scc-dev");
multiple.setRepos(map);
multiple.setOrder(Ordered.HIGHEST_PRECEDENCE);
return multiple;
}
Malheureusement, je ne l'ai pas essayé moi-même, mais Si vous n'avez rien trouvé d'utile en ligne, essayez les docs officiels http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.1.RELEASE/ - ils ont une section sur la correspondance des motifs et plusieurs référentiels, qui pourraient vous aider – maydawn
Ce n'est pas le cas. La fonctionnalité de référentiels multiples est destinée à séparer la configuration par équipe. Il s'arrête une fois qu'un match est trouvé. – spencergibb
@spencergibb pensez-vous qu'il pourrait être considéré comme une fonctionnalité future? Je pense que c'est un peu nécessaire, dans notre société certaines propriétés telles que la configuration de base de données (url, db user, db password) ne peuvent être configurées que par une équipe d'infrastructure, c'est pourquoi nous avons besoin d'un repo différent. équipe pour mettre à jour les accessoires – codependent