【问题标题】:Reusing the same Maven artifact in multiple Jenkins/Hudson jobs在多个 Jenkins/Hudson 作业中重用相同的 Maven 工件
【发布时间】:2011-08-05 08:26:57
【问题描述】:

我已经使用 Jenkins 和 build-pipeline-plugin 为一个战争项目建立了一个构建管道。它由两个实际作业和一个部署在问答中的最终手动作业组成。

每个作业都配置为运行同一个项目,激活不同的配置文件。第一项工作 - 快速 - 是默认构建,编译源代码并运行单元测试。第二个作业 - 浏览器 - 运行基于 Selenium 的浏览器测试。第三个作业将war文件部署到问答服务器。

每个作业都会产生一个新的战争文件,这让我感到困扰有两个原因:

  1. 即使只执行所需的目标,例如部署到问答时没有测试,构建仍然需要一点时间,因为 WAR 文件中有很多文件。
  2. 我们依靠 Jenkins 的内部版本号来找出工件来自哪个版本。到目前为止,它是来自“快速”工作的数字,但现在是来自“质量保证部署”工作的数字。

如何配置 Jenkins 和/或 Maven 以重用第一个作业中的工件?

我更喜欢不改变整个项目结构的解决方案,因为我们的项目有一个单一的战争模块,拆分它意味着更多的工作来记录更改,并且将所有内容都放在一个地方更简单。

【问题讨论】:

  • 这是一个多模块构建吗?或者这是导致战争的单个模块(意味着包装战争)?特别是 selenium 测试是集成测试,所以最好是有一个带有集成测试的单独模块。
  • @khmarbaise:我们的项目只有一个战争模块
  • 嗯。你如何与 selenium 进行集成测试? (通过集成测试阶段?通过 maven-failsave-plugin?)。我建议为此目的使用不同的模块。如果你有一个带有 war-module 和 it-module 的多模块构建,那么 it-module 可以使用 war-artifact 进行集成测试。也许你可以使用 cargo-plugin 来运行集成测试(部署到容器)..

标签: maven jenkins build-pipeline-plugin


【解决方案1】:

您可以有一个项目来构建您的 .war,然后使用 Copy Artifact Plugin here 将其从该项目复制到依赖项目中。

【讨论】:

    【解决方案2】:

    我真的很想建议将其拆分为两个模块,并让集成测试声明对 war 模块的依赖,该模块还可能包含部署操作。

    这是一种更灵活的方法,而且并不费力。

    【讨论】:

    • 如果集成测试依赖于战争项目,那它不是从反应堆中挑选战争项目,重新构建它吗?
    • 它将从您的本地存储库中获取最后构建的工件(war 文件)。请注意,如果您需要在现有的 war 文件中添加或更改配置文件,您也可以构建一个 war 覆盖项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多