Gerrit+Hudson

171 views
Skip to first unread message

Migratefish

unread,
May 23, 2012, 6:35:06 AM5/23/12
to GotGit
Hi,大家好,我用gerrit+ hudson 来进行代码自动构建。利用gerrit的change-merged hook脚本,在
gerrit里面点击submit 按钮的时候,触发hudson的自动build,但 hudson却没有在gerrit里面加上review和
tag信息,触发显示也是不是由gerrit触发的。这是由什么原因?
在gerrit提交更新时是利用插件gerrit-trigger ,当gerrit push 新分支的时候可以触发hudson 进行
build,并将review和tag写回gerrit,但是在点击gerrit 的submit 按钮触发 change-merged hook脚
本时,触发的hudson build没有将review写回到gerrit,不知道是什么原因?也就是 pre-review 的时候可以触发
hudson 自动build,在gerrit界面上review后点击submit 按钮的时候,相当于是 post-review,文档上说此时会
触发执行 gerrit的change-merge hook,我改写了脚本,可以触发hudsonbuild,但是没有办法将hudson
review的结果写回来。
触发的脚本如下:java -jar /home//hudson-cli.jar -s http://localhost:18080/
build $projectname --username $username --password *** ,想问一下这是什么原因,是否是因
为脚本没有写对?

larry.caiyu

unread,
May 23, 2012, 7:34:50 AM5/23/12
to got...@googlegroups.com
不需要什么hook呀,你用gerrit trigger plugin了吗?(jenkins)

from iPod touch
> --
> 您收到这封邮件是因为您订阅了 Google Groups "GotGit" 邮件组。
> 向邮件组发言很简单,发送邮件到: got...@googlegroups.com 即可。
> 如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com
> 您也可以通过 Web 界面访问和配置本邮件列表:
> http://groups.google.com/group/gotgit?hl=en?hl=en

larry.caiyu

unread,
May 23, 2012, 7:56:06 AM5/23/12
to got...@googlegroups.com
前面问错了,因为你已经用gerrit trigger了。

为什么gerrit submit要触发hudson build呢?还要build什么?

from iPod touch

在 2012-5-23,18:35,Migratefish <migrate...@gmail.com> 写道:

Chunlin Zhang

unread,
May 23, 2012, 8:30:44 AM5/23/12
to got...@googlegroups.com
2012/5/23 larry.caiyu <larry...@gmail.com>:

> 前面问错了,因为你已经用gerrit trigger了。
>
> 为什么gerrit submit要触发hudson build呢?还要build什么?

可能是想为每个提交都build一次,进行持续集成测试吧

larry.caiyu

unread,
May 23, 2012, 8:55:19 AM5/23/12
to got...@googlegroups.com
这个是在gerrit push

git push origin HEAD:refs/for/master

时已经触发build做集成测试了

gerrit submit一般只是负责merge到master分支

from iPod touch

Migratefish

unread,
May 23, 2012, 9:20:44 PM5/23/12
to GotGit
谢谢啦。在 gerrit 上点击 submit的时候,将代码 merge 到master分支上,这个过程中代码会有变化吗?如果代码有变化,是否
就有必要再进行一次build?谢谢哈。

On 5月23日, 下午8时55分, "larry.caiyu" <larry.ca...@gmail.com> wrote:
> 这个是在gerrit push
>
> git push origin HEAD:refs/for/master
>
> 时已经触发build做集成测试了
>
> gerrit submit一般只是负责merge到master分支
>
> from iPod touch
>

> 在 2012-5-23,20:30,Chunlin Zhang <zhangchun...@gmail.com> 写道:
>
>
>
>
>
>
>
> > 2012/5/23 larry.caiyu <larry.ca...@gmail.com>:

Migratefish

unread,
May 23, 2012, 9:23:19 PM5/23/12
to GotGit
嗯,是这样的想法。主要是考虑到submit之后在分支merge的过程中代码可能会有change,所以认为需要再次进行build。

On 5月23日, 下午8时30分, Chunlin Zhang <zhangchun...@gmail.com> wrote:
> 2012/5/23 larry.caiyu <larry.ca...@gmail.com>:

Larry Cai

unread,
May 23, 2012, 11:00:14 PM5/23/12
to got...@googlegroups.com
这个一般不是通过gerrit触发的。

直接在jenkins关注git master branch 或者merged到的那个分支就可以了,使用git plugin的基本功能

那个用gerrit trigger plugin的原因是,code review 不是一个固定的branch,需要监控gerrit的stream event

rgs/larry

2012/5/24 Migratefish <migrate...@gmail.com>
--
您收到这封邮件是因为您订阅了 Google Groups "GotGit" 邮件组。
向邮件组发言很简单,发送邮件到: got...@googlegroups.com 即可。
如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com
您也可以通过 Web 界面访问和配置本邮件列表:
http://groups.google.com/group/gotgit?hl=en?hl=en



