Jenkins Gerrit Trigger插件配置

安装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并安装

Jenkins Gerrit Trigger插件配置_第1张图片
安装后访问 http://127.0.0.1:8080/restart 重启Jenkins

管理员登录Gerrit,进入Projects->List->All-Projects->Projects->Access

在Global Capabilities->Stream Events 点击 Non-Interactive Users
Jenkins Gerrit Trigger插件配置_第2张图片

添加用户到 ‘Non-Interactive Users’ 组
Jenkins Gerrit Trigger插件配置_第3张图片

进入Jenkins容器生成ssh密钥

ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"

将密钥配置到Gerrit
Jenkins Gerrit Trigger插件配置_第4张图片

进入Dashboard–>系统管理–>Gerrit Trigger配置
Jenkins Gerrit Trigger插件配置_第5张图片
配置选项介绍

  • Name:配置名,可任意填
  • Hostname:Gerrit服务器ip
  • Frontend URL:Gerrit前端网页地址
  • SSH Port:Gerrit ssh端口
  • Username:Gerrit用户名
  • E-mail:Gerrit邮箱
  • SSH Keyfile:Jenkins容器中,ssh密钥路径
    Jenkins Gerrit Trigger插件配置_第6张图片
    Jenkins Gerrit Trigger插件配置_第7张图片

注意:
如果Gerrit和Jenkins容器部署在同一台宿主机,Jenkins容器内部可以通过docker ip来访问Gerrit容器
容器ip获取方式:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID或名称>

最后点击测试
Jenkins Gerrit Trigger插件配置_第8张图片

可能出现的异常以及解决方案:

1.报错 com.jcraft.jsch.JSchException: Auth fail…

解决方法:
下载jsch插件
https://updates.jenkins-ci.org/download/plugins/
Jenkins Gerrit Trigger插件配置_第9张图片

Jenkins 2.361.1是下载0.1.55.61.va_e9ee26616e7这个版本解决的
在这里插入图片描述

进入Dashboard–>系统管理–>插件管理安装–>高级,安装下载好的hpi文件,最后点击Deploy并重启Jenkins
Jenkins Gerrit Trigger插件配置_第10张图片
参考: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
Jenkins Gerrit Trigger插件配置_第11张图片

添加用户到 ‘Non-Interactive Users’ 组
Jenkins Gerrit Trigger插件配置_第12张图片

4.安装jsch插件之后,以前配置的job一启动就结束

原因:可能是下载的jsch插件和Jenkins不兼容

解决方法:
下载jsch插件
https://updates.jenkins-ci.org/download/plugins/
Jenkins Gerrit Trigger插件配置_第13张图片

Jenkins 2.361.1是下载0.1.55.61.va_e9ee26616e7这个版本解决的
在这里插入图片描述

进入Dashboard–>系统管理–>插件管理安装–>高级,安装下载好的hpi文件,最后点击Deploy并重启Jenkins
Jenkins Gerrit Trigger插件配置_第14张图片

测试插件

创建一个job,以流水线job为例

勾选触发器,选择自己配置好的Gerrit trigger服务
Jenkins Gerrit Trigger插件配置_第15张图片
配置要监听的仓库和分支
Jenkins Gerrit Trigger插件配置_第16张图片
编写流水线脚本内容并保存
Jenkins Gerrit Trigger插件配置_第17张图片
在Gerrit上传一个patch
Jenkins Gerrit Trigger插件配置_第18张图片
Jenkins监听到触发事件并执行
在这里插入图片描述

你可能感兴趣的:(jenkins,运维,Gerrit,trigger)