1

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 version 2.24.0

错误 1:git-upload-pack

2020-04-11 00:00:20 - 警告克隆到基本目录时出错。

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,我随机收到这个错误。在深入研究了这个问题后,我发现bitbucket不支持git-upload-pack 。但是2年前在这里报道过,并建议恢复GIT版本。

错误 2:不支持身份验证

org.eclipse.jgit.api.errors.TransportException: https://bitbucket.org/user/repo.git: authentication not supported

当点击/refreshon actuator 以从远程配置存储库中获取刷新的属性时,我得到了上述错误。有时它工作时没有任何错误,有时它会抛出错误。

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"}

注意:作为旁注,我已经单独克隆了指定的存储库进行测试,它可以正常工作,没有任何身份验证问题。

4

1 回答 1

0

Spring Cloud 配置框架

.propertiesSpring Cloud Config 框架基本上提供 git 作为后端存储库,以从远程/缓存中获取/加载。您必须提供具有从远程克隆/签出write权限的基本目录定义。git.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不同的错误,要么从本地存储库加载缓存版本。默认情况下,从这个位置读取,spring cloud config框架正在寻找父目录的权限,在这种情况下-提示:安全预防措施已触发.propertiesbasedir/var/tmpwrite/var

为了安全起见,不想毁了你的OSX,定义了你自己的自定义位置之一,basedir例如/Users/<....>/Documents/tmp。因为每次都git在远程存储库上查找新的更改,如果找到,它将拉下.properties需要删除以前文件的新更改。

因为,我已经在日志中定义了basedir没有遇到来自spring 云配置框架的任何错误。

于 2020-04-21T13:17:09.753 回答