web-dev-qa-db-ja.com

Spring Cloud Configサーバーに特定のブランチから構成をチェックアウトするように依頼する方法は?

私は次のSpringクラウド設定application.ymlを持っています:

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  

以下は私のbootstrap.yml /ユーザーマイクロサービス:

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

シナリオ-1
ブラウザで次のように設定サーバーにアクセスすると:
http://localhost:8881/development/userservice-development.yml
適切にファイルを提供します。 basedir、つまりtarget/configを見ると、次のことがわかります。

- userservice.yml  
- gateway.yml  

まさに私が欲しかったものこの2つのファイルは開発ブランチでのみ追加したため

シナリオ-2
次のコマンドを使用してuserserviceマイクロサービスプロジェクトを実行すると:
mvn clean spring-boot:run -Dspring.profiles.active=development

それはgitから正しいファイルをフェッチしますが、マスターブランチからチェックアウト!ですが開発ブランチからではありませんが期待どおりです。私は権利を期待していますか? (FYI私はマスターブランチに開発とプロダクションの両方のymlがあります)

だから問題は、設定サーバーをどのように使用するのですか?特定のブランチからのみymlをフェッチするように設定できる設定はありますか?文書によると、デフォルトのラベルはマスターであるため、いくつかのラベルを設定する必要があると思います。上記のシナリオでラベルを設定する方法を誰かに教えてもらえますか?

12
agpt

documentation によると、構成クライアントで設定する構成は次のとおりです。

spring.cloud.config.label=mybranch

ここで、mybranchはgitリポジトリの既存のブランチです。

21
spencergibb

プロパティspring.cloud.config.server.git.default-labelを使用して、クライアントがラベルを指定しない場合に構成サーバーが使用するデフォルトのブランチ(より一般的にはGitラベル)を指定できます。おそらくこれが目的ですか?確かに私のために問題を解決します!

11
Matthew Wise

プロファイルを使用して環境を分離するように設計された構成サーバー。例:

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

分岐により構成に矛盾が生じます。

構成サーバーの概念は、12要素の構成( http://12factor.net/config )に基づいています。

詳細な理由については、こちらをご覧ください。

6
Hlex

情報を追加するだけです。

だれかがbootstrap.yamlを使用している場合は、複数のブランチを二重引用符で囲んでください。奇妙なことに、application.yamlの引用符は必要ありません。

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

Ymlファイルでブランチのみを使用する場合は、次のように構成します。

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