1

我们有一个内部工具,可以将多个存储库中的多个组件管理到一个项目中;本质上类似于 Google 的 repo 工具 ( https://code.google.com/p/git-repo/ ) 或 gitslave ( http://gitslave.sourceforge.net/ )。我们的项目不仅仅是一个单一的 git 存储库。

依赖项在“元”存储库中定义,该存储库始终先检出,然后再检出依赖项。

我正在调查 Jenkins,并试图找到一种方法让它使用我们的工具来检查具有多个存储库的工作区。

以前有人做过这种事情吗?我对 Jenkins 文档有点茫然,不确定从哪里开始。

4

2 回答 2

1

由于您想使用您的工具,您可以在您的第一个构建步骤中运行它(或作为 maven 构建的预构建步骤)。正如@Electrawn 已经提到的,您将丢失您的修订号。但是,也有解决方法。但是,如果您可以使用修订号编写属性文件,则可以使用EnvInject 插件加载属性文件。从那时起,您将可以访问构建作业中的属性。您还失去了 Jenkins 自动检查更改的能力。如果您的自制工具支持此功能,您可以创建第二个作业,该作业仅检查更改并在发现更改时触发构建作业。

这只是一种可能的解决方法。只要有一点点创造力,你就可以想出不同的解决方案。

最好的方法当然是编写自己的 Jenkins 插件。由于您已经完成了大部分工作(编写自己的工具),您只需要实现 Jenkins API。...或者更快的方法,更新当前的 git 插件以适应您的项目结构。

于 2013-10-14T16:39:46.980 回答
0

Subversion(和 jenkins subversion 插件)通过 SVN:Externals 轻松实现这一点。抛开个人意见...

由于 git 没有内置简单的外部功能,因此您最好添加多个 shell 调用的预构建步骤来检查您想要的存储库的各个部分。您将无法像其他 SCM 插件一样获得自动修订号。

SCM 插件检查主项目

构建任务一(假设是linux):

git clone REPO %{WORKSPACE}/source/project2

构建任务二:

git clone REPO %{WORKSPACE}/source/project3

然后,您可以根据第一个评论者研究模块化您的工作并将工件推入链中,但让您首先在一个庞大的工作中构建您的项目。

于 2013-10-12T19:16:02.307 回答