背景:在管理插件里安装默认的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更改就可以了

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