2016-12-27 29 views
2

我写这篇文章是因为我不清楚如何配置jenkins从gerrit中获取用于构建我的项目的更改。Jenkins和Gerrit与谷歌回购scm整合

网上有很多关于如何连接所有这些代码的教程/示例。 但我没有找到任何解释我想要做的事情。 我认为这是可能的,但...好。我不确定。

我的设置: 我有一个仓库清单,其中包含许多最终应用程序的不同模块。该应用程序是用这种方式编写的,因为我可以更改一个模块,并用另一个类似的代码替代另一个模块来完成不同的工作。例如,他们可以为不同的客户提供个性化服务。

我在jenkins中设置了一个工作来捕获每个子模块中的每个提交。

我将Jenkins连接到Gerrit,我可以用gerrit触发器启动构建。

它的作品,我可以建立我的主人和当前的主人。

我的问题是,当我发送审查补丁詹金斯建立主,而不是我发送的补丁。我想在将它集成到master之前测试最后一个补丁。

模块不能独立构建,因为它们都以某种方式连接,所以我无法单独检查每个零件。

有人能够完成这样的事情吗?

回答

1

当格里特触发启动詹金斯的工作,你可以执行以下你执行构建前的准备工作区:

  1. 使用“回购同步”签所有存储库
  2. 使用GERRIT_PROJECT和GERRIT_REFSPEC格里特触发ENV变量和执行以下命令来执行检出改变仓库的补丁集:

    CD $ GERRIT_PROJECT

    混帐取https://开头USER @服务器/A/$ GERRIT_PROJECT $ GERRIT_REFSPEC & & git的结帐FETCH_HEAD

    OR

    混帐获取SSH:// USER @服务器:29418/$ GERRIT_PROJECT $ GERRIT_REFSPEC & & git的结帐FETCH_HEAD

+0

谢谢。我检查了一下它的一个小修改。修改是为了适应我的环境。 cd $ GERRIT_PROJECT git fetch ssh:// jenkins @ $ GERRIT_HOST:29418/$ GERRIT_PROJECT $ GERRIT_REFSPEC && git checkout FETCH_HEAD – andyinno

+0

很酷。我编辑了答案,在url处添加了SSH选项和缺少的$ GERRIT_PROJECT。 –

0

关键是要设置相应的“信息库”>“高级”>“的Refspec”和“分行打造”>在“科说明符”字段:作业>配置>源代码管理>的Git

如果你想打造的“master”分支,然后设置:如果你想建立补丁集,然后设置

Refspec = +refs/heads/master:refs/remotes/origin/master 

Branch Specifier = refs/heads/master 

Refspec = $GERRIT_REFSPEC:$GERRIT_REFSPEC 

Branch Specifieer = $GERRIT_REFSPEC 

单击“?”在该领域的右侧看到更多的细节。

+0

三月喜celo,谢谢你的回复。我看到你在这里讲的是什么。但是...配置>源代码管理> Git ...我使用谷歌回购CSM不是直接git。因此,如果我的更改是在一个子项目中,让我们说一个repit的子git模块。我需要使用repo同步功能检出所有Google回购站,但包括上传到gerrit的正确修补程序。是不是你的回复与git相关而不是回购? – andyinno

+0

对不起,你是对的。我会尝试发布另一个解决方案。 –