问题描述
在构建Jenkins项目配置源码管理时报错无法连接到仓库,点击构建后错误日志如下:
寻找解决方案
寻找解决方法的过程中看到这篇博文:
作者:Ejenna
链接:https://blog.csdn.net/ejennahuang/article/details/86087213
尝试直接在Jenkins工作空间下对应项目目录中直接执行报错的git命令,是可以执行成功的,但执行过后Jenkins中的错误仍然没有消除
在Stack Overflow中搜索时发现了这个问题https://stackoverflow.com/questions/21557998/jenkins-failed-to-connect-to-repository
先按照第一个高赞回答的解决方案任然没有成功:
随后尝试第二个回答提供的解决方案,但我是用SSH连接到远程服务器,不太清楚怎样切换用户(su jenkins没反应),也就没有完整尝试完这个方案,但我参照参照另一篇博客将ssh中的id_rsa和id_rsa.pub复制到了jenkins的.ssh目录下。
最终解决
可以看到第二个回答所提供的方案的4-6步与之前提到的第一篇博文的解决方式其实是一致的,差别在于回答中的是以jenkins用户执行一系列命令,想到在linux系统中可以使用sudo -u
在这之后Jenkins中的报错也就解决了
步骤应该如下:
- 现在Jenkins的Web端构建项目
- 远程桌面连接中:cd /var/lib/jenkins/workspace/
- 进入你所构建的项目
- 以jenkins用户克隆你的项目:sudo -u jenkins git clone git@xxxxxx.git
- 弹出确认框的话输入yes
xjb分析
由于整个过程中间我还尝试了一些在当时无效的解决方案,所以就无法保证最终成功是不是仅仅因为上述步骤产生的,但通过一开始在工作空间以root用户角色克隆成功来看,导致这个问题的原因就是在用户角色上,因此如果按照上述步骤操作的过程中如果出现问题,我能够想到的就是jenkins用户无法访问公钥(之前和同学做的一个大作业也是通过Jenkins部署运行,其中将一个工作空间外的目录设置为存储文件的目录时在运行时会报错,无法创建文件,而我之前在root目录下以jenkins角色克隆一个私有仓库时也报错无法创建目录树,所以我怀疑jenkins在工作空间外权限是受限的),可以尝试给jenkins赋予操作~/.ssh下的两个文件的权限,还有将这两个文件拷贝到jenkins_home的目录下。如果还不行我就也不知道原因了23333