4、Gerrit+Jenkins搭建CI系统

一,CI系统流程

开发人员将本地Git仓库中的代码更新后,push到Gerrit系统上对应的项目仓库中;该动作会触发Gerrit系统发送邮件通知给Owner,Owner此时需要登录Gerrit Web页面,进行Code Review(代码审核)。如果审核通过,则Owner进行Submit提交动作。此时开发人员push的代码才会Merge(合并)到Gerrit服务器上的对应项目仓库中。如果审核不通过,则开发人员需要修改代码后再次push,直到审核通过为止。而Jenkins被Gerrit系统上某一事件触发(可以为Submit,也可以是push,在Jenkins系统上可以自行设定),就会构建该项目,包括编译、打包、上传到指定的服务上等。

以上就是CI系统工作流程,其中还可以在Jenkins上加入代码单元测试等。只有当测试通过,才会构建项目并发布到服务器上。具体如何做单元测试,还在研究中。

二、CI系统环境

Git+Gerrit+Jenkins(安装Gerrit Trigger插件)

Gerrit服务器:172.16.206.133

Jenkins服务器:172.16.206.129

这两台服务器上都必须安装Git,他们工作都依赖于Git环境

Gerrit和Jenkins的前面的文档里面有,这里不再演示。需要注意的是:

1、安装Gerrit时,在交互安装过程中,系统会问你是否安装Label Verified ,默认是不安装的,如果要搭建CI,这里需要选择安装。如果系统中没有安装这个东西,后期可以再装上,但是网上的几个方法试下来都失败了,所以我只能重新执行Gerrit安装命令:java -jar /path/to/gerrit.war  /path/to/gerrit_dir

重新安装了一遍,重装前,先停掉gerrit服务,交互安装过程中,很多步骤使用老的配置,唯独Label Verified  选择y,表示安装。

2、Jenkins安装Gerrit Trigger插件

Jenkins官网有介绍这个插件的用法:

https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger#GerritTrigger-Gerritaccessrights

三、Gerrit上的配置

1、在Gerrit服务器上为Jenkins服务器创建一个账号,如jenkins。用该账号登录Gerrit Web,将该账号加入系统预设的Non-Interactive Users组。该组默认就已有监听Stream Events权限,Steam Events的原理是:Gerrit收到代码提交后,会以event的形式发给Jenkins,从而触发Jenkins自动构建。

2、为该账号设置SSH Key,即将Jenkins服务器的root账户下的公钥传到Gerrit系统为Jenkins服务器创建的jenkins账号下的SSH Public Keys中,如果不知道如何设置,请参考前面的Gerrit用户配置文档。

3、设置Non-Interactive Users组的权限,这个权限在All-Projects上设置

注意,对于Label Verified权限,很多文章里面只说给Non-Interactive Users组权限,但是测试下来,如果不给Administrators和Project Owners组Verified权限的话,这两个组就没有Submit权限了。因为只有先Verified,才会有Submit。具体这个Verified权限是干嘛的我还没有研究。应该可以不需要这个权限,有些文章里面说是双重保障。

四、Jenkins上的配置

1、安装Gerrit Trigger插件

系统管理==>管理插件==>可选插件,搜索Gerrit Trigger,安装后重启Jenkins

2、配置Gerrit Trigger

系统管理==>Gerrit Trigger==>Add New Server

测试成功就会显示Success,注意hostname这里我填的是Gerrit服务器IP,可以填主机名,但是必须能解析才行。到此为止,配置基本完成了。

五、创建一个Project,演示如何搭建CI环境。

1、Gerrit上创建Project,名为CITEST。Administrators组内成员才能创建项目。

2、登录Jenkins,创建构建一个自由风格的项目

源码管理这里选择Git,Repository URL就是Gerrit Web上的为匿名用户提供的地址,注意把地址中的

git clone命令去掉,Jenkins服务器自身安装了git,集成了git环境。

构建触发器选择Gerrit event

Choose a server:视情况选择Any Server或具体特定server。我这里选择前面配置的Gerrit Server

Trigger on:可以不配置,不配的话保存job后会默认自动选中事件 Patchset Created(最关键的就是这个事件,是提交代码(push而不是Submit)后就触发的事件) 和 Draft Published。我选择的是Change Merged,表示当代码审核通过后,Owner点击Submit,Merge后才出发构建。

Gerrit Project:需填完整 Pattern 和 Branches 内容才有效,例如Type选Plain,值填、Branches的Type选Plain、值填master;或Type选Path,Pattern填**,Branches的Type选Path,Pattern填**匹配任何project和branch,更详细的介绍可点相应问号查看。其他选项是什么意思还没来得及去研究。

构建后用邮件通知,这个需要安装Email相关插件,如果不清楚如何配置,可以查看之前的Jenkins相关文档。

到这里CI环境就搭建好了。

六、跑一个项目

1、git全局配置,配置用户名和邮箱,这里的用户名和邮箱必须要与Gerrit Web上的账户名邮箱一致,

否则在执行git push命令时报错:remote: ERROR:  does not match your user account.

[[email protected] ~]$git config --global user.name "user1"
[[email protected] ~]$git config --global user.email "[email protected]"
[[email protected] ~]$ git config --list
user.name=user1
[email protected]

2、登录普通用户user1,将CITEST项目克隆到本地

[[email protected] ~]$ git clone ssh://[email protected]:29418/CITEST && scp -p -P 29418 [email protected]:hooks/commit-msg CITEST/.git/hooks/
Initialized empty Git repository in /home/user1/CITEST/.git/
remote: Counting objects: 2, done
remote: Finding sources: 100% (2/2)
remote: Total 2 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2/2), done.
commit-msg                                                                        100% 4662     4.6KB/s   00:00    
[[email protected] ~]$ ls
CITEST

