我们刚刚迁移到Git,所以如果我问愚蠢的问题,请原谅我: - )
我们的Git repo包含几个Maven项目,比如这个
ssh://git@git.whatever.com:7999/foo/foo.git
bar1
bar2
我有单独的Jenkins工作来构建bar1和bar2。为了防止对bar1的推送也触发bar2,我在Advanced... Included Regions
下的bar2中配置了Git插件,仅包含bar2/.*
- 反之亦然在bar1作业中:bar1/.*
这很有效,但有一件事让我感到困惑:两个工作中的变化都显示了仓库的所有变化(bar1和bar2),而不仅仅是特定项目的变化。
我该如何配置?
答案 0 :(得分:0)
非常,但是Jenkins总是签出整个存储库(即使进行稀疏签出,Jenkins仍会将整个存储库克隆到本地磁盘),并在磁盘上显示整个存储库的修订版本。构建页面。
这是Jenkins开发人员想要的。 CI的一个核心方面是能够轻松跟踪回购历史记录中的更改。如果每个构建只显示一个子目录的修订版,则跨存储库进行更改跟踪将变得非常困难(对于大型存储库,这几乎是不可能的)。
答案 1 :(得分:-2)
当您引用更改时,我假设您的意思是提交日志,在这种情况下,如果没有自定义git客户端或至少是自定义git commit viewer脚本,则无法执行所需的操作。
理论上,单个存储库只应包含一个项目。否则你使用git“错误”(在非常宽松的意义上使用“错误”这个词,因为git只是一个工具,使用它是不可能的,只是根据你自己的要求使用它)。
执行所需操作的唯一方法是将bar1和bar2文件夹拆分为单独的git repo。如果它们有点像模块,这两个模块都需要在同一个站点上,你可以分别为每个项目git init / clone到bar1和bar2文件夹中,这样你就可以单独控制它们。
另一种选择是将它们分成单独的git repo,然后创建第三个“master”repo,其中只包含另外两个repo作为其各自文件夹中的子模块。然后使用你可能已经做的自定义git钩子,使主拉动并构建正确的文件夹/项目/栏(x)。然而,这是一种纯粹为了不必先设置几个文件夹而做事的hacky方式。
基本上,您不能基于文件夹拆分提交日志,而无需编写自己的自定义提交查看器。您需要将项目分成多个回购。然后,如何将它们重新组合在一起并自动执行任何构建任务,由您自己决定。毫无疑问,我上面提到的方式更多。只是找到满足您需求的最佳解决方案。