jenkins集成gerrit

为了实现代码托管->代码审核->代码发布的一套自动化流程搭建了一套自动化集成系统平台

1)Gitlab上进行代码托管
在gitlab上创建的项目设置成Private,普通用户对这个项目就只有pull权限,不能直接进行push,Git自带code review功能。
强制Review :在 Gitlab 上创建的项目,指定相关用户只有Reporter权限,这样用户没有权限使用git push功能,只能git review到Gerrit 系统上,Jenkins在监听Gerrit上的项目事件会触发构建任务来测试代码, Jenkins 把测试结果通过 ssh gerrit 给这个项目打上 Verified (信息校验)成功或失败标记,成功通知其它人员 Review(代码审核) 。
Gitlab保护Master 分支:在 Gitlab 上创建的项目可以把 Master 分支保护起来,普通用户可以自己创建分支并提交代码到自己的分支上,没有权限直接提交到Master分支,用户最后提交申请把自己的分支 Merge 到 Master ,管理员收到 Merge 请求后, Review 后选择是否合并。
可以将gitlab和gerrit部署在两台机器上,这样gitlab既可以托管gerrit代码,也可以作为gerrit的备份。
因为gitlab和gerrit做了同步,gerrit上的代码会同步到gitlab上。
这样即使gerrit部署机出现故障,它里面的代码也不会丢失,可以去gitlab上拿。
2)Gerrit审核代码
Gerrit是一款被Android开源项目广泛采用的code review(代码审核)系统。普通用户将gitlab里的项目clone到本地,修改代码后,虽不能直接push到代码中心 ,但是可以通过git review提交到gerrit上进行审核。gerrit相关审核员看到review信息后,判断是否通过,通过即commit提交。然后,gerrit代码会和gitlab完成同步。
grrit的精髓在于不允许直接将本地修改同步到远程仓库。客户机必须先push到远程仓库的refs/for/*分支上,等待审核。
gerrit上也可以对比代码审核提交前后的内容状态。
3)jenkins代码发布
当用户git review后,代码通过jenkins自动测试(verified)、人工review 后,代码只是merge到了Gerrit的项目中,并没有merge到 Gitlab的项目中,所以需要当 Gerrit 项目仓库有变化时自动同步到Gitlab的项目仓库中。Gerrit 自带一个 Replication 功能,同时我们在安装 Gerrit 时候默认安装了这个 Plugin,通过添加replication.config 给 Gerrit即可
架构图如下:
图片出自链接https://www.cnblogs.com/kevingrace/p/5651447.html
在这里插入图片描述
gitlab、jenkins、gerrit都已经安装完成,
以下为jenkins集成gerrit的具体步骤:
**

一、gerrit配置

**
1:为gerrit创建专门的review账户,如下:

[root@weizb-3 ~]# htpasswd /gerritpassword review
New password: 
Re-type new password: 
Adding password for user review
##############################
创建review用户如下:
[root@weizb-3 ~]# useradd review
[root@weizb-3 ~]# su - review
[review@weizb-3 ~]$ ssh-keygen -t rsa -C 1101010010101@163.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/review/.ssh/id_rsa): 
Created directory '/home/review/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/review/.ssh/id_rsa.
Your public key has been saved in /home/review/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cdJpRo6C3p42Hv9lSyOHV562ZBaPdN0oLBqY/Unj7FM 1101010010101@163.com
The key's randomart image is:
+---[RSA 2048]----+
|          .      |
|     .   = .     |
|    . . + B      |
|   . . = * .   .o|
|    . + S + o = +|
|     . . B =E= * |
|      * . B.B O .|
|     o + ..B B . |
|      . ..o.. .  |
+----[SHA256]-----+
[review@weizb-3 ~]$ cat ./.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO0t9gNJ5fB4x/L/lOb6RSVzLAWrkMhrM+R8prI5T05sk4Xw0KriuOGZdajmOybqaKX3oFLk4+GV5NrGhCNJSOAQkSDhWsgkwFYKcqgV5R5+KM+7tMGETsLx0nlc7B/aaro7JLU5BuEd4gXpDaQIHBjXJfOflun7j1iG7TvhXvKNsi1m5HX5vXxeouzakLIZcVCb5APne7p/SzpJBOSGkbTXahIQeIWTBteol2mjqtaTU6P2GmsFjAUuXyb3bOk+gi5zotCWQX0IyK//sTVrVPzt7ICPOd+ce8OFFBl5eRbBgQT+g2vKxTK0AziizcN30Y7TGmVH7fU+ca/lEqy/Vj 13263374898@163.com
#################################################

之后使用该用户登录gerrit,把公钥添加到gerrit的SSH Public Keys里,如下:
(在管理员账户下也要添加该账户秘钥)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后为用户注册邮箱,如下:
在这里插入图片描述
邮箱接收到此邮箱,点击访问如下链接登录即可:
在这里插入图片描述
2:管理员账号登录,将review用户添加到Non-Interactive Users组下,如下:
在这里插入图片描述
在这里插入图片描述
3:让Gerrit支持Jenkins
如果安装Gerrit时没有或者没有选择添加Verified标签功能[‘lable Verified’],需要自己添加。
如下是手动添加Verified标签功能的设置(由于我在安装Gerrit的时候没有选择安装Verified标签功能
[如果在安装gerrit的时候没有选择安装这个标签功能,就需要在此处手动安装下。具体可以登陆gerrit,ProjectS->list->All-Projects->Access->Edit->Add Permission 看里面是否有Verfied的选项]
在这里插入图片描述
需要手动添加,步骤如下:
在这里插入图片描述
克隆代码:

[root@weizb-3 ~]# git clone ssh://admin@172.20.149.180:29418/All-Projects && scp -p -P 29418 admin@172.20.149.180:hooks/commit-msg All-Projects/.git/hooks/
Cloning into 'All-Projects'...
remote: Counting objects: 45, done
remote: Finding sources: 100% (45/45)
Receiving objects: 100% (45/45), 11.15 KiB | 0 bytes/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 45 (delta 3), reused 12 (delta 3)
Note: checking out 'abaa7eede2c6a5f962ac5f81fcf6d7e96287b1a2'.                         
[root@weizb-3 ~]# cd All-Projects/
[root@weizb-3 All-Projects]# ll
total 8
-rw-r--r-- 1 root root  392 Aug  7 17:29 groups
-rw-r--r-- 1 root root 2546 Aug  7 17:29 project.config
[root@weizb-3 All-Projects]# 
[root@weizb-3 All-Projects]# vim project.config
[label "Verified"]                                                                                                                                                         
    function = MaxWithBlock
    value = -2 Fails
    value = -1 Fails
    value =  0 No score
    value = +1 Verified
    value = +2 Approved
    defaultValue = 0
[root@weizb-3 All-Projects]# git commit -a -m 'Updated permissions'
[detached HEAD 4b8f2e9] Updated permissions
 1 file changed, 8 insertions(+), 8 deletions(-)
[root@weizb-3 All-Projects]# git push origin HEAD:refs/meta/config
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 432 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 1 (delta 0)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, done    
To ssh://admin@172.20.149.180:29418/All-Projects
   abaa7ee..4b8f2e9  HEAD -> refs/meta/config
[root@weizb-3 All-Projects]# 

用gerrit管理员账号登录Gerrit
现在提交的Review请求只有Code Rivew审核,我们要求的是需要Jenkins的Verified和Code Review双重保障,在 Projects 的 Access 栏里,针对 Reference: refs/heads/ 项添加 Verified 功能,如下如下:
Projects -> List -> All-Projects
Projects -> Access -> Edit -> 找到 Reference: refs/heads/* 项 -> Add Permission -> Label Verified -> Group Name 里输入 Non-Interactive Users -> 回车 或者 点击Add 按钮 -> 在最下面点击 Save Changes 保存更改。
(注意:提前把jenkins用户添加到Non-Interactive Users组内)
添加权限步骤如下:
在这里插入图片描述
**

二、jenkins配置

**
1:Jenkins系统确认是否安装插件Gerrit Trigger插件和Git plugin插件
在“系统管理”->“插件管理"->”可选插件"->搜索上面两个插件进行安装,如下:
在这里插入图片描述
2:设置Gerrit Trigger
在这里插入图片描述
在这里插入图片描述
Add New Server : gerrit
勾选 Gerrit Server With Default Configurations
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数解释:
Name: 为创建的gerrit trigger的名字,可自定义
HostName: 为gerrit的地址
Frontend URL: 为gerrit的访问地址
SSH Port: gerrit的默认访问地址
Username: 为第一步中创建的gerrit的用户名
E-mail: 用户的注册邮箱
SSH Keyfile: 为Username的私钥(存放秘钥的路径为jenkins的安装路径,需要将用户的私钥和公钥从gerrit节点拷贝至jenkins服务器的安装目录,如果没有.ssh目录需要手动创建。jenkins服务器下没有review用户,需要修改秘钥文件权限为777)

[root@weizb-2 .ssh]# ll
total 8
-rwxrwxrwx 1 root root 1680 Aug  7 17:58 id_rsa
-rwxrwxrwx 1 root root  401 Aug  7 17:58 id_rsa.pub
[root@weizb-2 .ssh]# pwd
/var/jenkins_home/.ssh
[root@weizb-2 .ssh]# 

SSH Keyfile Password: 没有则默认即可
点击SAVE保存,查看gerrit状态,如下为正常
在这里插入图片描述
3:jenkins创建流水线
在这里插入图片描述
Repository URL为gerrit上的url
Credentials需要提前创建好,用于访问gerrit
在这里插入图片描述
选择触发器
在这里插入图片描述
Choose a Server为刚创建好gerrit trigger,(默认为any)
在这里插入图片描述
选择需要测试测project以及分支,如下:
在这里插入图片描述
在构建步骤中选择shell(根据实际选择),填入测试的脚本,点击保存
在这里插入图片描述
查看任务列表,如下:
在这里插入图片描述
**

三、gerrit创建project进行测试

**
1:创建project
在这里插入图片描述
2:登录gerrit服务器
在这里插入图片描述
3:登录jenkins服务器查看触发测试,如下:
在这里插入图片描述
查看控制台输出,如下:
在这里插入图片描述
4:返回gerrit服务器,查看wzb-gerrit project的verfied状态已经变为1
在这里插入图片描述
在这里插入图片描述
管理员进行+2确认,如下:
在这里插入图片描述
代码提交,点击submit
在这里插入图片描述
在这里插入图片描述
之后代码会同步到gitlab(已经提前配置好replication功能),之后触发jenkins进行打包。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值