2

我有一个在 docker 环境上运行的 spring-boot 应用程序,它连接到 Git 存储库以获取应用程序的配置。我的问题是应用程序在尝试获取 .properties 文件时有时会出错。这很奇怪,因为如果我更改用户和密码,相同的应用程序会重新工作。

错误

2021-06-20 15:42:57.229  WARN 1 --- [nio-8888-exec-1] .c.s.e.MultipleJGitEnvironmentRepository : Error occured cloning to base directory.

org.eclipse.jgit.api.errors.TransportException: https://####@bitbucket.org/####/cup-configuration-files: git-upload-pack not permitted on 'https://####@bitbucket.org/####/cup-configuration-files/'
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:254) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]

我已经尝试过这个解决方案,但没有奏效:create basedir directory

应用程序.yml

server:
    port: 8888
spring:
    application:
        name: config-server
    cloud:
        config:
            server:
                git:  
                    basedir: temp
                    password: ####
                    username: ####
                    uri: https://#######@bitbucket.org/########/cup-configuration-files
                    searchPaths: '{application}'
management:
        endpoints:
          web:
            exposure:
              include: "*"

如果临时目录具有所有权限,我已经检查了 docker 容器内部。

当我使用 mvn spring-boot:run命令在本地环境中运行相同的应用程序时,它可以工作。

PS:本地Git版本与docker环境不同。我不知道是否可能是问题所在。

4

2 回答 2

0

我创建了一个 cup-configuration-files 目录,用 git 对其进行了初始化,并进行了 git pull 以获取所有文件,并在 application.yml 上将 uri 作为文件:

应用程序.yml:

server:
    port: 8888
spring:
    application:
        name: config-server
    cloud:
        config:
            server:
                git:  
                    basedir: temp
                    password: ######
                    username: ######
                    uri: file:/cup-configuration-files
                    searchPaths: '{application}'
management:
        endpoints:
          web:
            exposure:
              include: "*"
于 2021-12-11T18:35:47.487 回答
0

当我通过向导“克隆 Git 存储库”在 Spring Tool Suit 4 (STS) 中克隆 Bitbucket 存储库时,我遇到了同样的错误,即“不允许 git-upload-pack”。我挣扎了好几个小时才意识到我们需要通过在 Bitbucket 中添加应用程序密码链接来使用生成的密码。

以下是有关如何解决“git-upload-pack not allowed”错误的更多详细信息。

比特桶

  1. 转到 Bitbucket主页

  2. 在您的左下角单击您的帐户图标。它将显示弹出菜单,其中之一是“个人设置”。单击相同。它将带您进入您的帐户设置

  3. 在Bitbucket个人账户设置页面,你会看到菜单链接“应用密码”,点击相同。在右侧面板上,将显示应用密码页面。

  4. 在右侧页面上,您将看到“创建应用密码”按钮。单击相同。它将显示添加应用程序密码的详细信息。

GitHub

如果您使用的是 GitHub,请注意GitHub 已弃用密码,您需要按照此处所述在 GitHub 中创建个人访问令牌。(请参考这个答案

于 2021-12-14T18:08:27.587 回答