--
True software development embraces consistent inconsistency.
blog: http://codeslife.com

Migratefish

unread,
May 23, 2012, 11:45:26 PM5/23/12
to got...@googlegroups.com
Hi, Larry,

   非常谢谢您的回复。您的意思是利用hudson的git plugin ,通过监控分支的变化情况来进行build? 这通过什么方式实现,需要改写git 的 hook 吗? 或者只需要在hudson上设置git plugin的属性就可以实现了?
    谢谢您啦!
  

在 2012年5月24日星期四UTC+8上午11时00分14秒,Larry Cai写道:
这个一般不是通过gerrit触发的。

直接在jenkins关注git master branch 或者merged到的那个分支就可以了,使用git plugin的基本功能

那个用gerrit trigger plugin的原因是,code review 不是一个固定的branch,需要监控gerrit的stream event

rgs/larry

2012/5/24 Migratefish <migrate...@gmail.com>
嗯,是这样的想法。主要是考虑到submit之后在分支merge的过程中代码可能会有change,所以认为需要再次进行build。

On 5月23日, 下午8时30分, Chunlin Zhang <zhangchun...@gmail.com> wrote:
> 2012/5/23 larry.caiyu <larry.ca...@gmail.com>:
>
> > 前面问错了,因为你已经用gerrit trigger了。
>
> > 为什么gerrit submit要触发hudson build呢?还要build什么?
>
> 可能是想为每个提交都build一次,进行持续集成测试吧

--
您收到这封邮件是因为您订阅了 Google Groups "GotGit" 邮件组。
向邮件组发言很简单,发送邮件到: got...@googlegroups.com 即可。
如果不想继续收到相关邮件,发送退订邮件到 gotgit+unsubscribe@googlegroups.com

您也可以通过 Web 界面访问和配置本邮件列表:
http://groups.google.com/group/gotgit?hl=en?hl=en

Larry Cai

unread,
May 24, 2012, 12:39:59 AM5/24/12
to got...@googlegroups.com
不要改什么hook呀,直接让他监控就行了。

如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com

您也可以通过 Web 界面访问和配置本邮件列表:
http://groups.google.com/group/gotgit?hl=en?hl=en

Migratefish

unread,
May 24, 2012, 2:32:55 AM5/24/12
to got...@googlegroups.com


谢谢呵,我之前就设置了,但是在点击 gerrit 的Submit Patch Set...按钮的时候,貌似没有触发hudson进行
build,不知道是不是设置没设置对? 谢谢啦。





在 2012年5月24日星期四UTC+8下午12时39分59秒,Larry Cai写道:

Larry Cai

unread,
May 24, 2012, 2:39:43 AM5/24/12
to got...@googlegroups.com
refspec错了,填 refs/head 之类的缺省值就可以了,这个和gerrit一点关系都没有。

