【问题标题】:Jenkins - Using the results of one job, in another job詹金斯 - 在另一份工作中使用一份工作的结果
【发布时间】:2011-11-26 11:57:28
【问题描述】:

我有一个运行 makefile 并生成一些文件的工作。然后我想要另一份将这些文件发布到常春藤的工作。

我知道克隆工作区插件,但还有其他选择吗?

【问题讨论】:

  • 您想将发布作为一项单独的工作来进行,这样……什么?即,通过在单独的作业中发布,您试图获得什么价值?

标签: ant jenkins ivy


【解决方案1】:

您运行了一个 Makefile,然后发布到 Ivy

Ivy 是 Ant 的一部分,它是一个利用全球 Maven 存储库结构来获取所需 jarfile 和其他依赖项的模块。

不要误会我的意思,我使用本地远程 Maven 存储库来发布其他项目将依赖的 C/C++ 库(您可以使用 wget 获取项目)。但是,我没有使用 Ivy 来做到这一点。

如果您正在考虑使用 Apache Ivy,那么您可以使用 Maven 进行发布。有一个 Maven Release 插件可以将您的工件复制到您的 Maven 存储库,但您可能想要做的是部署。

在我的 Jenkins 构建中,我只是让 Jenkins 从命令行执行 maven 的 deploy-file 步骤。这允许我将文件部署到我的 Maven Ivy 存储库中,而无需先创建 pom.xml 文件。 (好吧,无论如何你都想创建一个 pom.xml,因为你想包含一个依赖层次结构。)

我通常在与创建 jar/war/ear 文件的工作相同的工作中执行此操作。但是,如果您想要一个单独的工作来执行此操作,您可以使用Copy Artifact Plugin。此插件允许 Job B 从 Job A 复制任何或所有已发布的工件。如果您只想要构建的 jar 文件,这比克隆整个工作区要快得多且简单得多。

【讨论】:

  • 其实很简单。将一些 rst 文档解析为 HTML 以用于快速 doco 服务器。
【解决方案2】:

我个人的偏好是在不依赖 Jenkins 内部文件结构的情况下做这些事情,尽管有时这意味着了解您的其他构建工具(例如 Maven,或者在您的情况下为 Ivy)的内部结构。

如果我是你,我会在一项工作中完成所有工作 - 即构建,然后让“Ivy Publisher”(如果存在这样的插件)将工件发布到远程 Ivy 存储库。

如果这是不可能的,让第一个工作将工件“安装”到本地存储库/缓存中(我不确定它在 Ivy 上的名称),然后让第二个工作从那里获取它。

我不确定这一定是最好的方法,但它对我来说效果很好。

编辑我应该提一下 - 这在分布式环境中效果不佳,除非像我一样,您的分布式环境由多个节点组成,这些节点可以访问公共 NAS 文件系统。

编辑 2 我也将Copy To Slave Plugin 用于没有通用文件系统的分布式环境。

【讨论】:

    【解决方案3】:

    您有多种选择,一种是克隆工作区,它运行良好,但所需的磁盘空间增加了一倍(这在我们的例子中非常相关)。大多数其他方式是克隆工作区的变体。

    我所做的是使用自定义工作区位置。 IE。我的第一份工作构建了一切,然后触发了第二份工作。在第二个作业中,我将自定义工作区设置为第一个作业的工作区,因此该作业对同一文件执行其他任务。您必须检查该选项以防止在第二个作业运行时构建第一个作业,因为两者都在同一个文件上工作,这是一条很好的路线。

    但是,如果您需要并且小心,这可能是一个可行的解决方案。

    【讨论】:

      【解决方案4】:

      使用Copy Artifact plugin 将工件从作业 A(编译)复制到作业 B(发布)。

      【讨论】:

        【解决方案5】:

        我会使用处理两个子任务的主构建文件。 Ant 有一组执行任务,您可以使用它们来运行另一个 Ant 构建文件、执行一些命令行命令等。看这里:

        http://ant.apache.org/manual/tasksoverview.html

        也许您可以使用 Exec 命令启动 make 并通过使用 Ant 命令运行 Ant 构建来处理 ivy 发布。

        【讨论】:

          猜你喜欢
          • 2015-10-20
          • 1970-01-01
          • 1970-01-01
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多