我们有多个(约75个)Maven项目,已通过以下方式分别推送到Gitlab: :
GROUP1-4个项目
GROUP2-2个项目
GROUP3-10个项目
。
。
GROUP10-6个项目
我们现在要实现Jenkins
之类的CI工具。但是以詹金斯个性创建和管理所有75个项目非常耗时。这样我们就有了两种方法。
git submodules
:在这种情况下,我们可能会遇到很多麻烦,因为单个开发人员会分叉多个项目并在其分叉的仓库中工作。git
项目:在这种情况下,如果每个开发人员都将派生主仓库,则所需的磁盘空间会很大,并且性能也会降低。但这比git submodules
更好,因为可以使用Maven multiple module way
简化构建。 因此,根据您的说法,我们还有其他方法可以考虑吗?还是可以使用单git项目?
答案 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项目,并使用Gitlab CI来构建每个项目并将该工件部署到我们的中央工件存储库中。当下游工件发生变化时,Gitlab CI不支持重建Maven工件的使用者。他们有“触发”的概念,但是当您有很多项目时,这根本行不通。
我通常一次一次推送更改,然后等待上一次提交完全构建并发布到中央存储库,然后再推送下一个提交。
这非常耗时,因此,我们确实构建了一个内部工具来解决此问题。几天前,我将该工具公开了,它处于Alpha阶段,但是您可以随意尝试。
它称为Gitlab Pipes。 documentation has a quick start使您快速入门。