我们有多个(大约75个)maven项目,我们已按以下方式单独推送到Gitlab: GROUP1 - 4个项目 GROUP2 - 2个项目 GROUP3 - 10个项目 。 。 GROUP10 - 6个项目
我们现在想要实现像Jenkins
这样的CI工具。但是,在jenkins个性化中创建和管理所有75个项目非常耗时。所以我们有两种方法。
git submodules
:在这种情况下,我们可能会遇到很多复杂问题,因为个别开发人员正在分配多个项目并在他的分叉回购中工作。git
项目:在这种情况下,如果每个开发人员都将分叉主仓库,那么所需的磁盘空间很多,性能也会降低。但是它会比git submodules
更好地管理,因为可以用maven multiple module way
简化构建。所以根据你的意见,我们可以考虑其他方法吗,或者我们可以选择单一的git项目吗?
“Checkout multiple git repos into same Jenkins workspace”中提出的另一种方法是使用Jenkins pipeline,您可以在其中检出多个git存储库。
这意味着:您可以编写该结帐脚本,避免使用子模块和monorepo。
使用GitLab group API,您可以获得给定组中的项目列表,这意味着您可以考虑每个组中的一个作业。 甚至是所有团体的一份工作。
我们做类似的但是对于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/),Google的新版本是jiri(https://github.com/fuchsia-mirror/jiri)。
现在,考虑到您需要为每个组构建所有项目并进行部署,请使用https://wiki.jenkins.io/display/JENKINS/Repo+Plugin作为Jenkins。
因此,您将完成存储在存储库中的10个清单,每个清单包含您需要构建的项目。
示例:您有一个项目(清单,组)A,其中包括子项目1,2,3,4。当您更改子项目3时,它将获取清单A并将重建/重新部署该组中的所有4个项目。
我相信你根据一定的思维过程分组了你的75项目,因此我的建议是有团队明智的詹金斯工作,它也会给予更好的控制。如果意图是有一份工作,那么按顺序调用这些按组分组的Jenkins工作。
我们在单个Bit-bucket存储库中为7个不同的组运行7个不同的Jenkins Jobs。
我还管理了50多个Gitlab Maven项目,并使用Gitlab CI构建每个项目并将工件部署到我们的中央工件库。当下游工件发生更改时,Gitlab CI不支持重新构建Maven工件的使用者。他们有一个“触发”的概念,但是当你有这么多项目时,这根本不适用。
我通常一次推送一个更改并等待上一次提交完全构建并发布到中央存储库,然后再推送下一个提交。
这非常耗时,因此作为替代方案,我们构建了一个内部工具来解决这个问题。我几天前把这个工具公之于众,并且它处于Alpha阶段,但如果你愿意,你可以自由尝试。
它被称为Gitlab Pipes。 documentation has a quick start让你快速入门。