2011-11-18 75 views
8

我正在尝试实施类似于ProGit中描述的修改后的Integration-Manager工作流程。使用Jenkins/Hudson的Integration-Manager Git工作流程

Diagram of the Integration-Manager workflow

,而不是一个integration manager进行合并,我希望开发者发布他们的代码之前在本地合并,我想一个Quality Gateway强制执行我们的持续集成标准,如代码覆盖率和100的最低水平%测试通过,然后允许代码进入有福的存储库以供其他开发人员检出。这个想法是,幸运存储库中的代码总是符合我们定义并始终构建的最低标准。

我想让詹金斯执行质量网关的角色,只有在构建成功时才将代码推送到有福的存储库。

到目前为止,我已经建立了系统,以便有以下公共回购:有福的存储库,Jenkins构建服务器上的存储库,它是通过gitosis访问的裸回购,以及开发人员自己的存储库。

我有开发人员从祝福回购和推动整合回购。现在我正试图让詹金斯将整合回购的成功构建推向有福的回购。

到目前为止,我看到的唯一选项与我试图实现的类似,是Jenkins项目配置中Post Work Actions的Git Publisher设置中的“Push Only If Build Succeeds”选项。但是,该选项不允许您指定推送url或远程推送到。

据我了解,Git Publisher设置会将Jenkins的克隆推入其工作空间,重新回到Jenkins的公共回购库中,但我想推送到不同的远程存储库。

有没有人有任何建议如何让詹金斯推到祝福的回购?

编辑0: 我试图把后工序执行push命令我的祝福库。这似乎工作,因为没有错误。但是没有更改被推和日志显示混帐认为一切是最新的:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO]  ------------------------------------------------------------------------ 
[INFO] Total time: 1 minute 7 seconds 
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 
[INFO] Final Memory: 19M/45M 
[INFO] ------------------------------------------------------------------------ 
channel stopped 
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push [email protected]:my-project.git --all 
Everything up-to-date 

我不知道为什么混帐认为没有什么推的,因为肯定是有。

回答

1

您是否考虑过在工作流程中添加Gerrit。将更改推送到Gerrit,然后您的CI运行构建并报告测试。它可以被设置,以便在它被合并到你喜欢的回购之前需要其他批准(如授权代码评论)。 EGit在其开发中使用它,http://egit.eclipse.org/r/。此工作流程还有其他讨论,如alblue的博客。

+0

看起来很有意思,但它补充说我们目前的流程没有的唯一的事情是一个正式的审查过程。我们的项目已经过时了,所以如果他们通过构建,我们知道他们会通过我们定义的测试和其他要求。它似乎没有足够的(对我们的过程)来证明让另一个工具使我们的环境复杂化。尽管我们需要改变,但我会记住,谢谢! – chrisbunney

+0

我知道限制复杂性的必要性:-)我只是说它会添加评论,并在每次更改之前报告CI /测试通过结果,然后再承诺您的祝福回购。 –

+0

是的,当我们到达那个阶段时它会很好:) – chrisbunney

2

如果詹金斯在成功构建之后推送Jenkins,那么在集成存储库中使用Jenkins“Push Only If Build Succeeds”操作(带有post-commit或post-receive钩子)来推送到受保护的存储库?

+0

这看起来像是要走的路,谢谢 – chrisbunney

+0

+1,不过值得注意的是,这只会推动引发变化的分支。如果您已将标签或更改推送到多个分支,它们将不会被推送(我们目前每个分支使用1个项目,而不是每个分支设置1个项目,因为我们创建了许多我们想要的分支推动持续整合) – chrisbunney