一、准备工作
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 配置
安装 Gerrit Trigger 插件
配置 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。