配置Gerrit Trigger插件遇到的问题和解决
背景:在管理插件里安装默认的Gerrit Trigger插件版本,我的默认版本是2.30.2,设置了gerrit地址并测试通过后,却无法触发事件,便开始一顿各种骚操作,在这里记录一把1、通过各种查找,在google里看到有人说是Gerrit Trigger版本的问题,正好说到2.30版本无法触发事件,2.27版本可以,便在jenkins上卸载当前的Gerrit Trigger版本,卸载时间有点..
背景:在管理插件里安装默认的Gerrit Trigger插件版本,我的默认版本是2.30.2,设置了gerrit地址并测试通过后,却无法触发事件,便开始一顿各种骚操作,在这里记录一把
1、通过各种查找,在google里看到有人说是Gerrit Trigger版本的问题,正好说到2.30版本无法触发事件,2.27版本可以,便在jenkins上卸载当前的Gerrit Trigger版本,卸载时间有点儿长
https://issues.jenkins-ci.org/browse/JENKINS-59215
2、卸载完后,也可能没卸载完全,我重启了jenkins,然后在jenkins插件中心下载了2.27版本的Gerrit Trigger,手动安装结果出现各种安装不成功
安装错误提示:error attempt to register a second PermissionGroup when install plugin
解决:在/var/lib/jenkins里执行下面语句,将所有关于gerrit的文件删除,又骚操作了一番,中间还是不行,后来重启了下jenkins,再次通过jenkins的插件中心安装Gerrit trigger,发现安装成功
sudo find . -name "*gerrit*" | xargs sudo rm -rf
3、因为我ubuntu上已经有一个gerrit trigger可以用了,而且也是2.30.2版本的gerrit trigger,所以大概率应该不是Gerrit Trigger版本问题,然后开始想着查看jenkins日志,将jenkins的日志更改权限使可读,命令如下:
sudo chmod 755 -R /var/log/jenkins
查看日志发现,jenkins一直显示无法连接已经测试通过的gerrit服务器,就很纳闷,想着是不是因为/var/lib/jenkins/.ssh下的SSH Key是直接拷贝自自己的用户目录下的.ssh引起的,然后查看自己本地ubuntu的电脑,/var/lib/jenkins/.ssh和~/.ssh下的公钥和私钥相同,却可以触发Gerrit Trigger事件,应该可以一致。
4、最后万般无奈,抓头挠腮中,想着要不重启下jenkins吧,sudo service jenkins stop;sudo service jenkins start,然后查看jenkins位置,发现了contains 35entries,就知道应该成了(大概率是需要重启而之前没有重启的原因,无法完全确定,做完一个操作重启一次应该是很必要的)
4、 现在的Gerrit Trigger插件是可以直接读取gerrit里的工程的,直接选择哪个工程就行,如果没出现下拉菜单,那应该是99% 是Jenkins无法连接gerrit,毕竟已经弄这个好几次了,不过也是推断
5、上述时间可以触发时,并没有下载代码,现在现在代码出现Host key verification failed,这说明ssh key有问题,
我自己的ssh key是复制自自己的用户下的,应该如何创建jenkins自己的ssh key,如下是出错的日志
接下来是如何给jenkins生成正确的ssh key:
参考自:https://stackoverflow.com/questions/15174194/jenkins-host-key-verification-failed 第40
虽然jenkins是docker创建的,依然可以用下面的方法登录jenkins用户,并在jenkins用户下生成ssh key
Jenkins is a service account, it doesn't have a shell by design. It is generally accepted that service accounts. shouldn't be able to log in interactively.
To resolve "Jenkins Host key verification failed", do the following steps. I have used mercurial with jenkins.
1)Execute following commands on terminal
$ sudo su -s /bin/bash jenkins
provide password
2)Generate public private key using the following command:
ssh-keygen
you can see output as ::
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
3)Press Enter --> Do not give any passphrase--> press enter
Key has been generated
4) go to --> cat /var/lib/jenkins/.ssh/id_rsa.pub
5) Copy key from id_rsa.pub
6)Exit from bash
7) ssh@yourrepository
8) vi .ssh/authorized_keys
9) Paste the key
10) exit
11)Manually login to mercurial server
Note: Pls do manually login otherwise jenkins will again give error "host verification failed"
12)once manually done, Now go to Jenkins and give build
Enjoy!!!
Good Luck
6、在jenkins用户下,显示id_rsa权限过高,把权限参照自己用户下的ssh更改就可以了
更多推荐
所有评论(0)