解决Spring Cloud Config结合GitHub无法读取配置的问题,可以按照以下完整攻略进行:
1. 配置GitHub Personal Access Token
首先需要在GitHub上配置Personal Access Token,用来在Spring Cloud Config中访问GitHub的私有仓库。具体步骤如下:
-
打开GitHub,进入Settings -> Developer settings -> Personal access tokens。
-
在Personal access tokens页面中,点击Generate new token按钮,填写Token description,勾选repo权限,点击Generate token按钮,生成新的token。
-
将生成的Token复制下来,备用。
2. 在配置文件中添加GitHub的Personal Access Token
在Spring Cloud Config的配置文件(application.yml或application.properties)中,需要添加GitHub的Personal Access Token,具体示例如下:
spring:
cloud:
config:
server:
git:
uri: https://github.com/user/repo #GitHub仓库地址
search-paths: '{application}' #搜索应用配置文件的目录
default-label: main #默认分支
username: user #GitHub用户名
password: token #GitHub Personal Access Token
3. 创建GitHub账户密钥
为了实现Spring Cloud Config与GitHub的SSH通信,需要在本机生成一个密钥,并将公钥添加到GitHub帐户中。具体步骤如下:
- 打开Git Bash,输入以下命令生成密钥对:
ssh-keygen -t rsa -C "youremail@example.com"
其中,youremail@example.com修改为自己的邮箱。
-
生成的公钥和私钥分别存储在C:\Users\username.ssh目录下的id_rsa.pub和id_rsa文件中。
-
打开id_rsa.pub文件,将文件内容复制到GitHub中,具体步骤如下:
-
登录GitHub,进入Settings -> SSH and GPG keys。
-
点击New SSH key按钮。
-
将公钥内容粘贴到Key域中,填写Title,并点击Add SSH key按钮。
4. 本地运行Spring Cloud Config
配置完成后,可以运行Spring Cloud Config,并访问GitHub中的配置文件。具体示例如下:
- 创建一个Spring Boot项目,引入Spring Cloud Config和相关依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
- 在启动类上添加@EnableConfigServer注解。
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
- 创建配置文件src/main/resources/application.yml,并添加配置。
server:
port: 8888 #Spring Cloud Config Server端口
spring:
application:
name: config-server #应用名称
cloud:
config:
server:
git:
uri: https://github.com/user/repo #GitHub仓库地址
search-paths: '{application}' #搜索应用配置文件的目录
default-label: main #默认分支
username: user #GitHub用户名
password: token #GitHub Personal Access Token
- 启动项目,访问http://localhost:8888/config-client-dev.yml,可以看到从GitHub中读取到的配置文件。
示例说明
示例1:使用了错误的Personal Access Token
假如在config-client-dev.yml配置文件中,使用了错误的Personal Access Token,启动Spring Cloud Config Server将会报错。具体步骤如下:
-
将config-client-dev.yml配置文件中的password值修改为错误的Personal Access Token。
-
启动Config Server,控制台输出如下错误信息:
Caused by: org.eclipse.jgit.api.errors.TransportException: Cannot connect to remote repository
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:244) ~[org.eclipse.jgit-5.11.0.202105071810-r.jar:5.11.0.202105071810-r]
... 23 common frames omitted
Caused by: org.eclipse.jgit.errors.TransportException: https://github.com/user/repo: not authorized
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:546) ~[org.eclipse.jgit.http.apache-5.11.0.202105071810-r.jar:5.11.0.202105071810-r]
... 28 common frames omitted
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://api.github.com/repos/user/repo/git/refs/heads
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1920) ~[na:1.8.0_191]
... 34 common frames omitted
- 根据错误信息可以看出,连接GitHub仓库时发生403错误,提示“not authorized”,即没有授权访问此仓库。可以根据提示重新检查Personal Access Token是否正确。
示例2:未添加GitHub账户密钥
假如在启动Spring Cloud Config Server前,未添加GitHub账户密钥,启动后将会报错。具体步骤如下:
-
删除本机的密钥文件,默认路径为C:\Users\username.ssh。
-
启动Config Server,控制台输出如下错误信息:
Caused by: org.eclipse.jgit.api.errors.TransportException: git@github.com:user/repo: git-upload-pack not permitted on 'repo'
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:262) ~[org.eclipse.jgit-5.11.0.202105071810-r.jar:5.11.0.202105071810-r]
... 23 common frames omitted
Caused by: org.eclipse.jgit.errors.TransportException: git@github.com:user/repo: git-upload-pack not permitted on 'repo'
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:262) ~[org.eclipse.jgit.ssh.apache-5.11.0.202105071810-r.jar:5.11.0.202105071810-r]
... 29 common frames omitted
- 根据错误信息可以看出,连接GitHub仓库时发生错误,提示“git-upload-pack not permitted on 'repo'”,即无法访问此仓库。此时需要先添加GitHub账户密钥,然后重新启动Spring Cloud Config Server。
以上就是解决Spring Cloud Config结合GitHub无法读取配置的问题的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决SpringCloud Config结合github无法读取配置的问题 - Python技术站