如何在gitlab中管理多个Maven项目

时间:2018-07-19 06:31:52

标签: git maven jenkins gitlab git-submodules

我们有多个(约75个)Maven项目,已通过以下方式分别推送到Gitlab:
GROUP1-4个项目
GROUP2-2个项目
GROUP3-10个项目


GROUP10-6个项目


我们现在要实现Jenkins之类的CI工具。但是以詹金斯个性创建和管理所有75个项目非常耗时。这样我们就有了两种方法。

  1. git submodules在这种情况下,我们可能会遇到很多麻烦,因为单个开发人员会分叉多个项目并在其分叉的仓库中工作。
  2. 单个git项目:在这种情况下,如果每个开发人员都将派生主仓库,则所需的磁盘空间会很大,并且性能也会降低。但这比git submodules更好,因为可以使用Maven multiple module way简化构建。

因此,根据您的说法,我们还有其他方法可以考虑吗?还是可以使用单git项目

4 个答案:

答案 0 :(得分:0)

Checkout multiple git repos into same Jenkins workspace”中建议的另一种方法是使用Jenkins pipeline,在其中您可以签出多个git存储库。

这意味着:您可以编写脚本来结帐,避免同时使用子模块和monorepo。

使用GitLab group API,可以获得给定组中的项目列表,这意味着您可以考虑每个组中的一项工作。
甚至所有小组都只有一份工作。

答案 1 :(得分:0)

我们为C ++项目做类似的事情。假设您有一个xml文件,其中列出了所有需要的存储库及其版本(即分支或标记),如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <projects>
    <project name="foo-project"
             remote="https://github.com/my-org/foo"
             path="foo"/>
    <project name="bar"
             remote="https://bitbucket.com/other-org/bar"
             path="bar"/>
  </projects>
</manifest>

现在,您需要一个工具来操纵这些文件。旧版本是git-repo(https://gerrit.googlesource.com/git-repo/),谷歌新版本是jiri(https://github.com/fuchsia-mirror/jiri)。

现在,考虑到您需要为每个组构建所有项目并进行部署,请对詹金斯使用https://wiki.jenkins.io/display/JENKINS/Repo+Plugin

因此,您将在存储库中存储10个清单,每个清单包含您需要构建的项目。

示例:您有一个项目(清单,组)A,其中包括子项目1,2,3,4。更改子项目3时,它将获取清单A,并将重建/重新部署该组中的所有4个项目。

答案 2 :(得分:0)

我相信您是根据某些思考过程将75个项目分成小组进行分解的,因此,我的建议是拥有按小组工作的Jenkins职位,这也将提供更好的控制。 如果打算要一份工作,请依次调用这些按组的詹金斯工作。

我们在一个Bit-bucket存储库中为7个不同的组运行7个不同的Jenkins Jobs。

答案 3 :(得分:0)

我还管理着50多个Gitlab Maven项目,并使用Gi​​tlab CI来构建每个项目并将该工件部署到我们的中央工件存储库中。当下游工件发生变化时,Gitlab CI不支持重建Maven工件的使用者。他们有“触发”的概念,但是当您有很多项目时,这根本行不通。

我通常一次一次推送更改,然后等待上一次提交完全构建并发布到中央存储库,然后再推送下一个提交。

这非常耗时,因此,我们确实构建了一个内部工具来解决此问题。几天前,我将该工具公开了,它处于Alpha阶段,但是您可以随意尝试。

它称为Gitlab Pipesdocumentation has a quick start使您快速入门。