refs/heads/* 跟踪你的master分支就可以了,为啥看 refs/changes?

不要管gerrit,直接push到master分支,看看jenkins是否触发build

rgs/larry


2012/5/24 Migratefish <migrate...@gmail.com>
如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com

您也可以通过 Web 界面访问和配置本邮件列表:
http://groups.google.com/group/gotgit?hl=en?hl=en

Migratefish

unread,
May 24, 2012, 4:15:25 AM5/24/12
to got...@googlegroups.com
Thanks, Larry, 之前安装了gerrit-trigger 插件。 我按照您refspec的设置重新设置了,用git  push 命令行 push  到 master分支时,可以触发Hudson build,并且可以打Tag,但是,如果直接点击  submit Patch ,如果注销了 change-merged hook,则没有触发hudson  build ,如果加上该脚本,可以触发 build,但是没有写回hudson review的结果。 是不是我的脚本写错了:
#!/bin/bash
changeid=$2
changeUrl=$4
projectname=$6
branch=$8
abandoner=${10}
reason=${12}
 java -jar /home/yangshuangquan/_hudson-
cli.jar -s http://localhost:18080/ build $projectname --username $abandoner --password ***


在 2012年5月24日星期四UTC+8下午2时39分43秒,Larry Cai写道:

Larry Cai

unread,
May 24, 2012, 4:43:43 AM5/24/12
to got...@googlegroups.com
这是Jenkins中两个不同的job.

job1 : (push for review)              后用gerrit trigger做code review's build,它会设置 Verify -1/+1
job2 : (submit to merge to master) 用 git plugin 做master build 

我有点晕。

rgs/larry

2012/5/24 Migratefish <migrate...@gmail.com>
如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com

您也可以通过 Web 界面访问和配置本邮件列表:
http://groups.google.com/group/gotgit?hl=en?hl=en

Migratefish

unread,
May 24, 2012, 5:52:37 AM5/24/12
to got...@googlegroups.com
呵呵,现在有些清楚了,谢谢 Larry,谢谢啦。

在 2012年5月24日星期四UTC+8下午4时43分43秒,Larry Cai写道:

杨双全

unread,
May 27, 2012, 12:07:22 PM5/27/12
to got...@googlegroups.com
Hi FYI:

Hi,大家好,想问一个问题:Hi,想让 git push 的时候发送电子邮件,设置了 git 的 config 文件,同时,ln /usr/doc/git-core/contrib/hooks/post-receive-email  post-receive,但是当提交相关的改动时,却没有发送电子邮件,这是神原因呢?下面是git config文件的设置:

[hooks]
        mailinglist = yangshu...@zju.edu.cn, shuangq...@yahoo.com.cn, yangshu...@baidu.com
        envelopesender = migrate...@gmail.com
        emailprefix = [GIT]
        showrev = "git show -C %s; echo"


    同时git的hooks post-receive也设置了可执行属性,但是提交改动时,却没有发送电子邮件,不知道是什么原因啊。。。  谢谢啦。。。
    网上有传言说是 没有配置 SMTP Server,但是网上SMTP服务器配置资料貌似有很多都不统一,而且还有些矛盾。。。
    求助诸位大神,谢谢啦。



如果不想继续收到相关邮件,发送退订邮件到 gotgit+un...@googlegroups.com

Larry Cai

unread,
May 27, 2012, 12:13:16 PM5/27/12
to got...@googlegroups.com
最好提问时写全一点!

1. 谁发送电子邮件, git服务器还是本地?如果是服务器,是什么服务器
2. 在hook中,调试一下,不发邮件,其他正常吗?
3. 如果谈SMTP的,还有环境..

自己先把问题分离开,千万别混在一起问问题,否则大家一滩雾水。


2012/5/28 杨双全 <migrate...@gmail.com>

Jiang Xin

unread,
May 27, 2012, 12:51:37 PM5/27/12
to GotGit
On May 28, 12:07 am, 杨双全 <migratefish...@gmail.com> wrote:
> Hi,大家好,想问一个问题:Hi,想让 git push 的时候发送电子邮件,设置了 git 的 config 文件,同时,ln
> /usr/doc/git-core/contrib/hooks/post-receive-email
> post-receive,但是当提交相关的改动时,却没有发送电子邮件,这是神原因呢?下面是git config文件的设置:
>
> [hooks]
> mailinglist = yangshuangq...@zju.edu.cn,
> shuangquan_y...@yahoo.com.cn, yangshuangq...@baidu.com

hooks.mailinglist 我从来都是配置一个邮件地址(使用邮件列表实现群发)。
当然邮件头的 TO 也可以使用多个地址。

> envelopesender = migratefish...@gmail.com


> emailprefix = [GIT]
> showrev = "git show -C %s; echo"

> 同时git的hooks post-receive也设置了可执行属性,但是提交改动时,却没有发送电子邮件,不知道是什么原因啊。。。 谢谢啦。。。

如果你只是对 symlink 设置了可执行还不够,要对 symlink 的源文件设置。即:

$ sudo chmod a+x /usr/doc/git-core/contrib/hooks/post-receive-
email

> 网上有传言说是 没有配置 SMTP Server,但是网上SMTP服务器配置资料貌似有很多都不统一,而且还有些矛盾。。。

脚本 post-receive-email 是使用 /usr/sbin/sendmail 外发邮件的,参见脚本内实现:

692 send_mail()
693 {
694 if [ -n "$envelopesender" ]; then
695 /usr/sbin/sendmail -t -f "$envelopesender"
696 else
697 /usr/sbin/sendmail -t
698 fi
699 }

邮件是否发送成功,看日志。Debian 上的日志为:

$ sudo tail -f /var/log/exim4/mainlog

杨双全

unread,
May 27, 2012, 10:03:32 PM5/27/12
to got...@googlegroups.com
谢谢Larry啦,是git 服务器发送电子邮件,git服务器是什么服务器----这个问题我没听懂,呵呵。 hook中其他的脚本语句是正常的,分析了一下原因,应该是sendmail 服务没有设置好,我把设置sendmail服务器设置好了试试,看能否发送成功。
谢谢你啦。

杨双全

unread,
May 27, 2012, 10:04:59 PM5/27/12
to got...@googlegroups.com

这么晚还没睡啊,多注意身体些。。呵呵,应该是sendmail服务设置的问题,我把sendmail服务设置了再试试看,谢谢您啦。

luren

unread,
Jul 14, 2012, 6:23:35 AM7/14/12
to got...@googlegroups.com


在 2012年5月23日星期三UTC+8下午6时35分06秒,Migratefish写道:
Reply all
Reply to author
Forward
0 new messages