3、进入到CITEST文件夹,新建一个citest.sh文件,内容随便填。

[[email protected] CITEST]$ ls
citest.sh

4、push该文件到Gerrit服务器

[[email protected] CITEST]$ git add citest.sh

[[email protected] CITEST]$ git commit -m "创建了文件citest.sh"

[master dfd5972] 创建了文件citest.sh

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 citest.sh

[[email protected] CITEST]$ git push origin master:refs/for/master

Counting objects: 4, done.

Writing objects: 100% (3/3), 311 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: Processing changes: new: 1, refs: 1, done

remote:

remote: New Changes:

remote:   http://172.16.206.133:8081/18 创建了文件citest.sh

remote:

To ssh://[email protected]:29418/CITEST

* [new branch]      master -> refs/for/master

5、用Gerrit管理员账号登录Web UI进行审核

注意Code-Review时,值的范围是-2到+2,-2是审核不通过,+2是审核通过,-1、0、1只能作为参考选项选项,如果要通过代码审核,必须至少有一个+2,而且不能有-2,两个+1不等于+2。

管理员做代码审核后,立马就说到Gerrit管理员邮箱发出来的邮件。

当管理员点击Submit后,立即出发了Jenkins构建。

Jenkins上项目构建完成后,发送邮件通知给相关人员

时间: 2024-08-29 12:02:34

4、Gerrit+Jenkins搭建CI系统的相关文章

转载CI系统搭建二、Gitlab的安装和配置

博客转载于longgeek.com, 地址 http://longgeek.com/2013/12/26/ci-system-structures-ii-gitlab-installation/#i-4. 我在自己电脑上安装了这个gitLab,亲自测试过博客中描述的步骤很全.其中 域名如果没有替换为自己本地的地址,需要带上端口号.其中端口号为8081 上一篇文章 CI 系统搭建:一. 基础环境设置.规划 大概规划了下环境,本文主要用来记录安装 Gitlab 的过程,主要参考官方文档 并没有做太多

ubuntu搭建gerrit+gitweb代码审核系统

一.Gerrit的简介 Gerrit是Google开源的一套基于web的代码review工具,它是基于git的版本管理系统.Google开源Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅.每个修改都将提交到gerrit上,但实际上没有真正意义的成为项目的一部分,直到提交被管理员review和submit.它是标准开源过程的一个简单工具来支持提交补丁程序,然后由项目成员在应用到代码库之前进行review. 二.Gerrit的搭建步骤 账号配置 配置gerrit的管理账号

gitlab+gerrit+jenkins持续集成框架

1.持续集成之gitlab+gerrit+jenkins 1.1. GitLab 1.1.1. 简介 GitLab 是一个使用使用Ruby on Rails搭建的,用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务 1.1.2. 环境搭建 a) Install and configure the necessary dependencies If you install Postfix to send email please select 'Interne

用MSBuild和Jenkins搭建持续集成环境(2)

http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: 挥一挥衣袖,带走满满干货,关注活动大本营,时不时发福利呦!3 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 这是持续集成系列的下半部分,如果你还没看过上半部分的话,请点击这里:用MSBuild和Jenkins搭建持续集成环境(1). 与Jenkins相会

使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人员)通过手机扫描二维码后就能直接安装测试包. 该需求具有一定的普遍性,基本上所有开发APP的团队都可能会用到,因此我将整个需求实现的过程整理后形成此文,并且真正地做到了零基础上手,到手即飞.开箱即用,希望能对大家有所帮助. 首先,先给大家展示下平台建设完成后的整体效果: 该平台主要实现的功能有3点:

基于jenkins搭建一个持续集成服务器

1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部署部及EMT 目标受众: 本文的预期受众是从事持续交付或持续自动测试工作的软件工程师.要想按照本文中的步骤进行操作,您应该理解: 脚本开发. 软件开发流程. 1.3 持续集成概述 1.3.1 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成

Jenkins搭建.NET自动编译发布远程环境

继上一篇文章Jenkins搭建.NET自动编译发布本地环境 发布到本地成功后,接下来配置发布到远程环境. Build配置——发布到本地 根据前面VS中发布项目,生成的CustomProfile2 来配置 1.MSBuild Build File:配置为.\angularDemo\angularDemo.csproj 或者C:\Program Files (x86)\Jenkins\workspace\FirstSite\angularDemo.sln都可以. 2.Build的命令行参数: 配置参

基于 Arduino 和 IoT 云平台搭建物联网系统

在这篇文章中,我们将介绍如何搭建一款监测土壤水分的物联网系统,用于在土壤干燥时发出警报,提醒用户.本项目使用了IoT 云平台来管理警报系统,同时存储来自传感器的数据.众所周知,物联网是当今热门话题之一,它将改变我们的未来及生活方式.如今我们可以自己动手搭建物联网系统,因为市场上已有一些原型板,这使得我们不用花费太多金钱及精力就可以着手物联网项目. 搭建 IoT 系统项目 构建这个项目,我们需要: Arduino MKR1000: 湿度传感器: IoT 云平台 Carriots 的免费账户(点击这

gerrit server搭建

Part 1  Gerrit Prerequisites: 1.Java JDK>1.7 2.Git 3.SSH server 4.DB part 2 Set local gerrit server: $ java -jar ./gerrit-2.11war init -d review_site DefaultSecureStore: #除以下选项外,其他选默认即可 Database server type [h2]: h2 Authentication method [OPENID/?]:d