Spring Cloud Config - Git 存储库错误
Posted
技术标签:
【中文标题】Spring Cloud Config - Git 存储库错误【英文标题】:Spring Cloud Config - Git Repository Errors 【发布时间】:2020-07-23 11:37:35 【问题描述】:Spring Cloud 配置框架:
我正在尝试将 java 项目中的 spring 云配置与后端存储库 git 集成,后者是 bitbucket。基本上,我在不同的场合会更频繁地遇到两个错误。
2020-04-11 17:08:59.265 WARN 2792 --- [ main] .c.s.e.MultipleJGitEnvironmentRepository : Could not fetch remote for master remote: https://user@bitbucket.org/workspace/config-repo.git
以上情况,使用缓存版本,tomcat/undertow服务器启动没有任何问题。
2020-04-11 17:09:03.774 INFO 2792 --- [ main] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/var/folders/6m/1cgw7zvn3rsb8j5kskflhvrr0000gn/T/config-repo-2822438633438126334/api-gateway.yml
2020-04-11 17:09:03.774 INFO 2792 --- [ main] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/var/folders/6m/1cgw7zvn3rsb8j5kskflhvrr0000gn/T/config-repo-2822438633438126334/discovery-service.yml
2020-04-11 17:09:03.775 INFO 2792 --- [ main] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/var/folders/6m/1cgw7zvn3rsb8j5kskflhvrr0000gn/T/config-repo-2822438633438126334/config-service.yml
Git 版本:
git version 2.24.0
错误 1:git-upload-pack
2020-04-11 00:00:20 - WARN 克隆到基目录时出错。
org.eclipse.jgit.api.errors.TransportException: https://<username>@bitbucket.org/<workspace>/config-repo.git: git-upload-pack not permitted on 'https://beatles89@bitbucket.org/workspace/config-repo.git/'
启动spring cloud config server,我随机收到这个错误。在深入研究了这个问题后,我发现 git-upload-pack 在 bitbucket 上不受支持。但是2年前被here举报,建议恢复GIT版本。
错误 2:不支持身份验证
org.eclipse.jgit.api.errors.TransportException: https://bitbucket.org/user/repo.git: authentication not supported
当我点击执行器上的/refresh
以从远程配置存储库中获取刷新的属性时,我得到了上述错误。有时它可以正常工作,有时它会抛出上述错误。
curl localhost:8060/refresh -d -H "Content-Type: application/json"
执行器刷新命令错误:
"timestamp":"2020-04-10T16:35:41.144+0000","status":500,"error":"Internal Server Error","message":"Request processing failed; nested exception is org.springframework.cloud.config.server.environment.NoSuchRepositoryException: Cannot clone or checkout repository: https://beatles89@bitbucket.org/augmentedcloud/ac-config-repo.git","path":"/refresh"
注意:附带说明,我已经单独克隆了指定的存储库以进行测试,它可以正常工作,没有任何身份验证问题。
【问题讨论】:
您告诉您使用的是 git-core(命令行 Git)2.24.0,但错误消息显示 JGit,它是 Java 中的 Git 实现,是 git-core 的替代品。您能否澄清一下您正在使用什么,为什么用 [eclipse] 标记您的问题以及重现该问题需要哪些步骤? @howlger - 我已经提到尝试创建 spring 云配置服务项目。 Spring cloud config 支持从不同的存储库(例如基于文件的系统、git 等)获取属性或配置。我选择了 GIT 作为后端存储库。现在 Spring Cloud 配置框架在内部使用 JGIT 库 org.eclipse.jgit.api 进行 GIT 操作。这就是为什么我标记了这个问题的所有相关方。 @howlger - 没有说我在使用终端或任何其他软件的 Git 上遇到了这个问题。这个问题的原始来源是 Spring Cloud Config 框架、Bitbucket 和 JGIT。它发生得如此频繁,以至于我什至无法启动我的 tomcat/undertow servlet 服务器。为了更清楚起见,我将更新原始帖子。 所以你从使用 JGit 的 Spring Cloud Config Server 收到这些错误消息;根本不涉及 Git 2.24.0(至少不在你这边;也许在远程上游存储库那边),对吧? @howlger - 不涉及核心 Git (2.24.0)。但是 JGit (org.eclipse.jgit.api.errors.TransportException) 可能会。我提到了 Core Git,因为其他人报告了同样的问题,并且修复已恢复到核心 GIT 的早期版本。对我来说,核心 Git 在 mac 终端上运行良好。 【参考方案1】:Spring Cloud 配置框架
Spring Cloud Config 框架基本上提供 git 作为后端存储库以从远程/缓存中获取/加载.properties
。您必须为git
提供具有write
权限的基本目录定义,才能从远程克隆/签出.properties
。
spring:
cloud:
config:
server:
git:
basedir: $AC_CONFIG_SERVICE_GIT_BASE_DIR
uri: $AC_CONFIG_SERVICE_GIT_REMOTE_URI
username: $AC_CONFIG_SERVICE_GIT_REMOTE_USER
password: $AC_CONFIG_SERVICE_GIT_REMOTE_PASSWORD
passphrase: $AC_CONFIG_SERVICE_GIT_REMOTE_PASSPHRASE
skip-ssl-validation: true
timeout: 10
注意:否则,在每次服务器启动时,它要么抱怨
.properties
出现不同的错误,要么从本地加载.properties
的缓存 版本 存储库。默认情况下,basedir
从此位置读取/var/tmp
和 spring cloud config 框架正在寻找父目录上的write
权限,在这种情况下为/var
- 提示: Safety Precautions Triggered.
为了安全起见,不想破坏您的OSX
,为basedir
定义了您自己的自定义位置之一,例如/Users/<....>/Documents/tmp
。因为每次,git
都会在远程存储库上查找 新更改,如果找到,它将拉下新的 .properties
,这需要删除以前的文件。
从那以后,我在日志中定义了basedir
未遇到spring cloud config framework的任何错误。
【讨论】:
以上是关于Spring Cloud Config - Git 存储库错误的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud-config-server——Environment Repository(Git Backend)