安装Jenkins
以Jenkins 2.361.1版本为例
docker pull jenkins/jenkins:2.361.1
运行容器,将主机的8080端口映射到容器的8080端口,同时将主机的50000端口映射到容器的50000端口(用于构建代理)
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.361.1
在浏览器中访问 http://127.0.0.1:8080,最后安装推荐的配置即可
安装Gerrit Trigger插件
安装插件
进入Dashboard–>系统管理–>插件管理,搜索Gerrit Trigger并安装
安装后访问 http://127.0.0.1:8080/restart 重启Jenkins
管理员登录Gerrit,进入Projects->List->All-Projects->Projects->Access
在Global Capabilities->Stream Events 点击 Non-Interactive Users
添加用户到 ‘Non-Interactive Users’ 组
进入Jenkins容器生成ssh密钥
ssh-keygen -m PEM -t rsa -b 4096 -C "test@qq.com"
将密钥配置到Gerrit
进入Dashboard–>系统管理–>Gerrit Trigger配置
配置选项介绍
- Name:配置名,可任意填
- Hostname:Gerrit服务器ip
- Frontend URL:Gerrit前端网页地址
- SSH Port:Gerrit ssh端口
- Username:Gerrit用户名
- E-mail:Gerrit邮箱
- SSH Keyfile:Jenkins容器中,ssh密钥路径
注意:
如果Gerrit和Jenkins容器部署在同一台宿主机,Jenkins容器内部可以通过docker ip来访问Gerrit容器
容器ip获取方式:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID或名称>
最后点击测试
可能出现的异常以及解决方案:
1.报错 com.jcraft.jsch.JSchException: Auth fail…
解决方法:
下载jsch插件
https://updates.jenkins-ci.org/download/plugins/
Jenkins 2.361.1是下载0.1.55.61.va_e9ee26616e7这个版本解决的
进入Dashboard–>系统管理–>插件管理安装–>高级,安装下载好的hpi文件,最后点击Deploy并重启Jenkins
参考:https://blog.csdn.net/yudelian/article/details/105146887
2.报错无法识别ssh key的错误
原因:可能是生成key的时候使用ssh-keygen -t rsa命令,默认是以新的格式生成,id_rsa的第一行变成了“BEGIN OPENSSH PRIVATE KEY
” 而不在是“BEGIN RSA PRIVATE KEY
”,此时用来msyql、MongoDB,配置ssh登陆的话,可能会报 “Resource temporarily unavailable. Authentication by key (/Users/youname/.ssh/id_rsa) failed (Error -16). (Error #35)
” 提示资源不可用,这就是id_rsa 格式不对造成的
解决方法:
使用 ssh-keygen -m PEM -t rsa -b 4096
来生成
-m 参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型
参考:https://blog.csdn.net/tanshizhen119/article/details/111998309
3.报错User jenkins has no capability to connect to Gerrit event stream
原因: Jenkins 没有权限监听 Gerrit 的 ‘Stream Events’
解决方案:
管理员登录gerrit,进入Projects->List->All-Projects->Projects->Access
在Global Capabilities->Stream Events 点击 Non-Interactive Users
添加用户到 ‘Non-Interactive Users’ 组
4.安装jsch插件之后,以前配置的job一启动就结束
原因:可能是下载的jsch插件和Jenkins不兼容
解决方法:
下载jsch插件
https://updates.jenkins-ci.org/download/plugins/
Jenkins 2.361.1是下载0.1.55.61.va_e9ee26616e7这个版本解决的
进入Dashboard–>系统管理–>插件管理安装–>高级,安装下载好的hpi文件,最后点击Deploy并重启Jenkins
测试插件
创建一个job,以流水线job为例
勾选触发器,选择自己配置好的Gerrit trigger服务
配置要监听的仓库和分支
编写流水线脚本内容并保存
在Gerrit上传一个patch
Jenkins监听到触发事件并执行