当前位置: 首页 > 面试题库 >

Jenkins:如何从git仓库构建多个顶级项目?

施恩
2023-03-14
问题内容

我有一个Git存储库,其中包含一堆顶级Maven项目(每个项目都位于带有pom.xml的自己的子目录中)。这里的顶层意味着这些项目位于存储库根目录下的子目录中。所有这些项目应保留在相同的Git存储库中。

repo
+--- projectA
    +--- pom.xml

+--- projectB
    +--- pom.xml

它们可以/应该由独立的詹金斯工作建立。因此,我们为projectA有一份工作,为projectB有一份工作。

以前使用Subversion,我能够为每个项目设置一个Jenkins作业,该作业仅检出项目源并从pom.xml运行Maven构建。

对于Git模型(可能与所有DVCS相同),这种情况会发生变化,我不确定什么是最佳实践。我看到了一些选择,但我真的不喜欢这些选择:

  1. 每个Jenkins作业都配置为克隆/拉动完整的Git存储库,并引用Maven构建的/pom.xml。因此,该工作具有所有代码,但仅构建其中一部分。
  2. Git提供了Submodules(http://book.git-scm.com/5_submodules.html),似乎很难处理(并且很容易损坏)
  3. 创建一个Maven父项目(包含所有项目的聚合器)项目,以触发每个项目的构建(具有一个詹金斯工作)。此pom.xml包含projectA和projectB的元素

您是否看到任何其他有用的方法(非常典型的设置)。你有什么经验?有最佳做法吗?


问题答案:

我认为您正在为此而努力。如果这些项目作为版本单位发布,则实际上应该创建一个父POM。但是您可能应该只有一个CI工作。如果希望该构建快速进行,则可以将其配置为仅构建自上次构建以来已更改的模块(“构建”部分中的高级按钮-“增量构建-
仅构建已更改的模块”)。您还可以告诉Jenkins“在必要时执行并发构建”以一次测试多个提交。

但是我很好奇为什么您认为您想要多个CI工作?如果您认为这两个项目具有不同的生命周期,则可能应该分别对它们进行版本控制,因此应该在单独的git存储库中。不要保存git存储库,它们很便宜。实际上,几乎在每种情况下,交易者都越多。

通常,您希望给定的pom生成单个工件。聚集器poms可用于将较大工件的一部分分解为子模块,但前提是这些子模块不是自己释放的。



 类似资料:
  • 问题内容: 我想使用两个Git存储库构建一个项目。其中一个包含源代码,而另一个包含构建和部署脚本。 我的问题是我需要一个用于构建和部署项目不同部分(大型项目,多个存储库,相同的构建和部署脚本)的存储库,但是Jenkins似乎无法处理此问题(或者我不知道)不知道/找不到方法)。 问题答案: 更新 现在不建议使用多个SCM插件,因此用户应该迁移到Pipeline插件。 旧答案 是的,詹金斯可以处理。只

  • 本章节我们将为大家介绍如何创建一个 Git 仓库。 你可以使用一个已经存在的目录作为Git仓库。 git init Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的

  • 我正在尝试配置Jenkins,以便从git的标记创建构建。所以我希望开发者创建一个标签(在任何分支中),Jenkins将负责新的构建。 我遵循了这个教程,但我没有做到,有人能帮我吗? http://erics-notes.blogspot.nl/2013/05/jenkins-build-latest-git-tag.html

  • 我有一个多项目分级建筑在当地工作。有一个父级文件build.gradle设置。gradle文件将项目分配给它们各自的分级生成文件: 错误仍然相同,build.gradle文件(父文件)无法识别依赖项任务查看调试语句,找到并识别子生成分级文件:使用生成文件'/var/../LoadRemote/RemoteLoad_build.gradle'计算项目':LoadRemote'。对加载构建文件显示相同

  • 在前面我们介绍了Git支持多种数据传输协议,有 git:// 协议、http(s):// 和 user@server:/path.git表示的 SSH 传输协议。我们可以通过这三种协议,对项目/仓库进行克隆操作。 下面,我们将以仓库 git@git.oschina.net:zxzllyj/sample-project.git 为例,对项目/仓库进行克隆。 通过HTTPS协议克隆 git clone

  • 有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。 在工作目录中初始化新仓库 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行: $ git init 初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。不过目前,仅仅