Spring 配置服务器 - 没有这样的标签:master
Spring Config Server - No such label: master
我有一个简单的 Spring 云配置服务器,它使用来自 git 服务器的配置。
配置服务器bootstrap.yml:
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: ssh://git@mydomain:myport/myrepo.git
searchPaths: "configurations/{application}/{profile}"
server:
port: 8888
当我在本地部署 ConfigServer 时,我可以从 http://localhost:8888/myapp/test
检索配置。但是当我在测试服务器上部署 ConfigServer 时,当我点击 http://testserverip:8888/myapp/test
时它会抛出 No such label: master
。
任何帮助将不胜感激!
当您的服务无法访问 Git 存储库时,就会发生这种情况。
由于您可以启动您的应用程序,我假设测试服务器可以达到 Git。您应该为 Git 服务器设置 SSH 身份验证。您可以检查 this site 以了解 SSH 配置。
我遇到过同样烦人的场景。
我会首先说明我是如何解决这个场景的,然后会强调我在以前的方法中犯的错误。
在我的上下文中,我使用 application.properties
我的应用程序概览如下所示:
我有一个配置服务器,它是集中式的,并为各自的微服务提供各自的配置数据。
例如,微服务'limits-service'需要一些配置数据,它从中央配置服务器('spring-cloud-config-server')获取。
因此,为了实现这一点,'limits-service' 查询中央配置服务器,后者又从远程 git 分支('spring-cloud-samples')获取请求的数据。
┌---------------------- <--> [currency-exchange-service]
[git] <--> [spring-cloud-config-server] ------- <--> [limits-service]
└---------------------- <--> [currency-conversion-service]
解法:
我只是为所有配置文件创建了一个新的 Git 存储库 (spring-cloud-samples),这些配置文件将通过中央配置服务器被多个微服务使用。
在中央配置服务器('spring-cloud-config-server')的application.properties
文件中,我提供了一个属性作为:
spring.cloud.config.server.git.uri=https://github.com/{username}/{git-reponame.git}
可能看起来像
spring.cloud.config.server.git.uri=https://github.com/alice123/spring-cloud-samples.git
就是这样!
启动我的中央配置服务器并观察如下日志:
2020-02-17 05:25:07.867 INFO 15000 --- [nio-8888-exec-9] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/D:/Users/{userName}/AppData/Local/Temp/config-repo-3453413414/limits-service.properties
此外,我还通过我的 'limits-service' 使用了配置数据,它非常有效!
我尝试了以下导致失败的事情和很多尖叫和叫喊。 XD
我发布它,只是为了让正在尝试相同概念的人可以节省一晚或更少的工作:p
1) 最初,我在 central-config-server 的 application.properties 文件中使用我的 Git 存储库 SSH URL如下:
spring.cloud.config.server.git.uri=git@github.com:alice123/spring-cloud-samples.git
spring.cloud.config.server.git.username=alice123
spring.cloud.config.server.git.password=alice123Pwd
导致以下错误:
2020-02-17 05:22:45.091 WARN 15000 --- [nio-8888-exec-1] .c.s.e.MultipleJGitEnvironmentRepository : Error occured cloning to base directory.
org.eclipse.jgit.api.errors.TransportException: git@github.com:aniketrb-github/spring-cloud-samples.git: Auth fail
2) 后来,我尝试从 native/local git 目录中读取配置数据,该目录指向我的 Git远程分支(spring-云样本)
然后我在 application.properties 文件中提供了以下内容:
spring.cloud.config.server.git.uri=file://D:\aniket-workspace\github-ws\microservices\udemy-microservices\git-localconfig-repo
这崩溃了:
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.properties'
3) 后来经过足够的谷歌搜索,我将上面的 属性 更改为下面的工作!!:
spring.cloud.config.server.git.uri=D:\\alice-workspace\\github-ws\\microservices\\git-localconfig-repo
'limits-service' 在尝试从 'spring.cloud.config.server' 获取配置数据时最终失败并出现以下错误:
404: Not Found - "org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: master"
由于我遇到了上面提到的所有失败,所以我所说的解决方案对我有用。
如果我错了请纠正我并在必要时即兴创作。我希望这有助于节省一些关键时间。
参考文献:spring-cloud-config, https-or-ssh, git-ssh-windows, git-ssh-windows-troubleshooting
希望你一切顺利。
我正在使用 STS 4 并添加源 link 文件夹(本地 git 存储库)用于来自本地 git 存储库的 spring 云配置。
我遇到了同样的问题,
我只是把反斜杠换成了正斜杠。
当我这样使用时
spring.cloud.config.server.git.uri=file://C:\Users\coder\Desktop\spring material\in28microservies\git-localconfig-repo
我收到错误
2020-04-04 14:57:37.874 ERROR 6952 --- [nio-8888-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot load environment] with root cause
java.lang.IllegalStateException: Cannot convert uri to file: file://C:UserscoderDesktopspring materialin28microserviesgit-localconfig-repo
然后我将配置服务器属性文件中的所有反斜杠替换为正斜杠,
它对我有用
spring.cloud.config.server.git.uri=file://C:/Users/coder/Desktop/spring material/in28microservies/git-localconfig-repo
这肯定有效!!! :)
1 ) 您必须按照以下方式提交更改才能显示 master 如果您第一次在该特定文件夹中初始化回购协议
> git add -A .
> git commit -m "added prop..."
2) 重新 运行 项目并点击相同的 url.
开心 :)
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=file://<location>
试试下面我们朋友提到的方法:
GitHub 创建了默认分支“main”,但是 Spring cloud Config 正在寻找“master 分支”。我创建了一个“master”分支并且它成功了!
当您创建一个新的存储库时,现在 git 将“main”作为默认分支而不是 master。这个问题就是关于这个的。
手动创建“master”分支。它将解决所有这些问题。
对我来说,这是由于我的默认分支 'main' 造成的。每当您创建新分支时,默认分支不再是 'main' 而不是 'master'。但是 spring 服务器配置寻找 master 分支。
快速解决方案是从 'main' 分支签出一个名为 'master' 的新分支。并尝试从 spring 配置服务器。就是这样。
从主分支创建一个新分支。首先指向主分支,然后从那里
git checkout -b master
git push --set-upstream origin master
重启你的配置服务器并测试
我知道我很晚才发布这个答案。但是,仍然张贴它,以便其他人可以发现这有帮助。现在,GitHub 的默认分支名称是“main”,但 Spring Cloud Config 仍在寻找“master”作为标签名称。所以,如果你想改变默认行为,你总是可以改变标签名称查找使用 below 属性 in application.yml
or application.properties
:
spring.cloud.config.server.git.default-label=main
这对我来说效果很好。我正在使用 Spring Boot 2.3.6.RELEASE
这是我遇到类似问题时发现的。
Issue/Mistake#1 >> 我使用记事本创建了属性文件(我在 Windows OS)。
该文件是用 .txt 扩展名创建的。因此,云配置没有接受更改。
修复:将扩展名从 .txt 更改为 .properties
Issue/Mistake#2 >> .properties 文件名与提到的不同。
该文件应命名为:
servicename.properties
matching the servicename defined in the *application.properties* as below:
spring.application.name=<<服务名称>>
在我的例子中:
spring.application.name=limits-service
因此该文件应命名为 **limits-service.properties**
,
但我创建的名称是 limits-service-service.properties
enter code here
修复:将文件重命名为:limits-service.properties
现在我可以从 spring-cloud-config 中看到配置,它正在从配置的 GIT 存储库中选取值。
在我的例子中,给定的答案没有任何效果。唯一有用的是将 default-label 设置为 master
spring.cloud.config.server.git.default-label=master
对于那些在访问时可能有 'delayed(>2mins) but correct response' 的人:localhost:8888/limits-service/default
,一种对我有用的简单方法是:
- 在 limits-service.properties 中,将配置服务器端口更改为 8887 而不是坚持使用 8888:
spring.config.import=optional:configserver:http://localhost:8887
Spring 尝试访问端口 8888 时似乎超时。
- 在spring-cloud-config-server的application.properties中,直接将spring.cloud.config.server.git.uri改为存储在Github[=22上的REALgit =].我正在使用我自己的 public git 以便你们可以 copy-paste 它:
spring.cloud.config.server.git.uri=https://github.com/SimonSongCA/git-localconfig-repo.git
它显着减少了延迟,从 X 分钟减少到秒,控制台不再有异常。
我有一个简单的 Spring 云配置服务器,它使用来自 git 服务器的配置。
配置服务器bootstrap.yml:
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: ssh://git@mydomain:myport/myrepo.git
searchPaths: "configurations/{application}/{profile}"
server:
port: 8888
当我在本地部署 ConfigServer 时,我可以从 http://localhost:8888/myapp/test
检索配置。但是当我在测试服务器上部署 ConfigServer 时,当我点击 http://testserverip:8888/myapp/test
时它会抛出 No such label: master
。
任何帮助将不胜感激!
当您的服务无法访问 Git 存储库时,就会发生这种情况。 由于您可以启动您的应用程序,我假设测试服务器可以达到 Git。您应该为 Git 服务器设置 SSH 身份验证。您可以检查 this site 以了解 SSH 配置。
我遇到过同样烦人的场景。
我会首先说明我是如何解决这个场景的,然后会强调我在以前的方法中犯的错误。
在我的上下文中,我使用 application.properties
我的应用程序概览如下所示: 我有一个配置服务器,它是集中式的,并为各自的微服务提供各自的配置数据。
例如,微服务'limits-service'需要一些配置数据,它从中央配置服务器('spring-cloud-config-server')获取。 因此,为了实现这一点,'limits-service' 查询中央配置服务器,后者又从远程 git 分支('spring-cloud-samples')获取请求的数据。
┌---------------------- <--> [currency-exchange-service]
[git] <--> [spring-cloud-config-server] ------- <--> [limits-service]
└---------------------- <--> [currency-conversion-service]
解法:
我只是为所有配置文件创建了一个新的 Git 存储库 (spring-cloud-samples),这些配置文件将通过中央配置服务器被多个微服务使用。
在中央配置服务器('spring-cloud-config-server')的application.properties
文件中,我提供了一个属性作为:
spring.cloud.config.server.git.uri=https://github.com/{username}/{git-reponame.git}
可能看起来像
spring.cloud.config.server.git.uri=https://github.com/alice123/spring-cloud-samples.git 就是这样!
启动我的中央配置服务器并观察如下日志:
2020-02-17 05:25:07.867 INFO 15000 --- [nio-8888-exec-9] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/D:/Users/{userName}/AppData/Local/Temp/config-repo-3453413414/limits-service.properties
此外,我还通过我的 'limits-service' 使用了配置数据,它非常有效!
我尝试了以下导致失败的事情和很多尖叫和叫喊。 XD
我发布它,只是为了让正在尝试相同概念的人可以节省一晚或更少的工作:p
1) 最初,我在 central-config-server 的 application.properties 文件中使用我的 Git 存储库 SSH URL如下:
spring.cloud.config.server.git.uri=git@github.com:alice123/spring-cloud-samples.git
spring.cloud.config.server.git.username=alice123
spring.cloud.config.server.git.password=alice123Pwd
导致以下错误:
2020-02-17 05:22:45.091 WARN 15000 --- [nio-8888-exec-1] .c.s.e.MultipleJGitEnvironmentRepository : Error occured cloning to base directory.
org.eclipse.jgit.api.errors.TransportException: git@github.com:aniketrb-github/spring-cloud-samples.git: Auth fail
2) 后来,我尝试从 native/local git 目录中读取配置数据,该目录指向我的 Git远程分支(spring-云样本) 然后我在 application.properties 文件中提供了以下内容:
spring.cloud.config.server.git.uri=file://D:\aniket-workspace\github-ws\microservices\udemy-microservices\git-localconfig-repo
这崩溃了:
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.properties'
3) 后来经过足够的谷歌搜索,我将上面的 属性 更改为下面的工作!!:
spring.cloud.config.server.git.uri=D:\\alice-workspace\\github-ws\\microservices\\git-localconfig-repo
'limits-service' 在尝试从 'spring.cloud.config.server' 获取配置数据时最终失败并出现以下错误:
404: Not Found - "org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: master"
由于我遇到了上面提到的所有失败,所以我所说的解决方案对我有用。 如果我错了请纠正我并在必要时即兴创作。我希望这有助于节省一些关键时间。
参考文献:spring-cloud-config, https-or-ssh, git-ssh-windows, git-ssh-windows-troubleshooting
希望你一切顺利。
我正在使用 STS 4 并添加源 link 文件夹(本地 git 存储库)用于来自本地 git 存储库的 spring 云配置。
我遇到了同样的问题,
我只是把反斜杠换成了正斜杠。
当我这样使用时
spring.cloud.config.server.git.uri=file://C:\Users\coder\Desktop\spring material\in28microservies\git-localconfig-repo
我收到错误
2020-04-04 14:57:37.874 ERROR 6952 --- [nio-8888-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot load environment] with root cause
java.lang.IllegalStateException: Cannot convert uri to file: file://C:UserscoderDesktopspring materialin28microserviesgit-localconfig-repo
然后我将配置服务器属性文件中的所有反斜杠替换为正斜杠,
它对我有用
spring.cloud.config.server.git.uri=file://C:/Users/coder/Desktop/spring material/in28microservies/git-localconfig-repo
这肯定有效!!! :)
1 ) 您必须按照以下方式提交更改才能显示 master 如果您第一次在该特定文件夹中初始化回购协议
> git add -A .
> git commit -m "added prop..."
2) 重新 运行 项目并点击相同的 url.
开心 :)
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=file://<location>
试试下面我们朋友提到的方法:
GitHub 创建了默认分支“main”,但是 Spring cloud Config 正在寻找“master 分支”。我创建了一个“master”分支并且它成功了!
当您创建一个新的存储库时,现在 git 将“main”作为默认分支而不是 master。这个问题就是关于这个的。
手动创建“master”分支。它将解决所有这些问题。
对我来说,这是由于我的默认分支 'main' 造成的。每当您创建新分支时,默认分支不再是 'main' 而不是 'master'。但是 spring 服务器配置寻找 master 分支。 快速解决方案是从 'main' 分支签出一个名为 'master' 的新分支。并尝试从 spring 配置服务器。就是这样。
从主分支创建一个新分支。首先指向主分支,然后从那里
git checkout -b master git push --set-upstream origin master
重启你的配置服务器并测试
我知道我很晚才发布这个答案。但是,仍然张贴它,以便其他人可以发现这有帮助。现在,GitHub 的默认分支名称是“main”,但 Spring Cloud Config 仍在寻找“master”作为标签名称。所以,如果你想改变默认行为,你总是可以改变标签名称查找使用 below 属性 in application.yml
or application.properties
:
spring.cloud.config.server.git.default-label=main
这对我来说效果很好。我正在使用 Spring Boot 2.3.6.RELEASE
这是我遇到类似问题时发现的。
Issue/Mistake#1 >> 我使用记事本创建了属性文件(我在 Windows OS)。 该文件是用 .txt 扩展名创建的。因此,云配置没有接受更改。 修复:将扩展名从 .txt 更改为 .properties
Issue/Mistake#2 >> .properties 文件名与提到的不同。 该文件应命名为:
servicename.properties
matching the servicename defined in the *application.properties* as below:
spring.application.name=<<服务名称>>
在我的例子中:
spring.application.name=limits-service
因此该文件应命名为 **limits-service.properties**
,
但我创建的名称是 limits-service-service.properties
enter code here
修复:将文件重命名为:limits-service.properties
现在我可以从 spring-cloud-config 中看到配置,它正在从配置的 GIT 存储库中选取值。
在我的例子中,给定的答案没有任何效果。唯一有用的是将 default-label 设置为 master
spring.cloud.config.server.git.default-label=master
对于那些在访问时可能有 'delayed(>2mins) but correct response' 的人:localhost:8888/limits-service/default
,一种对我有用的简单方法是:
- 在 limits-service.properties 中,将配置服务器端口更改为 8887 而不是坚持使用 8888:
spring.config.import=optional:configserver:http://localhost:8887
Spring 尝试访问端口 8888 时似乎超时。 - 在spring-cloud-config-server的application.properties中,直接将spring.cloud.config.server.git.uri改为存储在Github[=22上的REALgit =].我正在使用我自己的 public git 以便你们可以 copy-paste 它:
spring.cloud.config.server.git.uri=https://github.com/SimonSongCA/git-localconfig-repo.git
它显着减少了延迟,从 X 分钟减少到秒,控制台不再有异常。