2012-02-21 44 views
1

我们的项目托管在github上,我们已经建立了一个Jenkins服务器,问题是我们在项目中有很多模块,并且每个模块都有它自己的工作,使用perforce它可以更新指定模块中的源代码,因此只有作业属于那些已被修改的模块才会被触发,但git会将整个项目视为单个存储库,并且它不会告诉我们哪些模块已被因此Jenkinks不能做同样的事情。如何通过github存储库触发jenkins中的单个作业

我调查了git子模块和git子树,似乎他们都有点复杂,有没有更简单的方法来存档这个?

回答

1

Git会告诉你这个信息与git log(参见--exit-code参数,暗示--quiet)。我不知道Jenkins Git插件是否会给你这种技巧,但你可以轻松地用一个简单的shell脚本来完成。

要检查目录dir修订AB之间变化,

if git log --quiet A..B -- dir ; then 
    # there are no changes in "dir" between rev A and B 
else 
    # there are changes 
fi 
1

现在,您可以使用Jenkins的常规Git插件:您可以设置应该监视哪些目录并开始执行作业,以及忽略哪个目录。 如果您在存储库中的每个项目/模块都有构建作业,并且您只想在相关目录已更改时调用构建(例如,模块的目录以及任何公共/共享模块目录)。

为了把这个观点带回家,我们没有共享模块的构建作业,但是我们确实有每个模块的作业。因此,我们将插件设置为仅查看模块的目录和公用目录:通过这种方式,项目将在目录的每个相关提交中重建,并提交到公用目录。

相关问题