最近有需求要push review以后自动跑一些测试,如果通过就自动+2 不通过就-2,目前做法如下(jenkins gerrit均已配置好,Jenkins可以连接gerrit并拉代码):

1. Jenkins上添加项目时,“源码管理” 选择git,并填写正确的“路径”和“分支”(分支留空或者填**会管理所有分支)

2. jenkins项目的“构建触发器” 选择 "Gerrit Trigger"(Jenkins需要安装此插件),“Trigger on” 选择 “patchset created”,"Dynamic Trigger Configuration" 填写正确的“gerrit项目名”和“分支”(分支pattern填**可以监听所有分支);如果希望comment也监听到,则“Trigger on”同时选上“Comment Added Contains Regular Expression”,Value为期望的正则表达式

3.jenkins项目的“构建”选择“execute shell”,command中填写build命令

4.build命令中可以使用Jenkins自带的变量获取一些信息(可用变量在Jenkins上可以查看):

$JOB_NAME Jenkins项目名

$JENKINS_HOME Jenkins根目录

$BUILD_NUMBER  当前构建号

$GERRIT_PROJECT  gerrit项目名

$GERRIT_BRANCH  gerrit分支

$GERRIT_EVENT_TYPE  触发Jenkins进行build的gerrit事件类型(比如patchset-created)

$GERRIT_PATCHSET_REVISION  gerrit的commit id

$GERRIT_REFSPEC 当我们的commit Push到Gerrit等待review时,Gerrit会将此commit保存在一个名为“refs/changes/xx/yy/zz”的一个暂存branch中

5.实例脚本(build.sh):

#!/bin/bash

#拉取发起code review的代码,此时Jenkins无法自动拉取(有人知道如何自动拉取请告知我),以下四种拉取方式都可以:

cd $gitrepodir

git pull ssh://$user@gerrit_addr/$GERRIT_PROJECT $GERRIT_REFSPEC       #pull

#git fetch ssh://$user@gerrit_addr/$GERRIT_PROJECT $GERRIT_REFSPEC && git format-patch -1 --stdout FETCH_HEAD  #Format Patch

#git fetch ssh://$user@gerrit_addr/$GERRIT_PROJECT $GERRIT_REFSPEC && git cherry-pick FETCH_HEAD  #Cherry Pick

#git fetch ssh://$user@gerrit_addr/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD    #checkout,希望拉取多分支的话用这个,pull有问题

#do some test

if [ "x$?" == "x0" ] ; then   #成功则+2

ssh -x -p $gerrit_port $user@$gerrit_addr gerrit review --project $GERRIT_PROJECT --code-review 2 $GERRIT_PATCHSET_REVISION

else

ssh -x -p $gerrit_port $user@$gerrit_addr gerrit review --project $GERRIT_PROJECT --code-review -2 $GERRIT_PATCHSET_REVISION

fi

6.修改~/.ssh/config文件,可以使gerrit命令行简化:

Host gerrit.xxx.com
User $user

Host gerrit
Hostname gerrit.xxx.com
Port $gerrit_port
User $user

修改完之后,命令行可以省略gerrit hostname port及user,比如:

git pull ssh://$user@gerrit_addr/$GERRIT_PROJECT $GERRIT_REFSPEC       #pull

可以简化为:

git pull gerrit:$GERRIT_PROJECT $GERRIT_REFSPEC       #pull

配置实例:

注:

检查两个分支(master和online)是否有不同的commit:

git log --pretty=format:'commit %h %d %s %cr' --abbrev-commit --date=relative origin/master..origin/online

[   如果执行失败,试试:

git log --no-merges --pretty=format:'commit %h %d %s %cr' --abbrev-commit --date=relative master..online //过滤merged

git log --pretty=format:'commit %h %d %s %cr' --abbrev-commit --date=relative master..online      ]

gerrit cmd review

代码检视工具Gerrit的日常使用

Gerrit的使用

jenkins + gerrit 自动code review的更多相关文章

  1. 如何在团队中做好Code Review

    一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...

  2. 关于Gerrit code review 介绍与安装

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  3. 如何搭建开源code review gerrit服务器

    搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.ora ...

  4. 使用RBTool自动提交code review请求

    使用RBTool自动提交code review请求 前言 让我们回想一下手工提交review请求的过程: 首先得用 svn diff > filename.diff 生成diff文件. 然后输入 ...

  5. Git Gerrit Code Review

    Gerrit Code Review | Gerrit Code Reviewhttps://www.gerritcodereview.com/

  6. <转>如何进行code review

    转自: http://pm.readthedocs.org/zh_CN/latest/codereview/howto.html 如何进行code review? code reivew是保障代码质量 ...

  7. 有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)

    作者:覃超链接:http://www.zhihu.com/question/19977889/answer/13539702来源:知乎 平时就经常实践. 整个公司的code review就是使用这个. ...

  8. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  9. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

随机推荐

  1. Tomcat默认界面可导致版本信息泄露+管理后台爆破

    由于配置的Tomcat时,管理页面未进行删除或者权限角色配置,攻击者可以通过暴力猜解进入到管理后台,从而上传获取shell. Tomcat的默认工具manager配置,在很多的生产环境中由于基本用不到 ...

  2. nno Setup入门(一)——最简单的安装脚本

    一个最简单的安装脚本: 1.最简单的安装文件脚本: [setup] AppName=Test AppVerName=TEST DefaultDirName="E:\TEST" Ap ...

  3. 创业成本?亲身经历告诉你做一个app要多少钱

    导语:作为一名苦逼的移动互联网创业者,被外行的朋友们问及最多的问题是“做一个网站需要多少钱?”或者“做一个APP需要多少钱?” 作为一名苦逼的移动互联网创业者,被外行的朋友们问及最多的问题是“做一个网 ...

  4. 编译Boost库

    VS版本: 虽然网络上有,但是还是记录下,找到VS的command prompt,然后切换到boost的根目录: 1.运行 bootstrap.bat 它在当前目录下会生成b2.exe2. 2.运行b ...

  5. adjustResize和adjustPan的比较

    在下面的描述中,编辑框的maxLine都设定为10. 在信息列表界面中,编辑框在RelativeLayout中定义.编辑框上边(above)的列表组件的高度不会缩小为0,导致显示出现一点问题. 当信息 ...

  6. (原)CosFace/AM-Softmax及其mxnet代码

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/8525241.html 论文: CosFace: Large Margin Cosine Loss fo ...

  7. centos7用xshell可以连接, xftp连接失败!(墙裂推荐)

    环境: vultr vps搭建的是centos7  毛病: xshell可以连接, 打开xftp配置好连接却连接失败如下图: 然后开始设置ssh的配置文件vim /etc/ssh/sshd_confi ...

  8. 【JavaScript】浅析ajax的使用

    目录结构: contents structure [+] Ajax简介 Ajax的工作原理 Ajax的使用步骤 使用原生的js代码 使用JQuery代码 JQuery中常用的Ajax函数 $.ajax ...

  9. List元素排序简例

    前言:这种处理方式,在程序中偶尔会用的到,栗子很简单,关键是加强一下记忆,以及以备后用 1:实现Comparable接口的方式 1-1:没有使用泛型,重写compareTo()方法时需要判断类型及转换 ...

  10. 关于switch语句中使用String类型的实现原理

    在Java 7 以后,switch语句可以用作String类型上. 从本质来讲,switch对字符串的支持,其实也是int类型值的匹配.它的实现原理如下: 通过对case后面的String对象调用ha ...