[TOC]
错误异常处理
1. Failed to connect to repository : Error performing command: git ls-remote -h
产生原因:
Jenkins服务器没有安装git
解决方式:
1. Jenkins服务器上查看git是否已安装及安装位置
1 | [root@ci ~]# git version |
2. 打开Jenkins的 主页面 > 系统管理 > Global Tool Configuration
配置下git 的path
2. stdout: stderr: Host key verification failed. fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.
产生原因:
代码仓库没有添加允许jenkins服务器用户拉取代
解决方式:
创建秘钥可以参考第三个错误的解决步骤
检查jenkins服务器ssh key
1
2
3
4
5[jenkins@ci ~]# cd .ssh
[jenkins@ci ~]# ll
total 8
-rw-------. 1 root root 1675 Jun 19 11:06 id_rsa
-rw-r--r--. 1 root root 389 Jun 19 11:06 id_rsa.pub如果没有文件,则使用下面命令进行创建
1
2
3
4[jenkins@ci ~]$ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
// 一路回车即可在代码仓库添加jenkins服务器用户的公钥
在jenkins管理端创建全局凭证并使用
创建全局凭证
使用全局凭证
3. Load key “/var/lib/jenkins/.ssh/id_rsa”: Permission denied
这里需要对Jenkins密钥进行配置
3-1 切换jenkins用户不成功
jenkins系统本身有bug的,下面切换用户会失败
1 | su jenkins |
解决办法如下:
/etc/passwd
文件中的/bin/bash
被yum安装的时候变成了/bin/false
然后我执行cat /etc/passwd
命令,果然被改成了/bin/false
cat /etc/passwd
接着执行sudo vim /etc/passwd
命令,把false
改为bash
sudo vim /etc/passwd
改完后使用 grep jenkins /etc/passwd
查看下是否成功
1 | jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/bash |
3-2 su jenkins bash-4.2问题
当我们切换到jenkins用户后,命令提示符的用户名不是jenkins而变成了-bash-4.2#
网上一查,原因是在安装jenkins时,jenkins只是创建了jenkins用户,并没有为其创建home目录。所以系统就不会在创建用户的时候,自动拷贝/etc/skel目录下的用户环境变量文件到用户家目录,也就导致这些文件不存在,出现-bash-4.2#的问题了
以下命令是在切换到jenkins用户下执行的!(只是用户现在显示的是-bash-4.2)
这个时候呢,参考网上的做法我执行下面步骤:
vim ~/.bash_profile
执行上面的命令,即使没有.bash_profile文件,linux会自动创建。然后再添加这句
export PS1='[\u@\h \W]\$'
我们最后再刷新.bash_profile文件,使其起作用
source ~/.bash_profile
3-2 su jenkins bash-4.2再解决
在上面操作后,我使用su jenkins 还是会有bash-4.2界面,只需把命令变为su - jenkins可以解决,同事给了一个其他的方法
将/etc/skel/目录下 .bashrc和 .bash_profile 文件拷贝到用户的家目录下,然后对复制过去的文件授予该用户、用户组权限。
1 | cp /etc/skel/.bashrc /var/lib/jenkins/ |
然后退出重新登录,就恢复正常了。
/etc/skel/目录作用:
用来存放新用户环境变量文件,添加新用户时,将该目录下文件拷贝到新用户家目录中。
默认情况下该目录下都是隐藏文件(以.点开头的文件);
通过修改、添加、删除该目录下的文件,可为新添加的用户提供统一的、标准的、初始化用户环境。
####3-3 su jenkins 需要输密码
上面我们解决了bash-4.2,下次从root切换jenkins用户的时候,发现需要输入密码,下面解决下这个错误
1 | vi /etc/sudoers |
添加jenkins ALL=(ALL) NOPASSWD: ALL
然后执行/etc/init.d/jenkins restart
3-4 Jenkins密钥配置
su - jenkins
切换到jenkins用户后,使用下面命令生成秘钥
1 | [jenkins@ci ~]$ssh-keygen |
生成后,
- 把公钥添加到代码管理工具gitlab或者其他平台,使得jenkins用户有权限拉取代码
- 把公钥添加到需要发布代码的服务器,使得jenkins所在服务器有权限进行scp 或 ssh操作