在网上已有多篇文章介绍 Jenkins + Gerrit Trigger Plugin + Gerrit, 比如http://www.infoq.com/cn/articles/Gerrit-jenkins-hudson
本文介绍的是作者本人的实际项目实践。
首先是两个名词解释,
precommit workflow: 指代的是一个commit在进版本库之前的一个所要进行的workflow。
percommit/postcommit workflow:指代的是一个commit在进版本库之后的一个所要进行的workflow。
在每一个workflow中,都要进行一个编译和测试的过程。但用户可以自定义编译和测试的力度。比如说可以定义为增量编译或完整编译,部分测试或完整测试。
可以选择在precommit中实现选择增量编译和部分测试,而在percommit中实现完整编译,完整测试的前轻后重的方式,好处是开发人员可以快速的得到部分保证的反馈。然后可以转移注意力到其它的开发任务上。缺点也很明显,就是一旦在percommit中发生错误,就得切换注意力回来。对于一个软件开发人员,注意力的不停切换,是一件高成本的事。
也可以选择前重后轻的方式,好处是feedback是完整。缺点就是耗时。
这两个方式,从提高效率的角度分析,多个commit是可以并行进行的。但不可避免的一个问题时两个不同的commit,他们各自的build,test都是ok的,不能保证两个合在一起后,build,test也是ok的。
所以在保证可靠性的前提下,上述两种方式都是不完备的。我们只能选取一种串行的方式,依个执行流程,通过流程的,自动提交进版本库,然后下一个在当前的top基础