如何让Spring Cloud Config服务器检查特定分支的配置?

时间:2015-12-10 06:18:36

标签: spring git spring-mvc spring-boot spring-cloud

我关注了Spring cloud config application.yml:

spring: 
  application: 
    name: configserver
  cloud: 
    config: 
      server: 
        git: 
          uri: https://xyz@bitbucket.org/xyz/microservices-configs.git
          username: xyz
          password: xyz
          basedir: target/configs
server:
  port: 8881  

以下是我的bootstrap.yml用户微服务:

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

情景 - 1
当我在浏览器中点击配置服务器时如下:
http://localhost:8881/development/userservice-development.yml
它正确地提供文件。当我看到basedir即目标/配置时,我看到:

- userservice.yml  
- gateway.yml  

正是我想要的,因为我只在开发分支中添加了这两个文件

情景 - 2
当我使用以下命令运行我的用户服务微服务项目时:
mvn clean spring-boot:run -Dspring.profiles.active=development

它从git中获取正确的文件,但从主分支机构检出!不是来自开发分支,正如我所期待的那样。我期待对吗? (仅供参考我在master分支中有开发和生产yml)

所以问题是,我们如何使用配置服务器?是否有任何配置我们可以设置为仅从该特定分支获取yml?我认为我们需要设置一些标签,因为根据文档,默认标签是master。任何人都可以告诉我们如何在上述场景中设置标签?

5 个答案:

答案 0 :(得分:21)

根据documentation,您要在配置客户端中设置的配置是:

spring.cloud.config.label=mybranch

其中mybranch是您的git仓库中的现有分支。

答案 1 :(得分:11)

如果客户端没有通过属性spring.cloud.config.server.git.default-label指定标签,您可以指定配置服务器使用的默认分支(更一般地说,Git标签),也许这就是您所追求的?当然可以解决这个问题!

答案 2 :(得分:8)

配置服务器旨在使用配置文件来分隔环境。 示例:

$user->companies->first()->pivot->pin;

分支使配置不一致。

配置服务器的概念基于12因素配置(http://12factor.net/config)。

查看详细原因。

答案 3 :(得分:1)

如果仅使用yml文件中的分支,只需配置:

"null"

答案 4 :(得分:0)

只需添加一些信息即可。

如果有人在使用bootstrap.yaml,请确保在多个分支周围加上双引号。奇怪的是,您不需要application.yaml的引号:)

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