• 已删除用户
Administrator
发布于 2024-11-18 / 20 阅读
0

Gerrit 保姆教程之Jenkins集成

一、准备工作

1.1 Gerrit中创建jenkins账号

登录ldap admin,创建jenkins账号(我单独建了一个名为cicd的用户组,可根据个人情况自有分配),示例信息如下:

  • 账号:jenkins

  • 邮箱:jenkins@muxin.tech

1.2 Jenkins容器中生成SSH公钥

如Jenkins容器中未生成过公钥,进入Jenkins容器参照以下语句执行,RSA文件路径:/var/jenkins_home/.ssh/id_rsa

$ cd /var/jenkins_home
$ mkdir .ssh
$ cd .ssh
$ ssh-keygen -t rsa -C jenkins@muxin.com
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /var/jenkins_home/.ssh/id_rsa

1.3 Gerrit上添加Jenkins容器的公钥

管理员账号登陆Gerrit,将刚才生成id_rsa.pub公钥内容更新到Gerrit的SSH Public Keys里。

二、Gerrit添加Verify Label功能

2.1 给个人账号分配管理员角色

可在个人电脑上执行,需要使用管理员账号。先将个人账号添加到管理员用户组中(配置完后可移除)。

2.2 下载All-Projects,添加Verify Label标签

下载All-Project仓库

$ git init cfg
$ cd cfg
$ git remote add origin ssh://zhangqin@119.23.146.51:19418/All-Projects
$ git pull origin refs/meta/config

在权限配置文件(project.config)末尾添加Verify Label及相关配置

$ vi project.config
[label "Verified"]
	function = NoBlock
	value = -1 Fails
	value =  0 No score
	value = +1 Verified

提交生效

$ git commit -a -m 'Updated permissions'
$ git push origin HEAD:refs/meta/config
$ cd ..
$ rm -rf cfg

三、Gerrit中配置jenkins账号

3.1 Gerrit中创建jenkins账号

登录ladp admin,创建jenkins账号,示例信息如下:

  • 账号:jenkins

  • 邮箱:jenkins@muxin.tech

3.2 创建用户组并添加jenkins账号

管理员登录Gerrit,创建用户组:Non-Interactive Users

3.3 All-Projects中添加Verified功能

Repositories -> All-Projects -> Access -> EDIT -> Reference: refs/heads/* -> Add Permission -> Label Verified -> Group Name 里输入 Non-Interactive Users -> 回车 -> 最下面点击 SAVE FOR REVIEW -> CODE REVEIW+2 -> SUBMIT。

3.4 All-Projects中添加Stream Events权限

Repositories -> All-Projects -> Access -> EDIT -> Global Capabilities -> Stream Events -> Add group 输入 Non-Interactive Users -> 回车 -> 最下面点击 SAVE FOR REVIEW -> CODE REVEIW+2 -> SUBMIT。

三、Jenkins配置

3.1 邮件通知配置

详见Jenkins入门

3.2 Gerrit Trigger 配置

  1. 安装 Gerrit Trigger 插件

  1. 配置 Gerrit Server

路径:系统管理->Gerrit Trigger->New Server。

填写Gerrit服务信息,先点击“Test Connection”,提示Success后表示连接成功,保存即可。

注意 SSH Keyfile 路径为前面Jenkins生成SSH公钥的路径。

3.3 Jenkins创建任务

四、验证测试

参考上一篇修改代码并提交。

$ cd aicc-demo-gerrit
$ vi README.md
...略...
$ git add README.md
$ git commit -m '第11次提交测试'
$ git push origin HEAD:refs/for/main
枚举对象中: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 8 个线程进行压缩
压缩对象中: 100% (1/1), 完成.
写入对象中: 100% (3/3), 348 字节 | 348.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0(来自  0 个包)
remote: Processing changes: refs: 1, new: 1, done    
remote: 
remote: SUCCESS
remote: 
remote:   http://xx.xx.xx.xx:18018/c/aicc-demo-gerrit/+/1 第11次提交测试 [NEW]
remote: 
To ssh://xx.xx.xx.xx:19418/aicc-demo-gerrit
 * [new reference]   HEAD -> refs/for/main

提交后,自动触发Jenkins编译构建。

管理员审核通过后,自动同步到Gitlab。