【问题标题】:Hudson dependencies哈德逊依赖
【发布时间】:2011-05-24 17:38:13
【问题描述】:

我已经设置了我的 hudson 工作 A。工作 A 依赖于工作 B 和 C。我已经使用“构建其他项目”来设置它们。这很好用,尽管每个作业都在我的工作区中的单独目录中(默认结构)。但我需要工作 A 工作区(根文件夹)中的工作 B 和 C。

我考虑了两种方法:

  1. 更改作业 A 的工作区并通过“在其他项目上触发参数化构建”将该变量推送到作业,然后使用 ant 构建脚本将它们复制到该位置,因为我找不到更改作业 B 所在文件夹的选项或者 C 应该去
  2. 从构建脚本触发作业 B,然后触发 C 作为作业 A 的一部分。这是通过远程调用完成的(在 stackoverflow 的某处找到),但我的配置中缺少该选项,我找不到任何可以添加它的插件.

对我来说理想的方法是使用 ant 构建脚本并使用 antsvn 或类似的东西从那里触发作业 B 和 C。但我找不到一个可靠的例子。

我想要这种方式的原因很简单 - 作业 B 是 CMS,这对于作业 A 至关重要,而作业 C 具有需要在新版本登陆生产服务器之前执行的 python 脚本(这已经用 py-蚂蚁)。

或者也许有一些更好的方法来管理这样的依赖关系。任何帮助表示赞赏。

我希望这是有道理的。

【问题讨论】:

    标签: ant build-process continuous-integration hudson


    【解决方案1】:

    将工作“B”和“C”视为生产工作“A”需要的“工件”。然后,您只需在构建作业“A”时导入作业“B”和“C”生成的工件。

    您的工作不应共享工作空间。否则,如果在触发作业“B”或“C”时正在构建作业“A”,会发生什么?您将同时进行多个构建。但是,如果您将“A”需要的内容与作业“B”和“C”分开,则可以让作业“A”导入这些依赖项。有两种方法可以做到这一点:

    • 困难但正确方式:您应该创建一个发布存储库,作业可以在其中获取他们需要的工件。如果这听起来 Mavinish 对你来说,那么,它是。但是,我在没有 Maven 项目的情况下使用了 Maven 架构的东西,而且效果很好。您可以使用像 Artifactory 或 Nexus 这样的东西作为您的发布存储库。然后使用wgetcurl 从存储库中获取项目并使用Maven 的deploy:deploy-file 插件将内容发送过来。您将需要 Maven(这是一个 Java 进程)来运行 deploy:deploy-file,但您不需要 Maven 项目,甚至不需要 Java 项目。 deploy:deploy-file 插件甚至不需要 Maven pom.xml 文件。可以把它想象成一个命令行实用程序,用于将内容发送到您的发布存储库。
    • 简单但不正确的方式:Hudson 有一个Copy Artifacts plugin,您可以使用它来执行此操作。问题是它很容易设置,但很难开始跟踪。另外,它使您依赖于一个非常具体的工具。如果您决定离开 Hudson,您可能无法复制此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2011-11-07
      • 2011-06-20
      • 2011-07-02
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多